Gradle equivalent of Maven Assembly



只要 Gradle 存在,我就会认为这是有据可查的,但我正在努力。对不起,如果这对其他人来说很明显。

我有一个使用 maven 的多项目构建设置,我正在设置 gradle 进行比较。

项目 A 生成一个 jar 文件

,项目 B 生成一个战争文件(并且依赖于 A 中的 jar)。项目 C 我想创建一个程序集,即一个 zip 文件。zip 文件应包含项目 C 中目录的内容、项目 B 中的 war 文件以及从 Archiva 拉下的 tomcat 程序集的解压缩内容。

我遇到的问题是,当 gradle 评估 build.gradle 文件时,它会失败,因为它找不到战争文件 - 这并不奇怪,战争文件尚未构建。

那么,如何表达对 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

有人可以指出我文档或讨论,让我走得更远吗?谢谢!

您应该查看 Gradle 文档中的多项目构建 - 项目 lib 依赖项。

这样的事情应该有效:

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'
}

还有一个看起来很像您要做的事情的示例 - 可能值得一看:)

最新更新