我正在尝试配置 gradle 以使用 lombok
编译我的项目,但我不希望这些类出现在我的 jar 中。另一方面,我需要 jar 中的 mysql-connector 依赖包,但编译不需要它。这是我的 build.gradle 文件:
group 'de.albritter'
version '1.0-SNAPSHOT'
apply plugin: 'java'
jar {
manifest {
attributes 'Main-Class': 'de.albritter.main.Main'
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
sourceCompatibility = 1.7
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile group: 'org.projectlombok', name: 'lombok', version: '1.16.8'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.39'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'mysql', name: 'mysql-connector-java', version: '5.1.39'
classpath group: 'org.projectlombok', name: 'lombok', version: '1.16.8'
}
}
我已经看到一些使用 compileOnly
的解决方案,但如果我尝试使用它,我只会收到一个错误,表明此方法未知。
我的gradle版本是2.9
如何告诉 gradle 我的 jar 中不需要 lombok
?
最佳答案
您所要求的内容被称为 compileOnly
或在 Maven 世界中,provided
依赖项。 compileOnly
配置为 introduced in gradle in version 2.12 。我强烈建议迁移到最新版本的 gradle(撰写本文时为 2.14)。
如果您需要坚持使用旧版本,可以通过查找“gradle提供的依赖项”找到一些解决方法。一种方法是声明您自己的配置,让我们调用它提供的并将其依赖项添加到编译时类路径。所以在你的 build.gradle 中:
configurations{
provided
}
sourceSets {
main.compileClasspath += configurations.provided
test.compileClasspath += configurations.provided
test.runtimeClasspath += configurations.provided
}
dependencies {
...
provided 'group:module:version'
...
}
或者您也可以使用 prodeps插件可以为您完成大部分工作。
关于java - 在 gradle 中定义不打包的编译依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37967185/