我有3种不同的配置文件的Maven应用程序,在下面指定
<profiles>
<profile>
<id>dev</id>
<properties>
<profileVersion>DEV</profileVersion>
<webXmlFolder>${id}</webXmlFolder>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profileVersion>1.0.0-RC1</profileVersion>
<webXmlFolder>${id}</webXmlFolder>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profileVersion>1.0.0-Final</profileVersion>
<webXmlFolder>${id}</webXmlFolder>
</properties>
</profile>
</profiles>
我有这样的Maven结构:
的src /主/配置/默认/ WEB-INF / web.xml中
的src /主/配置的/ dev / WEB-INF / web.xml中
的src /主/配置/测试/ WEB-INF / web.xml中
的src /主/配置/ PROD / WEB-INF / web.xml中
的src /主/ web应用/ WEB-INF /
我的任务是在构建时将指定的web.xml设置为webapp / WEB-INF,具体取决于指定的配置文件。如果未指定配置文件,则web.xml将从默认文件夹进行复制。
我有插件,但它不起作用。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-prod-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.outputDirectory}/classes/WEB-INF</outputDirectory>
<resources>
<resource>
<directory>src/main/config/${webXmlfolder}/WEB-INF</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
有什么想法吗?我花了很多时间处理这个问题,现在我很困惑。
答案 0 :(得分:5)
好的,现在一切正常。这是我的最终代码,有效:
<properties>
<webXmlFolder>default</webXmlFolder>
<profileVersion>defaultVersion</profileVersion>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<profileVersion>DEV</profileVersion>
<webXmlFolder>dev</webXmlFolder>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profileVersion>1.0.0-RC1</profileVersion>
<webXmlFolder>test</webXmlFolder>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profileVersion>1.0.0-Final</profileVersion>
<webXmlFolder>prod</webXmlFolder>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-web.xml</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${basedir}/target/classes/WEB-INF</outputDirectory>
<resources>
<resource>
<directory>src/main/config/${webXmlFolder}/WEB-INF</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>