只要Gradle已经存在,我就会认为这有很好的记录,但我很挣扎。对不起,如果这对其他人来说很明显。
我有一个带有maven的多项目构建设置,我正在设置gradle进行比较。
项目A生成一个jar文件,项目B生成一个war文件(并依赖于来自A的jar)。项目C我想创建一个程序集,即一个zip文件。 zip文件应该包含项目C中目录的内容,来自Project B的war文件,以及从Archiva下载的tomcat程序集的解压缩内容。
我遇到的问题是,当gradle评估build.gradle文件时,它会失败,因为它无法找到war文件 - 这并不奇怪,war文件尚未构建。
那么,我如何表达对war文件的依赖性,使其在评估过程中不会导致失败?
apply plugin: 'distribution'
description = """E2am Assembly"""
project(':assembly') {
dependencies {
compile project(':webapps/e2am')
}
}
dependencies {
compile group: 'com.e2open.platform', name: 'e2am', version:'9.0-SNAPSHOT', ext:'war'
compile group: 'com.e2open.platform.third-party.tomcat', name: 'tomcat-assembly',version:'7.0.42-1002', classifier:'bin', ext:'zip'
}
task explodeTomcat(type: Copy, dependsOn: ':webapps/e2am:install'){
configurations.compile.filter { it.toString().endsWith(".zip") }.each{
from zipTree(it)
}
into 'TomcatUnpacked'
configurations.compile.filter { it.toString().endsWith(".war") }.each{
from it
}
into 'war'
}
distributions {
main {
baseName = 'e2am-assembly'
contents {
from { 'tomcat' }
from { 'TomcatUnpacked' }
from { 'war' }
}
}
}
distZip.dependsOn explodeTomcat
install.dependsOn distZip
此外,顶级项目将'java'和'maven'插件应用于所有子项目。
错误是:
FAILURE: Build failed with an exception.
* Where:
Build file '/kwork/wkcopy/e2amA/assembly/build.gradle' line: 25
* What went wrong:
A problem occurred evaluating project ':assembly'.
> Could not resolve all dependencies for configuration ':assembly:compile'.
> Could not find com.e2open.platform:e2am:9.0-SNAPSHOT.
Required by:
com.e2open.platform:assembly:9.0-SNAPSHOT
有人能指出我的文档或讨论让我走得更远吗?谢谢!
答案 0 :(得分:2)
您应该在Gradle文档中查看Multi-project Builds - Project lib dependencies。
这样的事情应该有效:
dependencies{
compile project(:webapps/e2am)
compile group: 'com.e2open.platform.third-party.tomcat', name: 'tomcat-assembly',version:'7.0.42-1002', classifier:'bin', ext:'zip'
}
还有an example看起来很像你想做的事 - 可能值得一看:)