【发布时间】:2016-05-12 01:08:48
【问题描述】:
我的资源位于一个文件夹结构中,例如:
mygitroot/myproj/module1/src/main/groovy/com/mypak/module1 mygitroot/myproj/module2/src/main/groovy/com/mypak/module2 mygitroot/myproj/module3/src/main/groovy/com/mypak/module3
Gradle 在文件夹结构中构建 jar,例如:
mygitroot/myproj/build/libs/module1.jar mygitroot/myproj/build/libs/module2.jar mygitroot/myproj/build/libs/module3.jar
我希望它输出到默认的动态文件夹结构,只是植根到不同的“nongitroot”文件夹:
mybuildroot/myproj/build/libs/module1.jar mybuildroot/myproj/build/libs/module2.jar mybuildroot/myproj/build/libs/module3.jar
我的任务是这样说的:
task sourcesJar(type: Jar) {
group 'Build'
description 'An archive of the source code'
classifier 'sources'
from sourceSets.main.allSource
}
有没有一种优雅的方式来改变根?
【问题讨论】:
-
设置
buildDir属性 -
不能按要求工作:
-
不能按要求工作,我猜是因为“modules1-3”是父项目的子项目。我在 allprojects{ 下添加了 buildDir="../my-build",它确实创建了文件夹并创建了“my-build/libs/parent.jar”和“my-build/temp”。但它还在我的项目的根目录中创建了“my-build”,其中包含“/classes”、“/libs”和“/tmp”子目录。 "/libs" 里面都是 3 个 jars.... "module1.jar", "module2.jar", "module3.jar" 。非常令人惊讶。因此,似乎我需要在每个模块的 build.gradle 中静态指定每个子项目 buildDir(例如: "myproj/src/module1" )。对吗?
-
你为什么不照常建造它们,然后有一个移动它们的任务。这难道不比尝试破解 jar 文件的构建路径更容易吗?