使用Jar-gradle任务时如何避免命名冲突?
我有几个依赖项:使用Jar-gradle任务时如何避免命名冲突?,gradle,dependencies,Gradle,Dependencies,我有几个依赖项: apply plugin: 'java' apply plugin: 'java-library-distribution' repositories { maven { url "https://maven.google.com/" } mavenCentral() } dependencies { compile 'android.arch.core:common:1.1.1' compile 'android.ar
apply plugin: 'java'
apply plugin: 'java-library-distribution'
repositories {
maven {
url "https://maven.google.com/"
}
mavenCentral()
}
dependencies {
compile 'android.arch.core:common:1.1.1'
compile 'android.arch.core:runtime:1.1.1'
compile 'android.arch.lifecycle:common:1.1.1'
compile 'android.arch.lifecycle:compiler:1.1.1'
compile 'android.arch.lifecycle:extensions:1.1.1'
compile 'android.arch.lifecycle:reactivestreams:1.1.1'
compile 'android.arch.lifecycle:runtime:1.1.1'
}
我把它们放在一个罐子里:
gradle distZip
但有两个依赖项具有相同的名称和版本,因此生成的zip文件中存在重复项:
-rw-r--r-- 0 0 0 50121 Aug 23 09:48 gradleTest/lib/compiler-1.1.1.jar
-rw-r--r-- 0 0 0 5124 Aug 23 09:48 gradleTest/lib/runtime-1.1.1.aar
-rw-r--r-- 0 0 0 9635 Aug 23 09:48 gradleTest/lib/runtime-1.1.1.aar
-rw-r--r-- 0 0 0 11567 Aug 23 09:48 gradleTest/lib/common-1.1.1.jar
-rw-r--r-- 0 0 0 20618 Aug 23 09:48 gradleTest/lib/common-1.1.1.jar
我试图在zip中重命名文件,但我不知道如何重命名。
我编写了一个任务,将所有依赖项复制到“lib”目录,但只有最后一个依赖项被复制到该目录:
task copyToLib(type: Copy) {
into "lib"
project.configurations.runtime.resolvedConfiguration.getResolvedArtifacts().each { artifact ->
println "${artifact.moduleVersion.id.group}.${artifact.name}-${artifact.moduleVersion.id.version}.${artifact.extension}"
from artifact.file
rename "(.*)", "${artifact.moduleVersion.id.group}.${artifact.name}-${artifact.moduleVersion.id.version}.${artifact.extension}"
}
}
我还查看了jar.eachFile来重命名文件,但我不知道如何从闭包中获取工件组。我的gradle技能尚未完成…我最终将依赖项复制到自定义生成目录,并在复制时重命名它们:
task copyToLib() {
project.configurations.runtime.resolvedConfiguration.resolvedArtifacts.each { artifact ->
println "${artifact.moduleVersion.id.group}.${artifact.name}-${artifact.moduleVersion.id.version}.${artifact.extension}"
copy {
from artifact.file
into "${project.buildDir}/lib"
rename "(.*)", "${artifact.moduleVersion.id.group}.${artifact.name}-${artifact.moduleVersion.id.version}.${artifact.extension}"
}
}
}
对我来说,使用拷贝闭包而不是拷贝任务是一个突破。在访问工件数据(如版本和组)时,我想不出复制工件的方法