Gradle:如何将ProGuard与工件连接/添加自定义工件?



我想签名并上传到Proguard处理的Maven repo jar文件。 整个管道工作正常,但现在我想签名和上传的不是 JAR 任务创建的 JAR 文件,而是 ProGuard 创建的 JAR 文件。

build.gradle的相关部分:

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'signing'
group = 'com.mycompany'
version = '1.0.0'
// no explicit jar declaration
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: 'jar') {
injars  "$buildDir/libs/${jar.baseName}-${version}.jar" 
//WHAT'S NEEDED TO CHANGE IT TO: ${jar.baseName}-${version}-original.jar
outjars "$buildDir/libs/${jar.baseName}-${version}-processed.jar"
// WHAT'S NEEDED TO CHANGE IT TO: ${jar.baseName}-${version}.jar
...
}
artifacts {
archives jar, javadocJar // HOW TO ADD PROGUARD OUTPUT HERE?
}
signing {
sign configurations.archives
}
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> 
signing.signPom(deployment) }
...
}

我知道我可以简单地在 ProGuard 任务之前替换文件名,但这样我会丢失增量构建:当原始 jar 被重命名并且 ProGuard 任务失败时,下一个构建将不必要地再次创建 jar

def obfsJar =
artifacts.add(
'archives', file(proguard.outputs.files.singleFile)) {
type('jar')
builtBy(proGuardTask)
}
publishing {
publications {
artifactoryPublications(MavenPublication) {
artifact obfsJar
}
}
}

最新更新