gradle项目中的路径配置

gradle项目中的路径配置,gradle,Gradle,我有一个像这样的gradle项目 container/ dist/ mod1/ build.gradle mod2/ build.gradle mod3/ build.gradle build.gradle 基本上是一个有很多子模块的等级项目。我想做的是,当您在container/build.gradle上运行assembly时,它会在所有子项目上运行构建。那部分很容易。现在,我正试图实现所有配置设置和参数的集中化 这是我的container/build.gradle文件中的

我有一个像这样的gradle项目

  • container/
    • dist/
    • mod1/
      • build.gradle
    • mod2/
      • build.gradle
    • mod3/
      • build.gradle
    • build.gradle
基本上是一个有很多子模块的等级项目。我想做的是,当您在container/build.gradle上运行assembly时,它会在所有子项目上运行构建。那部分很容易。现在,我正试图实现所有配置设置和参数的集中化

这是我的container/build.gradle文件中的一个片段

subprojects {
    apply plugin: 'java'
    apply plugin: 'scala'

    jar {
        manifest.attributes provider: 'OnusPride'
    }

    property {
        sourceCompatibility = 1.7
        archivePath = file("dist")
    }

    ext {
        springVersion = "3.2.1.RELEASE"
        springSecurityWebVersion = "3.1.3.RELEASE"
        springSecurityOauth2Version = "1.0.1.RELEASE"
        jacksonCoreVersion = "2.1.2"
    }

    dependencies {
        testCompile 'junit:junit:4.8.2'
    }
}
我试图配置所有模块,当它们完成各种组装任务时,javajar、scalajar、war等,将输出放在container/dist文件夹中。我该怎么做


还有,有没有人有一个相当复杂、写得很好、多模块的gradle项目的例子。一些比hello world更实质的东西会非常有用。同时学习groovy和gradle有点难。

我认为您有不同的选择。 一种解决方案可能是在子项目中引入一个公共任务,将AbstractArchiveTask类型的所有任务输出复制到dist文件夹。这看起来像这样:

subprojects{
    task copyToDists(type:Copy){
         into project.rootProject.file("dists")
         from tasks.withType(AbstractArchiveTask)
    }
}
这个解决方案有一些开销,并且不被认为是最佳实践,因为您开始在构建中处理东西。更好的方法是重新配置相应的任务,在所需文件夹中按默认值创建JAR、WAR和ZIP:

subprojects{
    tasks.withType(AbstractArchiveTask){
        destinationDir = project.rootProject.file("dists")
    }
}
希望这有帮助

干杯,
勒内

这是一个我还没有解决的问题,但我即将面对。我计划在
容器/build.gradle
中创建一个任务,该任务将在其所有子项目中找到工件,然后将它们复制到
dist
目录中。

我注意到您同时声明了scala和java插件,这将导致java代码生成两次。看见