我想让Maven在将web.xml
文件包含在最终 war 中之前对其进行处理。这将取决于配置文件,因此编辑源XML不是一种选择。
我使用xml-maven-plugin
将新元素添加到文件中(您可以在this question中获取其他详细信息),并且已成功实现它,让插件进行转换target/generated-resources/xml/xslt
中的文件(我想这是一个默认的目标目录)。
现在我需要指示Maven在打包应用程序时接收转换后的文件(而不是src/main/webapp/WEB-INF/
中的文件)。
但是我被困在这里,我不知道该怎么走。
作为旁注,我将xml-maven-plugin
绑定到process-resources
阶段。
整个插件配置在最后。
随意建议另一个文件夹结构,配置更改,或者即使这不是正确的方法,等等 - 这是一个测试设置,我用它来学习Maven。< / p>
<profile>
<id>release-production</id>
<activation>
<activeByDefault>true</activeByDefault></activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>transform</goal>
</goals>
<phase>process-resources</phase>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>src/main/webapp/WEB-INF</dir>
<includes>
<include>web.xml</include>
</includes>
<stylesheet>src/main/resources-xml/webxml-transform.xsl</stylesheet>
</transformationSet>
</transformationSets>
</configuration>
</plugin>
</plugins>
</build>
</profile>
我已经看到问题的answer:How to transform web.xml during packaging with maven?,但是我需要将整个XML元素添加到web.xml
,所以我想使用属性不会工作在这里(至少,当我尝试使用XML内容定义属性时,我遇到了错误。)
答案 0 :(得分:0)
这比我想象的要容易(虽然我想这可以通过更简单的配置来完成) 当然,我愿意接受建议。
xml-maven-plugin在TransformationSet
元素中有一个(未记录的?)附加属性:<outputDir />
(这是我的完整插件配置)。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>transform</goal>
</goals>
<phase>process-resources</phase>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>src/main/webapp/WEB-INF</dir>
<includes>
<include>web.xml</include>
</includes>
<stylesheet>src/main/resources-xml/webxml-transform.xsl</stylesheet>
<outputDir>target/generated-resources</outputDir>
</transformationSet>
</transformationSets>
</configuration>
</plugin>
告诉maven-war-plugin新的(转换的)web.xml
文件所在的位置:
将xml-maven-plugin
绑定到 process-resources 阶段后,我知道当 war 打包时,已转换的web.xml
将会存在
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>target/generated-resources/web.xml</webXml>
</configuration>
</plugin>