Я хотел бы упомянуть, что я относительно новичок в конфигурациях Maven.
Моя ситуация:
properties
в файловой системе.Это файловая система для тех:
<my-project-root>
---profiles
------local
---------app.properties
------dev
---------app.properties
------test
---------app.properties
Я загружаю в файл pom.xml
соответствующий файл свойства следующей логикой:
<profiles>
<profile>
<id>local</id>
<!-- The development profile is active by default -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<build.profile.id>local</build.profile.id>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<build.profile.id>dev</build.profile.id>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<build.profile.id>prod</build.profile.id>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<build.profile.id>test</build.profile.id>
</properties>
</profile>
</profiles>
<build>
<finalName>MyProject</finalName>
<plugins>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>profiles/${build.profile.id}</directory>
</resource>
</resources>
</build>
В этой конфигурации я могу использовать соответствующие свойства для моего текущего профиля почти везде. Везде, но раздел <plugins>
. Я бы очень хотел загрузить, например, свой URL-адрес базы данных или учетные данные из таких файлов свойств, но если я app.properties
их в app.properties
они не будут оцениваться в разделе плагинов (например, я получаю значение ${endpoint}
качестве конечной точки базы данных).
Как получить свойства, загруженные из файлов для профиля, доступные в разделе <plugins>
?
PS: Да, если я добавлю эти свойства непосредственно в pom.xml
качестве свойств в <profiles>
, они доступны, но я предпочитаю хранить свои пароли у pom.
Я смог сделать то, что хотел. Я использовал properties-maven-plugin
связанные, скажем, этот ответ.
Я сделал следующее:
Я добавил properties-maven-plugin
для чтения файлов, которые мне нужны были загружены
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>profiles/${build.profile.id}/app.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
К сожалению, здесь я не смог заставить плагин читать все файлы свойств в каталоге, но я считаю это достаточно хорошим.
Plugin execution not covered by lifecycle configuration
). Чтобы сделать это, я выполнил инструкции из следующей публикации.С этими шагами необходимые мне свойства стали доступными для плагинов, которые их использовали.
Примечание: на самом деле свойства загружаются после команды compile
maven, но для меня это достаточно хорошо, так как все мои цели, зависящие от свойств, должны выполняться после compile
цели в последовательности вызовов цели во всех моих случаях.
pom.xml
паролей вpom.xml
является единственным препятствием, поменяйте их местами с путями к файлам паролей (или просто именами файлов относительно некоторого известного места, чтобы уменьшить утечку).