0

I am trying to publish obfuscated jars to nexus repo.

I created a task to obfuscate the code using proguard, then a task that copy the obfuscated jars into build folder.

task proguard (type: proguard.gradle.ProGuardTask) {
       println("Performing Obfuscation ..")
       configuration 'proguard.conf'

      subprojects { porject ->
        injars "${projectDir}/build/libs/${porject.name}-${rootProject.version}.jar"
        outjars "${projectDir}/build/libs/obfuscated/${porject.name}-${rootProject.version}.jar"
      }

     libraryjars "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar"
}

task postProguard (){
  doFirst{
    println("Deleting Non Obfuscated jars")
         subprojects { project ->
           delete "${projectDir}/build/libs/${project.name}-${rootProject.version}.jar"
         }

         println("Copying Obfuscated Jars")

          subprojects { project ->
          copy {
            from "${projectDir}/build/libs/obfuscated/"
            into "${projectDir}/build/libs/"
            include '*.jar'
          }
    }
  }
}
proguard.finalizedBy postProguard

the issue is when I run ./gradlew publish the project gets re-built and the jars gets changed to non obfuscated again.

I tried to change the publishing task but without results.

  publishing {
    if(new File("${projectDir}/build/libs/obfuscated").exists()){
       publications {
         maven(MavenPublication) {
              artifact "${projectDir}/build/libs/${project.name}-${rootProject.version}.jar"
       pom.withXml {
            def dependency = asNode().appendNode('dependencies').appendNode('dependency')
            dependency.appendNode("groupId", "${project.name}")
            dependency.appendNode("artifactId", "${project.name}")
            dependency.appendNode("version", "${rootProject.version}")
        }
       }
      }
     }
    repositories {
      maven {
        name = 'maven-snapshots'
        url = ***
  
      }
    }
  }

1 Answers1

0

I added a builtBy attribute to the publication here is a working code

publications {
       if(new File("${projectDir}/build/libs/obfuscated").exists()){
         maven(MavenPublication) {
              artifact ("${projectDir}/build/libs/${project.name}-${rootProject.version}.jar"){
                builtBy postProguard
              }
          }
        }
      }