Get build version Maven
What's inside this article
⌄
- Get Maven artifact version at runtime
- Print build version java
- Project version maven
Let’s imagine that we need to get the value of a certain Maven property in Java code. First, let’s create a text file with any name, for example version.txt in the src/main/resources folder:
project version is: ${project.version}
Now let’s add the following block to pom.xml:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Now, when building, Maven will replace the construction ${project.version} in the file with the real value of the variable.
Next, we need to make sure that the file is present on the final jar’s classpath. It remains to read it:
// Reads the version from the version.txt file, where maven writes the value when compiling
private String getVersion() {
try {
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("version.txt");
InputStreamReader inputStreamReader = new InputStreamReader(Optional.ofNullable(inputStream).orElseThrow(IOException::new));
try (BufferedReader reader = new BufferedReader(inputStreamReader)) {
return reader.readLine();
} finally {
inputStream.close();
inputStreamReader.close();
}
} catch (IOException e) {
log.error("Can't get version", e);
}
return "Unknown";
}