如何将war构建添加到分发中

时间:2014-09-29 17:29:04

标签: gradle war

我们有一个gradle项目执行distTar来创建tar分发文件。 每个依赖项目都可以很好地将所有依赖项和项目jar文件放入分发libs文件夹中。

我们需要添加一个构建war文件的项目。通过将项目添加为依赖项,它添加了所有战争依赖​​项......我们只需要项目战争任务中的war文件。 战争项目战争任务也没有被执行。 相反,jar任务正在从分发项目的distTar执行。

我们如何执行项目战争任务并将战争文件添加到" gui" tar分发中的文件夹?

3 个答案:

答案 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可能不是添加此依赖项的最佳配置,这只是一个示例。如果确实所有这个项目都在将依赖关系聚合到一个分发存档中,那么配置可能无关紧要。