I've been experimenting with setting up Maven Central publishing from a TravisCI build (since it's free for my OSS GitHub project), and I ended up with a pattern that I think is pretty nice to work with (I've struggled with the maven-deploy-plugin in the past).
I've written it up here https://bpodgursky.com/2019/07/31/using-travisci-to-deploy-to-maven-central-via-git-tagging-aka-death-to-commit-clutter/ but tl,dr, the key thing I haven't seen used widely is the use of tags to define release versions, eg: ``` if [ ! -z "$TRAVIS_TAG" ] then mvn --settings "${TRAVIS_BUILD_DIR}/.travis/mvn-settings.xml" org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$TRAVIS_TAG 1>/dev/null 2>/dev/null else echo "No tags, using snapshot version from pom.xml" fi mvn deploy -P publish -DskipTests=true --settings "${TRAVIS_BUILD_DIR}/.travis/mvn-settings.xml" ``` This lets me cut a central release by just pushing a tag: ``` $ git tag 1.23 $ git push origin 1.23 ``` I've used Maven a fair amount but I wouldn't consider myself perfectly in tune with best practices, so I'm curious what others think of this approach, or if there are other streamlined central deploy setups (especially from CI/Travis) that I missed. Thanks, Ben
