我正在研究一个多模块项目,并尝试配置发布任务以使用researchgate gradle-release插件一次将所有模块档案上传到Nexus上。我首先在allprojects块中配置了该插件,并且运行良好,但是它为每个已发布的模块都进行了新的标记/提交,而这并不是我期望的。因此,我将uploadArchives配置保留在allprojects中,但移动了发布配置以使其仅适用于根项目。 我的问题如下: 当我从根目录使用gradle clean build时,效果很好。 当我进行gradle clean上载时,它可以正常工作并在nexus上载所有模块。 当我做gradle clean release并添加
afterReleaseBuild.dependsOn uploadArchives
它也可以工作,但是只能将根项目上传到nexus,而不是模块。 所以我所做的就是修改任务依赖项,如下所示:
afterReleaseBuild.dependsOn subprojects.uploadArchives
这给我的一个模块造成了compileJava错误,原因是该项目的其他模块创建的某些软件包不存在。 我已经尝试了其他方法来修改依赖项,例如:
afterReleaseBuild.dependsOn allprojects.findResults{ it.tasks.findByName('uploadArchives')}
但是我遇到了同样的错误。
知道当我从根目录使用它而不调用发布任务时,uploadArchives和构建工作良好,这与最后一个任务有关,但是我真的不明白我在那里所缺少的东西。 感谢您提供的任何帮助, 这是我的build.gradle的有趣示例:
allprojects {
apply plugin: 'maven'
uploadArchives{
repositories{
mavenDeployer{
if(project.version.endsWith('-SNAPSHOT')) {
repository(url: "nexus-repo-snapshots") {
authentication(userName: myusername, password: mypassword)
}
}
else {
repository(url: "nexus-repo-releases/") {
authentication(userName: myusername, password: mypassword)
}
}
}
}
}
}
apply plugin: 'net.researchgate.release'
release {
failOnCommitNeeded = false
failOnPublishNeeded = false
failOnSnapshotDependencies = false
failOnUnversionedFiles = false
failOnUpdateNeeded = false
versionPropertyFile = 'gradle.properties'
//versionPatterns = [
// Increments minor number: "2.5.17-SNAPSHOT" => "2.6.0-SNAPSHOT"
// /[.]*\.(\d+)\.(\d+)[.]*/: { Matcher m, Project p -> m.replaceAll(".${(m[0][1] as int) + 1}.0") }
//]
tagTemplate = "mytag"
git{
requireBranch='my_branch'
pushToRemote='origin'
}
}
afterReleaseBuild.dependsOn subprojects.uploadArchives