0

寻找有关 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>
4

1 回答 1

1

正如蒂姆所说,您不能在文件上使用 XmlSlurper。但是,您可以在解析之前操作文本。

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

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

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

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

于 2014-01-07T01:07:55.767 回答