How to differentiate between deploying releases vs snapshots

Maven

Maven Problem Overview


I may be missing something extremely obvious, but I need some clarification regardless. I am about to begin development using maven and archiva. I added both servers + settings to settings.xml, and distributionManagement tags to the maven POM which I want to deploy.

I put references to both my internal snapshot repo, and my internal release repo in the POM. is there a specific maven command or option, which specifies to deploy as a SNAPSHOT, and NOT to both repos? Or if I do deploy, will it automatically push one copy to each repo?

Can someone clarify this?´

Maven Solutions


Solution 1 - Maven

If your project.version contains SNAPSHOT (f.e., 1.2-SNAPSHOT) and you execute mvn deploy, artifacts will be deployed to your snapshot repository. If it doesn't (f.e., 1.2) - they will be deployed to your release repository.

Solution 2 - Maven

You can execute mvn deploy.

If your POM version contains SNAPSHOT as suffix, it will deploy into the repository configured under distributionManagement.snapshotRepository.

If your POM doesn't contain SNAPSHOT suffix, it will deploy into the repository configured under distributionManagement.repository.

However, I do recommend you to use maven-release-plugin to manage versioning and deployment. By running mvn -B release:clean release:prepare release:perform, in resume:

  • the suffix SNAPSHOT is removed from the version (e.g. 2.1-SNAPSHOT -> 2.1);
  • the application is built so as to generate JAR files;
  • the code is committed to your code repository (e.g. git) and tagged (e.g. 2.1);
  • the JAR is deployed into your release repository (not snapshot repo);
  • the version is incremented and the suffix SNAPSHOT is added (e.g. 2.2-SNAPSHOT).

Solution 3 - Maven

For me putting a suffix: SNAPSHOT in ${project.version} was not enough. I had to put a dash in front of it:-SNAPSHOT in order for maven to deploy it in the local snapshot repo.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSam LevinView Question on Stackoverflow
Solution 1 - MavenAndrew LogvinovView Answer on Stackoverflow
Solution 2 - MavenWander CostaView Answer on Stackoverflow
Solution 3 - MavenOliPView Answer on Stackoverflow