java - gradle:如何将 proguard 与工件连接/添加自定义工件?

标签 java gradle build.gradle

我想签名并上传到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
        }
    }
}

关于java - gradle:如何将 proguard 与工件连接/添加自定义工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718316/

相关文章:

java - 使用 Gradle 将多个 JaCoCo .exec 文件聚合到单个覆盖率报告中

android - 想要通过使用gradle作为构建工具在Windows slave中为Android项目计划作业

java - GWT 与 Eclipse 下的 Maven。开发周期是多少?

java - AspectJ java 13 支持吗?

java - 如何在没有 EventListener 的情况下从 Firebase 检索数据?

java - 为空 json 字段设置默认值

java - 如何针对本地依赖项运行 Gradle JAR?

android - 错误 : Could not find or load main class org. gradle.wrapper.GradleWrapperMain

android - Gradle 5 中 Artifact 的分类?

gradle - 我如何找出哪个库依赖于junit vintage?