Я пытаюсь настроить свойства в моем config.ini
, который находится в src/main/config
, используя pom.xml
, как описано в этом ответе, но это не так. не работает.
Я поместил в src/main/config
файл config.ini
, где присутствует следующая строка: runtime_mode=${runtime.mode}
когда я пытаюсь получить доступ к ключу runtime_mode
во время выполнения, я получаю строку ${runtime.mode}
вместо DEBUG или PRODUCTION, как определено в pom.xml
. Когда я использую ${runtime.mode}
в файле *.html
, он заменяется соответствующим значением, как и ожидалось.
Таким образом, это не работает только тогда, когда ресурс находится в пути сборки.
Я подозреваю, что неправильно определяю ресурс, но не могу понять, что не так.
Это часть сборки моего pom.xml
:
<project>
<properties>
<runtime.mode>DEBUG</runtime.mode>
</properties>
<build>
<finalName>${project.name}</finalName>
<resources>
<resource>
<directory>src/main/config</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>src/main/webapp</directory>
<filtering>true</filtering>
<includes>
<include>bower.json</include>
<include>index.html</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Мое приложение представляет собой проект war
, созданный с использованием следующего архетипа:
<archetype>
<groupId>com.ibm.tools.archetype</groupId>
<artifactId>webapp-jee7-liberty</artifactId>
<version>1.0</version>
<description>JEE7 web application targeting WebSphere Liberty archetype</description>
</archetype>
ОБНОВЛЕНИЕ: мой config.ini
перемещен в src\main\resources
и изменен мой тег <resource>
следующим образом:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>config.ini</include>
</includes>
</resource>
</resources>
Но теперь я не могу прочитать какой-либо ресурс, расположенный в src/main/resources
из кода, например, я положил туда sql.xml
, где все мои sql-запросы.
Попытка чтения по следующему коду:
private static Properties readProperties(String xmlFileName) throws Exception {
Properties properties = new Properties();
InputStream is = SQLProvider.class.getClassLoader().getResourceAsStream(xmlFileName);
properties.loadFromXML(is);
return properties;
}
Но выдает ошибку:
java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203) ~[?:1.8.0_45]
at java.util.Properties.loadFromXML(Properties.java:881) ~[?:1.8.0_45]
at ***.SQLProvider.readProperties(SQLProvider.java:26) ~[classes/:?]
config.ini
вместоsrc/main/resources
. Эта папка специально для таких файлов. Второе: замена происходит из-за элемента<filtering>true</filtering>
в файлеpom.xml
, но вы не включилиconfig.ini
в фильтрацию. Поэтому замена происходит только в файлеindex.html
. - person MichaelK   schedule 21.04.2016<includes>config.ini</includes>
в тег ресурса? Что касается конфигурации и ресурсов, я нашел здесь интересный ответ: stackoverflow.com/a/4183095/947111 попытаюсь реализовать его. Сейчас - person Anatoly   schedule 21.04.2016