2014-01-06 1 views
0

XmlSlurper에 대한 도움말을보고 pom.xml 파일의 모든 병합 충돌을 찾습니다.XmlSlurper를 사용하여 병합 충돌을위한 pom 파일 읽기

병합 충돌 표식 (< < < === >>>)이있는 모든 태그를 가져 와서 상위 버전 번호를 사용하도록 파일을 업데이트하고 싶습니다.

그래서 결과 파일에는 충돌 마커가있는 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

'XmlSlurper'는 유효하지 않은 Xml :-(사용할 수 없습니다. –

답변

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 텍스트를 읽을 수 있습니다.

각 "패치"에 대해 유지할 "파트"를 결정할 수 있습니다. 불필요한 노드를 제거하고 다른 노드의 하위 노드를 상위 노드로 마이그레이션하면 원하는 결과를 얻을 수 있습니다.