我有一个多项目,我想将一些子项目 Artifact 上传到Maven存储库。
现在,我将以下代码写入到主build.gradle中:

task sourcesJar(type: Jar, dependsOn: classes) { ... }

project(':subProjName1') {
   apply plugin: 'java'
   apply plugin: 'maven'

   configurations {
       subProjName1Archives
   }

   uploadSubProjName1Archives {
       repositories {
           mavenDeployer {
               repository(url: "file:///$rootDir/mvn-repo/")
           }
       }
   }

   artifacts {
       subProjName1Archives jar
       subProjName1Archives sourcesJar
   }
}

project(':subProjName2') { ... }
...
project(':subProjNameN') { ... }

并对上传归档文件执行以下操作:
gradlew.bat uploadSubProjName1Archives
gradlew.bat uploadSubProjName2Archives
...
gradlew.bat uploadSubProjNameNArchives

它正在执行我想要的操作,但是如何将其概括为主要build.gradle中的一项任务?

最佳答案

如果将以上代码放入根构建脚本的subprojects { .. }块中,则可以使用gradle uploadMyConfiguration一次调用所有任务。 (仅)如果您对单个任务有具体需求(例如,因为另一个任务取决于要上传的所有 Artifact ),则可以添加另一个生命周期任务:

task uploadAll {
    dependsOn { subprojects.uploadMyConfiguration }
}

PS:除非您有充分的理由,否则您可以重用现有的archives配置和uploadArchives任务。 archives配置已经包含了jar任务生成的Jar,因此您只需要添加sources Jar。

关于gradle - 如何在root build.gradle上重构某些子项目的uploadArchives?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22357139/

10-11 22:20
查看更多