web-dev-qa-db-ja.com

Maven 3.0.5を使用してスナップショットをネクサスにリリースする

Mavenを使用してネクサスにビルドしたアーティファクトのスナップショットバージョンをリリースできません。私のアーティファクトのバージョンは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サフィックスの代わりにタイムスタンプを追加することでした。 mavenの<uniqueVersion>タグはmaven3ではサポートされていません。 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>
12
hYk

通常、ネクサスには「スナップショット」と「リリース」の別々のリポジトリがあります。 SNAPSHOTバージョンは前者にデプロイされ、非SNAPSHOTバージョンは後者にデプロイされます。デプロイメントの場合、これらのリポジトリーはユーザーが指定する必要があります。これを行うには、pomにdistributionManagementセクションを追加します。そこで、両方のターゲットに対して特定のターゲットを定義できます。

<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>
9
JF Meier

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/'
        }
    }
1
Dias