Я пришел из ANT, где вы можете вызвать .java-файл для получения номера версии через выполнение некоторого метода. Я хотел бы сделать что-то подобное в моем новом pom.xml для автоматического получения правильного номера версии. Мне нужно, чтобы приложение знало о своей собственной версии и в то же время Maven знал о версии для создания правильных сборок. Держать информацию о версии удвоенной - не вариант.
Или Maven может создать новый .java файл во время/до сборки?
Я могу представить довольно много способов достичь этого, но есть ли лучший практический способ сделать это в проекте Maven?
Непонятно, на какой номер версии вы ссылаетесь, и почему он должен быть в java-файле. Однако если вы пытаетесь присвоить номер версии своему проекту, следуйте стандартному соглашению Maven. Вот пример:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.abc</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>My App</name>
<description>My application description.</description>
<url>http://myapp.myco.com</url>
....
Я отошлю вас к этой теме в SO: Как читать файл внешних свойств в Maven . В частности, ознакомьтесь с ответом Dougnukem, в котором описано, как прочитать файл внешних свойств в Maven. Вы можете использовать его как общий источник для управления номером версии как в вашем скрипте сборки Maven, так и в вашем Java-приложении.