我有一个深度和文件夹名称未知的目录。
>A
-> AB
--> configuration.xml
--> ABC
---> configuration.xml
-> AD
--> configuration.xml
-> allconfigurations.xml
我需要一个maven插件来连接所有configuration.xml
个文件并在根目录中创建allconfigurations.xml
文件。不幸的是文件夹名称和深度未知。在pom.xml
文件中完成它而不需要任何其他文件会很棒。
答案 0 :(得分:1)
只是为您快速谷歌:带有XmlAppendingTransformer的maven-shade-plugin可以提供帮助。
示例配置为here
答案 1 :(得分:1)
虽然苦苦挣扎,但我意识到真正的问题是为编译的allconfigurations.xml
文件添加页眉和页脚,因为每个configuration.xml
文件都是一个片段,当我将它们连在一起时产生的xml是不是有效的xml。
这是案例; xml文件类似于:
<Configuration xmlns="abc">
...
<connectionTimeoutInMs>240000</connectionTimeoutInMs>
<socketTimeoutInMs>240000</socketTimeoutInMs>
<persist>false</persist>
<internal>false</internal>
...
</Configuration>
并且放置其中许多是无效的,因此结果xml必须类似于;
<AllConfigurations xmlns="abc">
...
<Configuration xmlns="abc">
...
</Configuration >
...
<AllConfigurations xmlns="abc">
所以必须将第一行和最后一行添加到结果中。
这是我提出的解决方案;
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>default-cli</id>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<!--<phase>process-resources</phase>-->
<!--<phase>compile</phase>-->
<configuration>
<target>
<concat destfile="${project.basedir}/.../allConfigurations.xml"
force="yes">
<fileset dir="${project.basedir}/...">
<include name="xmlHeaderForConfiguration"></include>
</fileset>
<fileset dir="${project.basedir}/...">
<include name="**/configuration.xml"></include>
</fileset>
<fileset dir="${project.basedir}/...">
<include name="xmlFooterForConfiguration"></include>
</fileset>
</concat>
</target>
</configuration>
</execution>
</executions>
</plugin>
其中xmlHeaderForConfiguration是包含内容的文件; <AllConfigurations xmlns="abc">
和xmlHeaderForConfiguration有</AllConfigurations>