使用maven格式化单个XML文件的最简单方法是什么,即我正在寻找一个使XML文件具有人类可读性的maven插件。我已经尝试了http://code.google.com/p/xml-formatter/但是由于某种原因,我正在努力让它继续下去,而且我认为像这样的东西会成为已经在Maven Central上的插件的一部分,或者我错了吗?是否有可以委托的蚂蚁任务?
修改
如果现在尝试https://github.com/benalexau/xml-formatter,它似乎是上面提到的xml-formatter插件的最新版本。我通过使用以下方法将其部署到我的本地nexus存储库来实现它:
mvn deploy:deploy-file \ -Durl="http://my/nexus/repo" \ -DrepositoryId="3rd party" \ -Dfile=tscm-maven-plugin-2.1.0.20111230154050.jar \ -Dpackaging=maven-plugin \ -DpomFile=tscm-maven-plugin-2.1.0.20111230154050.pom
<plugin>
<groupId>org.technicalsoftwareconfigurationmanagement.maven-plugin</groupId>
<artifactId>tscm-maven-plugin</artifactId>
<version>2.1.0.20111230154050</version>
<configuration>
<includes>
<include>my-xml-file.xml</include>
</includes>
<excludes>
<exclude>/target/</exclude>
</excludes>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>xmlFormatter</goal>
</goals>
</execution>
</executions>
</plugin>
mvn tscm:xmlFormatter
然而......这似乎通过替换“&lt;”来破坏我的soap-ui xml文件和“&gt;”在CDATA部分中&amp; lt;和&amp; gt;即插件并不适用于更复杂的用例。
答案 0 :(得分:2)
您可以调整我的cleanpom-maven-plugin来做您需要的事情,虽然它目前不是为此而设计的,但您可以进行就地清理。我刚刚创建了一个可以显示这个的单元测试。
你需要一个可以清理的XSLT并放入JAR文件的META-INF里面
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xslt"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="xml" indent="yes" encoding="UTF-8"
xalan:indent-amount="4" />
<xsl:strip-space elements="*" />
<!-- default copy -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:text>
</xsl:text>
<xsl:if test="comment()">
<xsl:apply-templates select="comment()" />
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:apply-templates select="*" />
</xsl:template>
</xsl:stylesheet>
然后添加以下插件
<plugin>
<groupId>net.trajano.mojo</groupId>
<artifactId>cleanpom-maven-plugin</artifactId>
<version>1.0.6</version>
<executions>
<execution>
<id>clean-web-xml</id>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<pomFile>src/main/webapp/WEB-INF/web.xml</pomFile>
<xsltFileList>clean.xslt</xsltFileList>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>cleanxslt</artifactId>
</dependency>
</dependencies>
有点kludgey,也许我将来会为这个用例创建一个特定的,因为Eclipse不允许在项目级别保存时设置XML代码样式。
答案 1 :(得分:0)
使用 xml-maven-plugin ,在http://mojo.codehaus.org/xml-maven-plugin/transformation.html上查看
您可以使用xsl:stylesheet和xsl:transform
将XSLT转换应用于XML文件<stylesheet>src/main/stylesheet.xsl</stylesheet>
答案 2 :(得分:0)
使用 xml-format-maven-plugin ,可从Maven Central和documented here获取。当前版本正确处理复杂的XML文件,包括concatMap
。
(免责声明:我是原始提问者提及的CDATA
的作者,以及xml-formatter
继承者