Скопируйте определенные свойства из ресурсов в WEB-INF war с помощью Maven

#java #maven #properties #war

Вопрос:

У меня есть проект Maven (веб-проект Java, работающий на Tomcat10), который будет объявлен ВОЙНОЙ и будет развернут на нескольких этапах. Поэтому я определил некоторые свойства для каждого этапа. Они расположены под

resources/config и иметь следующие файлы:

  • свойства приложения-разработчика
  • применение-prod.свойства
  • log4j2-свойства разработчика

Я хочу, чтобы Maven копировал только указанные файлы при создании war-файла, для этого я определил некоторые Build-Profiles из них в своем pom.xml , например:

 <profile>
        <id>dev</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <configuration>
                                <tasks>
                                    <delete dir="${project.build.finalName}/config/"/>
                                    <!-- Log4j Configuration -->
                                    <copy file="src/main/resources/config/log4j2-dev.properties"
                                          tofile="${project.build.finalName}/log4j2.properties"/>
                                    <!-- Application Properties -->
                                    <copy file="src/main/resources/config/application-dev.properties" tofile="${project.build.finalName}/config/application.properties"/>                                    </tasks>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
 

Во время выполнения mvn package файлы копируются по правильному пути (например target/classes/config/ , — хотя и не в файл war). У этого по-прежнему есть все файлы свойств в папке WEB-INF (например, как указано выше)…

Плагин war определяется следующим образом:

     <build>
    <finalName>${project.name}</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/webapp/META-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>META-INF</targetPath>
                    </resource>
                    <resource>
                        <directory>src/main/webapp/WEB-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
 

What do I need to change to get my designated property-files (according to the defined task in the build-profile) into the WAR assembled through Maven’s war plugin?