我有一个gradle文件,用于构建JAR并将其发布到nexus服务器上的maven存储库中。
build.gradle
档publishing {
publications {
maven(MavenPublication) {
artifact shadowJar
}
}
repositories {
maven {
credentials {
username nexusUsername
password nexusPassword
}
if (IsSnapshot.toBoolean())
url "${nexusUrl}/repository/maven-snapshots/"
else
url "${nexusUrl}/repository/maven-releases/"
}
}
}
此任务根据IsSnapshot
的值将JAR文件发布到相应的存储库(快照/版本)。
我还有一个变量:DoPublish
。如果DoPublish
是true
,那么我想要发布包;否则,我不想在nexus上发布这个软件包。
我想我应该在这种情况下将url
设置为空字符串。还有更好的建议吗?
发布任务
generatePomFileFor {module1} Publication - 生成用于发布的Maven POM文件' module1'。
generatePomFileFor {module2} Publication - 生成用于发布的Maven POM文件' module2'。
generatePomFileForMavenPublication - 生成Maven POM文件以供发布' maven'。
发布 - 发布此项目生成的所有出版物。
发布{module1} PublicationToMavenLocal - 发布Maven出版物' module1'到本地Maven存储库。
发布{module1} PublicationToMavenRepository - 发布Maven出版物' module1'到Maven存储库' maven'。
发布{module2} PublicationToMavenLocal - 发布Maven出版物' module2'到本地Maven存储库。
发布{module2} PublicationToMavenRepository - 发布Maven出版物' module2'到Maven存储库' maven'。
publishMavenPublicationToMavenLocal - 发布Maven出版物' maven'到本地Maven存储库。
publishMavenPublicationToMavenRepository - 发布Maven出版物' maven'到Maven存储库' maven'。
publishToMavenLocal - 将此项目生成的所有Maven出版物发布到本地Maven缓存。
答案 0 :(得分:3)
可以使用onlyIf
有条件地停用任务,如gradle文档中所述:https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:using_a_predicate
这里讨论的任务是publishMavenJavaPublicationToMavenRepository
,如https://docs.gradle.org/current/userguide/publishing_maven.html所述,这是需要禁用的任务:
publishMavenJavaPublicationToMavenRepository.onlyIf { IsSnapshot.toBoolean() }
因为任务publishMavenJavaPublicationToMavenRepository
是在成功发布配置时动态生成的,所以在解析和评估构建脚本时会导致异常,因此它可能不可用。在这种情况下,可以在完成任务gragh后更新它:
gradle.taskGraph.whenReady { graph ->
publishMavenJavaPublicationToMavenRepository.onlyIf { IsSnapshot.toBoolean() }
}
如果你使用不同的发布插件,它可能是一个不同的任务,但想法是相同的