Gradle项目依赖项不引用快照jar
我正在尝试在多项目Gradle构建中创建一个fat jar文件,如下所示:Gradle项目依赖项不引用快照jar,jar,gradle,dependencies,Jar,Gradle,Dependencies,我正在尝试在多项目Gradle构建中创建一个fat jar文件,如下所示: root +-- project1 +-- project2 project1提供了基本功能,project2随后使用这些功能创建一个可执行jar。可执行JAR需要包含依赖项中的所有代码,以便可以独立运行 对于外部依赖项,这很好。在project2中,我创建了一个新配置: apply plugin: 'maven' apply plugin: 'java' configurations { // conf
root
+-- project1
+-- project2
project1提供了基本功能,project2随后使用这些功能创建一个可执行jar。可执行JAR需要包含依赖项中的所有代码,以便可以独立运行
对于外部依赖项,这很好。在project2中,我创建了一个新配置:
apply plugin: 'maven'
apply plugin: 'java'
configurations {
// configuration for JARs that need to be included in the final packaging
includeInJar
}
然后添加依赖项:
dependencies {
includeInJar 'com.fasterxml.jackson.core:jackson-databind:2.2.3'
...
configurations.compile.extendsFrom(configurations.includeInJar)
}
包装如下所示:
jar {
manifest {
attributes "Main-Class": "com.acme.project1.MyTest"
}
// import all dependencies into the Jar so that it can be run easily
from {
configurations.includeInJar.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
jar是使用外部依赖项中的所有文件正确构建的。问题来自项目对project1的依赖性:
includeInJar project(':project1')
当出现这种情况时,当它试图组装JAR时,会出现一个错误,即无法在project1build/libs
目录中找到JAR(例如project1-0.4.0.JAR
)。消息是正确的,因为project1构建了一个快照jar(例如,project1-0.4.0-SNAPSHOT.jar
)
问题是,当项目构建快照jar时,为什么配置引用非快照jar?我可以更改什么以便找到正确的jar?作为注释:
在我看来,fatjar不是一个伟大的模式。也许能满足你的需要?我找到了我自己问题的答案 问题是,我们在项目级别有一些额外的脚本,这显然是在配置阶段结束时对版本进行了更改 组装fat jar配置时,使用“普通”版本。然后在构建JAR之前将其更改为-SNAPSHOT版本
将“代码>从{…}/<代码>代码导入到构建阶段,将其封装在<代码> DoFrSt{{}} /代码>中足以解决问题,尽管真正的修复显然是为了避免首先在中间改变版本。
FATJAR是目前我们的合理选择,但谢谢您的提示。