gpt4 book ai didi

java - 在 gradle 中定义不打包的编译依赖项

转载 作者:行者123 更新时间:2023-11-30 07:18:43 24 4
gpt4 key购买 nike

我正在尝试配置 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com