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>
通常、ネクサスには「スナップショット」と「リリース」の別々のリポジトリがあります。 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>
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/'
}
}