我试图配置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我的罐子里不需要lombok
?
答案 0 :(得分:1)
您要求的内容被称为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插件,它可以为您完成大部分工作。