问题
I am unable to release a snapshot version of an artifact which I build using maven to nexus. The version of my artifact states 1.0.0-SNAPSHOT.
I can execute mvn clean install
without an issue. But when I try to deploy using mvn deploy
, I get the following error :
Return code is: 400, ReasonPhrase: Repository version policy: RELEASE does not allow version: 1.0.0-20161019.214318-1. -> [Help 1]
According to what I was able to find out was that maven3 adds the timestamp instead of the SNAPSHOT suffix on the artifact that I want to deploy. The <uniqueVersion>
tag of maven is not supported in maven3. What is the approach that I need to take to deploy these artifacts using mvn deploy
command.
Updated : 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>
回答1:
Usually, your nexus has separate repositories "snapshots" and "releases". SNAPSHOT versions are deployed to the former, non-SNAPSHOT versions to the latter. For deployment, these repositories have to be specified by you. You can do this by adding the distributionManagement section to your pom. There you can define specific targets for both targets.
<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>
回答2:
If you are using Gradle it can be done in your repositories settings.
Just add the maven-snapshots url
For example:
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/'
}
}
来源:https://stackoverflow.com/questions/40142162/release-a-snapshot-to-nexus-using-maven-3-0-5