Continuous Integration of dependent Development Artifacts


I have transitioned companies, and so I, who have programmed in Python for the last 7 years work now with a Java stack. I wanted to improve the continous integration setup of the project I joined.

Setting

Continuous Delivery Stages, taken from http://ptgmedia.pearsoncmg.com/images/chap5_9780321601919/elementLinks/fig5_4.jpg

So the general idea is if your software project consists of several *.jar files (the software artifacts), you build them at commit stage and put them onto an artifact store, then you can load them from an artifact store and integrate them. Continuously means, that this integration / acceptance tests are triggered with every triggered artifact upload, and artifact uploads are triggered at every push to the source code repositories of the involved software projects.

Question

To me it is unclear, how I can upload artifacts to an artifact store like artifactory on every push since in the maven files, the version is hardcoded into the pom.xml.

In Python I used a package management plugin that would generate a unique version number for development builds using the latest git tag and an incremental number of commits, which meant that in the acceptance test stage, I could just pull the most recent released artifacts from an artifact store.

In java / maven I don’t know how to do this and I haven’t found much so far.