Получение версии проекта maven и идентификатора артефакта из pom во время работы в Eclipse
Я искал, как получить имя приложения (идентификатор артефакта) и версию из maven pom или манифест, когда я столкнулся с этим вопросом Получить версию артефакта Maven во время выполнения.
Это работает для меня, когда я упаковываю проект, но я не могу заставить ничего работать, когда пытаюсь запустить программу с помощью eclipse. Я пытался использовать метод .properties при создании, поскольку я предполагал, что это не зависит от пакета, но я все еще не получаю результата. Если у кого-то есть идея или решение этой проблемы, мы будем очень благодарны.
Моя последняя попытка ниже. Это использует манифест при упаковке (который работает) и пытается получить файл .properties при работе в eclipse.
String appVersion = getClass().getPackage().getImplementationVersion();
if(appVersion == null || "".equals(appVersion)) {
appVersion = Glob.getString(appVersion);
if(appVersion == null || "".equals(appVersion)) {
System.exit(0);
}
}
Ответы
Ответ 1
Создать файл свойств
src/main/resources/project.properties
с содержимым ниже
version=${project.version}
artifactId=${project.artifactId}
Теперь включите фильтрацию ресурсов maven
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
чтобы этот файл обрабатывался в
target/classes/project.properties
с некоторым контентом, подобным этому
version=1.5
artifactId=my-artifact
Теперь вы можете прочитать этот файл свойств, чтобы получить то, что хотите, и это должно работать каждый раз.
final Properties properties = new Properties();
properties.load(this.getClass().getResourceAsStream("project.properties"));
System.out.println(properties.getProperty("version"));
System.out.println(properties.getProperty("artifactId"));