我有一个像这样格式化的gradle项目
container/
dist/
mod1/
build.gradle
mod2/
build.gradle
mod3/
build.gradle
build.gradle
基本上是一个有很多子模块的成绩项目。我想要做的是当你在container / build.gradle上运行程序集时,它会在所有子项目上运行构建。那部分很容易。现在我试图完成所有内容的集中配置设置和参数。
这是我的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有点困难。
答案 0 :(得分:2)
我认为你有不同的选择。 一种解决方案可能是在子项目中引入一个常见任务,将AbstractArchiveTask类型的所有任务输出复制到dist文件夹。这看起来像这样:
subprojects{
task copyToDists(type:Copy){
into project.rootProject.file("dists")
from tasks.withType(AbstractArchiveTask)
}
}
这个解决方案有一些开销,并不被认为是最佳实践,因为你开始在构建中填充内容。更好的方法是重新配置相应的任务,在所需的文件夹中创建默认的罐子,战争,拉链:
subprojects{
tasks.withType(AbstractArchiveTask){
destinationDir = project.rootProject.file("dists")
}
}
希望有所帮助。
欢呼声, 勒内
答案 1 :(得分:0)
这是我尚未达到的问题,但我即将面对。我计划在container/build.gradle
中创建一个任务,在任何子项目中找到人工制品,然后将其复制到dist
目录。