我有一个分级多项目的设置,我希望收集所有的依赖和输出罐子到一个ZIP在顶层。我得到了一些有用的东西,但是我在ZIP文件中得到了副本。我在关于多项目设置的正式文件中没有发现任何有用的东西
结构
./multi-project
./multi-project/build.gradle
./multi-project/settings.gradle
./multi-project/bar
./multi-project/bar/build.gradle
./multi-project/foo
./multi-project/foo/build.gradle顶层build.gradle
apply plugin: 'java'
allprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
}
task buildDist(type: Zip) {
from subprojects.configurations.compile into 'jars'
from subprojects.jar.outputs.files into 'jars'
}Settings.gradle
include ':foo'
include ':bar'用于foo和bar的较低级别的build.gradle文件(两者相同)
dependencies {
compile 'org.springframework:spring-beans:4.1.0.RELEASE'
}当我从顶层运行gradle :buildDist时,ZIP有重复的
unzip -l build/distributions/multi-project.zip
Archive: build/distributions/multi-project.zip
Length Date Time Name
--------- ---------- ----- ----
0 2014-09-09 20:17 jars/
701334 2014-09-09 19:53 jars/spring-beans-4.1.0.RELEASE.jar
62050 2014-07-05 21:09 jars/commons-logging-1.1.3.jar
1005039 2014-09-09 19:53 jars/spring-core-4.1.0.RELEASE.jar
701334 2014-09-09 19:53 jars/spring-beans-4.1.0.RELEASE.jar
62050 2014-07-05 21:09 jars/commons-logging-1.1.3.jar
1005039 2014-09-09 19:53 jars/spring-core-4.1.0.RELEASE.jar
301 2014-09-09 20:12 jars/bar.jar
301 2014-09-09 20:12 jars/foo.jar发布于 2014-09-18 05:24:48
task buildDist(type: Zip) {
into 'jars'
from { subprojects.configurations.runtime }
from { subprojects.jar }
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}要查看特定级别任务类型的所有配置选项,请参阅分级构建语言参考。
发布于 2014-09-09 20:36:24
这是我想出的最好的办法
示例
task buildDist(type: Zip) {
gradle.taskGraph.whenReady { taskGraph ->
def uniqueFiles = new HashSet()
uniqueFiles.addAll(subprojects.configurations.compile.resolvedConfiguration.resolvedArtifacts.file)
uniqueFiles.addAll(subprojects.jar.outputs.files)
from uniqueFiles into 'jars'
}
}https://stackoverflow.com/questions/25752078
复制相似问题