1

使用 maven 格式化单个 XML 文件的最简单方法是什么,即我正在寻找一个使 XML 文件可读的 maven 插件。我已经尝试过http://code.google.com/p/xml-formatter/但由于某种原因我很难让它继续下去,而且我认为这样的东西将成为插件的一部分那已经在Maven Central上还是我错了?有没有我可以委托的蚂蚁任务?

编辑:

如果现在尝试https://github.com/benalexau/xml-formatter这似乎是上面提到的 xml-formatter 插件的最新版本。我通过使用以下方法将其部署到我的本地 nexus 存储库来使其工作:

  • 从https://github.com/benalexau/xml-formatter下载 ZIP 文件
  • 提取 zip://releases/org/technicalsoftwareconfiurationmanagement/maven-plugin/tscm-maven-plugin/ version-number /中的 .jar 和 .pom 文件
  • 使用以下 maven 命令(在 Linux 上)将插件上传到我的 nexus 存储库:
    mvn部署:部署文件\
    -Durl="http://my/nexus/repo" \
    -DrepositoryId="第 3 方" \
    -Dfile=tscm-maven-plugin-2.1.0.20111230154050.jar \
    -Dpackaging=maven 插件\
    -DpomFile=tscm-maven-plugin-2.1.0.20111230154050.pom
    
  • 将以下内容添加到我的项目 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
    

但是...这似乎破坏了我的soap-ui xml文件,将CDATA部分中的“<”和“>”替换为< 和> 即插件并不真正适用于更复杂的用例。

4

3 回答 3

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>&#xa;</xsl:text>
    <xsl:if test="comment()">
        <xsl:apply-templates select="comment()" />
        <xsl:text>&#xa;</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>

有点笨拙,也许我将来会为这个用例创建一个特定的,因为 Eclipse 不允许在项目级别保存时设置 XML 代码样式。

于 2015-04-26T22:21:59.463 回答
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>
于 2014-02-25T21:35:12.957 回答
0

使用xml-format-maven-plugin,它可从 Maven Central 获得并在此处记录。当前版本可以正确处理复杂的 XML 文件,包括CDATA.

(免责声明:我是xml-formatter原提问者提到的作者,也是xml-format-maven-plugin继任者)

于 2016-06-07T02:18:15.907 回答