Is it possible to retrieve the version of a specific maven dependency at runtime?
E.g. for the pom.xml:
<dependency>
<groupId>foo.bar</groupId>
<artifactId>foobar</artifactId>
<version>1.0</version>
</dependency>
I would like to retrieve the version 1.0 of a specific dependency with artifact ID foobar.
The most problematic part here is to find a JAR by its name. Unfortunately, there is no 100% reliable way for this in Java. To get a JAR by name, you need to scan classpath of the running application which may not always be present (e.g. because custom class loaders are used or module path is used instead of classpath).
But let's assume you are not using any fancy features like custom class loaders and you got your classpath which contains all your Maven dependencies. What do you need to do now? I'll try to describe a rough algorithm:
pom.properties. It's located in META-INF/maven/{groupId}/{artifactId}.version property in pom.properties.Again, this solution will not be completely reliable. You have to decide: do you really need the version information and for what purposes?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With