Package a Maven-transformed web.xml in the final war
我想让 Maven 处理 web.xml 文件,然后将其包含在最终 war 中。这将取决于配置文件,因此编辑源 XML 不是一个选项。
我正在使用 xml-maven-plugin 将新元素添加到文件中(您可以在这个问题中获得更多详细信息),并成功实现它,让插件将转换后的文件放入 target/generated-resources/xml/xslt 中(我猜这是一个默认的目标目录)。
现在我需要指示 Maven 在打包应用程序时获取转换后的文件(而不是 src/main/webapp/WEB-INF/ 中的那个)。
但我被困在这里,我不知道如何走得更远。
附带说明,我将 xml-maven-plugin 绑定到 process-resources 阶段。
整个插件配置如下。
请随意建议其他文件夹结构、配置更改,或者即使这不是正确的方法等等 – 这是一个测试设置,我正在使用它来学习 Maven。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<profile>
<id>release-production</id> true</activeByDefault></activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> xml-maven-plugin</artifactId> <version>1.0</version> <executions> <execution> <goals> <goal>transform</goal> </goals> <phase>process-resources</phase> </execution> </executions> <configuration> |
我已经看到了问题的答案:How to transform web.xml during packaging with maven?,但是我需要将整个 XML 元素添加到 web.xml,所以我猜这里使用属性不起作用(至少,当我尝试使用 XML 内容定义属性时出现错误。
这比我想象的要容易(尽管我想这可以通过更简单的配置来完成)。
当然,我愿意接受建议。
第一步:为xml转换器配置自定义输出目录
xml-maven-plugin 在其 TransformationSet 元素中有一个(未记录的?)附加属性:<outputDir />(这是我的完整插件配置)。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<plugin>
<groupId>org.codehaus.mojo</groupId> xml-maven-plugin</artifactId> <version>1.0</version> <executions> <execution> <goals> <goal>transform</goal> </goals> <phase>process-resources</phase> </execution> </executions> <configuration> |
第二步:配置war插件读取另一个web.xml文件
告诉 maven-war-plugin 新的(转换后的)web.xml 文件在哪里:
将 xml-maven-plugin 绑定到 process-resources 阶段后,我知道转换后的 web.xml 将在打包 war 时出现。
1
2 3 4 5 6 7 |
<plugin>
maven-war-plugin</artifactId> <configuration> |
来源:https://www.codenong.com/25960351/