使用 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/'
        }
    }