Roy*_*yce 6 maven-2 template-engine
我有一个看起来像这样的maven应用程序
application_name/
module1
src/main/resources
file_snippet.xml
module2
src/main/resources
file_snippet.xml
module3
src/main/resources
file.xml
Run Code Online (Sandbox Code Playgroud)
file.xml应该是这样的
<workflow>
<action>
<%= module1/src/main/resources/file_snippet.xml %>
</action>
<action>
<%= module2/src/main/resources/file_snippet.xml %>
</action>
</workflow>
Run Code Online (Sandbox Code Playgroud)
我想在构建之前将module2和module2中的file_snippet.xml的内容包含到module3的file.xml中.这在maven有可能吗?我可以使用某种模板语言或插件吗?
我也想了解 Maven 的一些模板引擎,但也许你一开始并不需要 Maven。
有一种方法可以在 xml 文件中包含另一个 xml 文件: http://bobcat.webappcabaret.net/javachina/faq/xml_01.htm#dtd_Q408
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xmlfrag SYSTEM "xmlfrag.txt" >
<!ELEMENT root (tag1, tag2) >
<!ELEMENT tag1 (childtag) >
<!ELEMENT tag2 (childtag) >
<!ELEMENT childtag (#PCDATA) >
<!ATTLIST childtag att NMTOKEN #REQUIRED >
]>
<root>
&xmlfrag;
</root>
xmlfrag.txt(well formed xml fragment without xml decl)
<tag1>
<childtag att="child1">text1</childtag>
</tag1>
<tag2>
<childtag att="child2">text2</childtag>
</tag2>
Run Code Online (Sandbox Code Playgroud)
否则,为了合并Maven 中的依赖项/模块之间的 xml 资源,您可以使用 maven-shade-plugin (使用资源转换器)。
在你的情况下:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>file.xml</resource>
<!-- Add this to enable loading of DTDs
<ignoreDtd>false</ignoreDtd>
-->
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
将 module1/src/main/resources/file.xml 和 module2/src/main/resources/file.xml (取决于依赖项)合并到 module3/src/main/resources/file.xml 中。
| 归档时间: |
|
| 查看次数: |
2079 次 |
| 最近记录: |