使用XmlSlurper读取pom文件以查找合并冲突

时间:2014-01-06 16:46:50

标签: groovy xmlslurper

寻求XmlSlurper的一些帮助来获取pom.xml文件中的所有合并冲突。

我想获取包含合并冲突标记的所有标记(<<<<< ===>>>>)并更新文件以使用更高版本号。

因此,生成的文件只有1.2-SNAPSHOT,其中包含冲突标记并删除了版本1.1-SNAPSHOT。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany</groupId>
  <artifactId>myproj</artifactId>
<<<<<<< HEAD
  <version>1.2-SNAPSHOT</version>
=======
  <version>1.1-SNAPSHOT</version>
>>>>>>> myBranch
  <packaging>pom</packaging>
  <name>myproj</name>

    <dependencies>
        <dependency>
            <groupId>com.child1</groupId>
            <artifactId>child1proj</artifactId>
<<<<<<< HEAD
            <version>1.2-SNAPSHOT</version>
=======
            <version>1.1-SNAPSHOT</version>
>>>>>>> myBranch
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

1 个答案:

答案 0 :(得分:1)

Tim说你不能在你的文件上使用XmlSlurper。但是,您可以在解析之前操作文本。

如果将标记转换为自定义xml节点,例如

xml = xml.replace("<<<<<<< HEAD", "<patch><part branch='HEAD'>")
xml = xml.replace("=======", "</part><part branch='myBranch'>")
xml = xml.replace(">>>>>>> myBranch", "</part></patch>")

你可以然后使用XmlSlurper来阅读文本。

对于每个“补丁”,您可以决定要保留哪个“部分”。删除不必要的节点并将其他节点的子节点迁移到父节点应该可以使您接近所需的节点。