我们有一个gradle项目执行distTar来创建tar分发文件。 每个依赖项目都可以很好地将所有依赖项和项目jar文件放入分发libs文件夹中。
我们需要添加一个构建war文件的项目。通过将项目添加为依赖项,它添加了所有战争依赖项......我们只需要项目战争任务中的war文件。 战争项目战争任务也没有被执行。 相反,jar任务正在从分发项目的distTar执行。
我们如何执行项目战争任务并将战争文件添加到" gui" tar分发中的文件夹?
答案 0 :(得分:1)
要将构建的war文件放入分发中,请添加distTar所依赖的任务。依赖于任务取决于其他项目的战争任务。获取输出文件并将其放入分发中。关键是在doLast中进入/从中进行,因此在进入/来自分发之前,依赖于其他项目战争完成。
// create a task depends on other project war
// put into the distribution gui folder the war.output.files
// the doLast gives visibility to the war.outputs.files
// after the depends on is complete
task otherProjectWar(dependsOn: ':OtherProject:war') {
doLast {
applicationDistribution.into("gui") {
from( project(':OtherProject').war.outputs.files )
}
}
}
// add depends on for distTar
distTar {
dependsOn otherProjectWar
...
}
答案 1 :(得分:1)
我认为正确的方法是将所需的任务输出包含在分发中。这是一个示例脚本,它将项目构建的jar添加到主发行版中(对于war使用war输出而不是jar输出)。
apply plugin: 'java'
apply plugin: 'distribution'
distributions {
main {
contents {
from jar.outputs
}
}
}
运行分发任务然后正确解析zip和tar的依赖关系。
> gradlew distTar
:clean
:compileJava
:processResources NO-SOURCE
:classes
:jar
:distTar
答案 2 :(得分:0)
您需要为war
任务的输出添加依赖项。默认情况下,ProjectDependency
只是将依赖项添加到该项目的默认配置中。
dependencies {
compile project(':myproject').war.outputs.files
}
编辑:为了澄清,compile
可能不是添加此依赖项的最佳配置,这只是一个示例。如果确实所有这个项目都在将依赖关系聚合到一个分发存档中,那么配置可能无关紧要。