How to differentiate between deploying releases vs snapshots

Solution 1:

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:

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).