我很擅长做"时髦的东西"与maven和我陷入了困境。我有两个需要部署的独立服务器,每个服务器都是context.xml
我的文件结构是这样的:(虽然如果有更好的方式我可以改变它)
src/main/webapp/META-INF/context.xml
src/main/webapp/META-INF/context.devel.xml
src/main/webapp/META-INF/context.prod.xml
根据部署目标,我想使用相应的context.TARGET.xml
文件。
我知道我需要设置两个不同的构建配置文件,例如:
<profiles>
<profile>
<id>prod</id>
</profile>
<profile>
<id>devel</id>
</profile>
</profiles>
但是从这里我对最佳解决方案的含义感到困惑。我理解使用war插件我可以排除context.xml
,但从那时起我就不知所措。
是否只有一种方法可以让我的context.xml
中有一个变量,我可以拥有maven&#34;写&#34;而不是拥有2个不同的配置文件。
有什么建议吗?
答案 0 :(得分:4)
以下是一些提示。
context.xml
。context.xml
中的服务器特定条目。例如:$ {myServer}或$ {dbUser} <profiles>
<profile>
<id>prod</id>
<properties>
<myServer>srv-prod.yourcompany.com</myServer>
<dbUser>james</dbUser>
</properties>
</profile>
<profile>
<id>devel</id>
<properties>
<myServer>srv-devel.yourcompany.com</myServer>
<dbUser>richard</dbUser>
</properties>
</profile>
</profiles>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
<webResources>
<resource>
<directory>src/main/webapp/META-INF</directory>
<targetPath>/META-INF</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
mvn -Pprod clean package
。或者在IDE中激活所需的配置文件。 devl
代替使用-Pdevl
。答案 1 :(得分:0)
You could use maven resource filtering to explicitly include or exclude specific files from the process-resources phase of the Maven build life cycle.
<profiles>
<profile>
<id>prod</id>
<resources>
<resource>
<directory>src/main/resources/META-INF</directory>
<filtering>true</filtering>
<includes>
<include>**/context.prod.xml</include>
</includes>
</resource>
</resources>
</profile>
<profile>
<id>devel</id>
<resources>
<resource>
<directory>src/main/resources/META-INF</directory>
<filtering>true</filtering>
<includes>
<include>**/context.devl.xml</include>
</includes>
</resource>
</resources>
</profile>
</profiles>
The documentation can be found here.