使用 maven 3.0.5 发布快照到 nexus
Release a snapshot to nexus using maven 3.0.5
我无法将我使用 Maven 构建的工件的快照版本发布到 Nexus。我的工件版本为 1.0.0-SNAPSHOT。
我可以毫无问题地执行 mvn clean install
。但是当我尝试使用 mvn deploy
进行部署时,出现以下错误:
Return code is: 400, ReasonPhrase: Repository version policy: RELEASE does not allow version: 1.0.0-20161019.214318-1. -> [Help 1]
据我所知,maven3 在我要部署的工件上添加了时间戳而不是 SNAPSHOT 后缀。 maven3不支持maven的<uniqueVersion>
标签。我需要采用什么方法来使用 mvn deploy
命令部署这些工件。
更新:
pom.xml
<distributionManagement>
<repository>
<id>my-nexus-snapshots</id>
<name>Internal Snapshot Releases</name>
<url>http://localhost:9999/repository/maven-snapshots/</url>
</repository>
<snapshotRepository>
<id>my-nexus-releases</id>
<name>Internal Releases</name>
<url>http://localhost:9999/repository/maven-releases/</url>
</snapshotRepository>
</distributionManagement>
settings.xml
<server>
<id>my-nexus-snapshots</id>
<username>user</username>
<password>user123</password>
</server>
<server>
<id>my-nexus-releases</id>
<username>user</username>
<password>user123</password>
</server>
通常,您的 nexus 有单独的存储库 "snapshots" 和 "releases"。 SNAPSHOT 版本部署到前者,非 SNAPSHOT 版本部署到后者。对于部署,这些存储库必须由您指定。您可以通过将 distributionManagement 部分添加到您的 pom.xml 来做到这一点。在那里您可以为两个目标定义特定目标。
<distributionManagement>
<repository>
<id>releases</id>
<name>releases</name>
<url>http://somerepo:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>snapshots</name>
<url>http://somerepo:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
如果您正在使用 Gradle,可以在您的存储库设置中完成。
只需添加 maven-snapshots url
例如:
repositories {
maven {
url = 'http://nexus.something.com/repository/maven-central/'
}
maven {
url = 'http://nexus.something.com/repository/maven-releases/'
}
maven {
url = 'http://nexus.something.com/repository/maven-snapshots/'
}
}
我无法将我使用 Maven 构建的工件的快照版本发布到 Nexus。我的工件版本为 1.0.0-SNAPSHOT。
我可以毫无问题地执行 mvn clean install
。但是当我尝试使用 mvn deploy
进行部署时,出现以下错误:
Return code is: 400, ReasonPhrase: Repository version policy: RELEASE does not allow version: 1.0.0-20161019.214318-1. -> [Help 1]
据我所知,maven3 在我要部署的工件上添加了时间戳而不是 SNAPSHOT 后缀。 maven3不支持maven的<uniqueVersion>
标签。我需要采用什么方法来使用 mvn deploy
命令部署这些工件。
更新: pom.xml
<distributionManagement>
<repository>
<id>my-nexus-snapshots</id>
<name>Internal Snapshot Releases</name>
<url>http://localhost:9999/repository/maven-snapshots/</url>
</repository>
<snapshotRepository>
<id>my-nexus-releases</id>
<name>Internal Releases</name>
<url>http://localhost:9999/repository/maven-releases/</url>
</snapshotRepository>
</distributionManagement>
settings.xml
<server>
<id>my-nexus-snapshots</id>
<username>user</username>
<password>user123</password>
</server>
<server>
<id>my-nexus-releases</id>
<username>user</username>
<password>user123</password>
</server>
通常,您的 nexus 有单独的存储库 "snapshots" 和 "releases"。 SNAPSHOT 版本部署到前者,非 SNAPSHOT 版本部署到后者。对于部署,这些存储库必须由您指定。您可以通过将 distributionManagement 部分添加到您的 pom.xml 来做到这一点。在那里您可以为两个目标定义特定目标。
<distributionManagement>
<repository>
<id>releases</id>
<name>releases</name>
<url>http://somerepo:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>snapshots</name>
<url>http://somerepo:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
如果您正在使用 Gradle,可以在您的存储库设置中完成。
只需添加 maven-snapshots url
例如:
repositories {
maven {
url = 'http://nexus.something.com/repository/maven-central/'
}
maven {
url = 'http://nexus.something.com/repository/maven-releases/'
}
maven {
url = 'http://nexus.something.com/repository/maven-snapshots/'
}
}