我有两个Maven存储库,一个是本地的,一个是外部的。
在本地存储库中,我将发布快照和发行版。 在外部存储库上,我将仅发布发行版。
我当前在build.gradle中用于发布的代码:
publishing {
...
repositories {
maven { // Local Nexus Repository
...
def releaseRepoUrl = "...//repository/maven-releases/"
def snapshotsRepoUrl = "...//repository/maven-snapshots/"
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
}
maven { // external Nexus Repository (only publish if it is a release)
...
def releaseRepoUrl = "...//repository/maven-releases/"
url = version.endsWith('SNAPSHOT') ? "" : releaseRepoUrl
}
}
}
问题在于,如果url为“”,则会发生错误,这是合理的,因为他无法发布到该url。
如果是SNAPSHOT,如何跳过在外部存储库上的发布?
答案 0 :(得分:0)
您可以将第二个maven块包装在if语句中,如下所示:
publishing {
...
repositories {
maven { // Local Nexus Repository
...
def releaseRepoUrl = "...//repository/maven-releases/"
def snapshotsRepoUrl = "...//repository/maven-snapshots/"
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
}
if (!version.endsWith('SNAPSHOT')) {
maven { // external Nexus Repository (only publish if it is a release)
...
def releaseRepoUrl = "...//repository/maven-releases/"
url = releaseRepoUrl
}
}
}
}