У меня есть следующее pom.xml
, которое должно включить фильтрацию.
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.myname</groupId>
<artifactId>playground-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
И следующее для src/main/resources.application.properties
.
application.displayName=Maven Playground
application.version=${project.version}
Чтобы получить эти свойства, у меня есть следующее PomInspector.java
.
package com.mycompany.myname;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class PomInspector {
private static final String APPLICATION_PROPERTIES_FILE_NAME = "src/main/resources/application.properties";
private static final Properties applicationProperties;
static {
applicationProperties = new Properties();
try {
FileInputStream is = new FileInputStream(APPLICATION_PROPERTIES_FILE_NAME);
applicationProperties.load(is);
}
catch (FileNotFoundException fileNotFoundException) { }
catch (IOException ioException) { }
}
public static String getDisplayName() {
return applicationProperties.getProperty("application.displayName");
}
public static String getAppVersion() {
return applicationProperties.getProperty("application.version");
}
}
Наконец, у меня есть следующее в моем основном методе.
System.out.println(String.format("Application \"%s\" is currently on version: \"%s\"", PomInspector.getDisplayName(), PomInspector.getAppVersion()));
К сожалению, когда я запускаю mvn clean package
и затем запускаю метод main, я получаю сообщение: Application "Maven Playground" is currently on version: "${project.version}"
Если я проверяю целевой файл JAR, application.properties
имеет application.version=1.0-SNAPSHOT
, что правильно.
Я подумал, что это может быть проблема с синхронизацией, и попытался изменить PomInspector
на настройку getInstance
в одноэлементном стиле, но это, похоже, не решило проблему.
Любые идеив чем дело?