有人可以给我一个简单的build.gradle示例,说明如何指定运行时部署(war)中未包含的仅编译时类。

自从“运行时”继承自“编译”以来,Gradle似乎已经绕错了方向。我无法想象这样一种情况,我会在运行时想要类,而在编译时却不想。但是,在许多情况下,我不希望在运行时需要类来在编译时生成代码!

我翻阅了gra肿的gradle文档,但找不到任何明确的说明或示例。我怀疑可以通过定义“配置”并将其设置为CompileJava插件的类路径来实现-但是文档不足以说明如何实现此目的。

最佳答案

关于这个话题已经有很多讨论,主要是here,但是结论不明确。

您的方向正确:目前最好的解决方案是声明自己的provided配置,该配置将包括仅编译依赖项并添加到您的编译类路径中:

configurations{
  provided
}

dependencies{
  //Add libraries like lombok, findbugs etc
  provided '...'
}

//Include provided for compilation
sourceSets.main.compileClasspath += [configurations.provided]

// optional: if using 'idea' plugin
idea {
  module{
    scopes.PROVIDED.plus += [configurations.provided]
  }
}

// optional: if using 'eclipse' plugin
eclipse {
  classpath {
    plusConfigurations += [configurations.provided]
  }
}

通常,这很好。

09-06 12:53