2010-05-11 8 views
7

런타임에 POM을 편집해야합니다. 내가 읽기 pom에 대한 Dom4j을 사용하고 그 후 일부 데이터를 설정합니다. 그러나 이것을하기위한 또 다른 형식이 존재하는지 알아야합니다. 이것에 대한 maven 유틸리티가 있습니까?런타임에 Maven POM을 편집하는 방법은 무엇입니까?

+0

당신이 메모리에 POM을 수정 하시겠습니까? 파일 시스템에 기록해야합니까? –

+0

나는 한 번 같은 질문을 한 것 같아. [여기] (http://stackoverflow.com/questions/2131365/is-there-a-java-class-that-generates-a-pom-xml-file) 희망이 도움이됩니다. – Random

답변

1

변경 사항에 따라 메이븐 플러그인이있을 수 있습니다. 예를 들어, maven release 플러그인은 pom.xml의 버전 정보를 업데이트하고 변경 사항을 버전 제어로 확인합니다.

보다 일반적인 "modify pom.xml"보다는 달성하려는 특정 작업 (예 : "maven plugin version number update")을 검색하십시오.

9

MavenXpp3Reader을 읽고 MavenXpp3Writer을 쓰면 Model 개체가됩니다. 간단한 예 :

String baseDir = "/your/project/basedir/"; 

//Reading 
MavenXpp3Reader reader = new MavenXpp3Reader(); 
Model model = reader.read(new FileInputStream(new File(baseDir, "/pom.xml"))); 

//Editing 
model.setUrl("http://stackoverflow.com"); 

//Writing 
MavenXpp3Writer writer = new MavenXpp3Writer(); 
writer.write(new FileOutputStream(new File(baseDir, "/pom.xml")), model); 

그리고 추가 공백이나 줄이 파일에서 제거됩니다.

+0

다른 사람 : maven-model.jar는 위에 참조 된 클래스를 가지고 있습니다. –

+0

또한 노드 순서가 재구성됩니다. –

0

이 코드는 나를 위해 작동 :

package or.jrichardsz; 

import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.Writer; 

import org.apache.maven.model.Model; 
import org.apache.maven.model.Plugin; 
import org.apache.maven.model.io.xpp3.MavenXpp3Reader; 
import org.apache.maven.model.io.xpp3.MavenXpp3Writer; 

public class TestMavenPomEdit { 

    public static void main(String[] args) throws Exception { 

     //read initial pom 
     Model model = parsePomXmlFileToMavenPomModel("C:\\Users\\User\\Desktop\\initial_pom.xml"); 

     //add some pom modification 
     Plugin plugin = new Plugin(); 
     plugin.setGroupId("com.jelastic"); 

     model.getBuild().addPlugin(plugin); 

     //write new pom 
     parseMavenPomModelToXmlString("C:\\Users\\User\\Desktop\\final_pom.xml", model); 

    } 

    public static Model parsePomXmlFileToMavenPomModel(String path) throws Exception { 

     Model model = null; 
     FileReader reader = null; 
     MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 
     reader = new FileReader(path); 
      model = mavenreader.read(reader); 
     return model; 

    } 

    public static void parseMavenPomModelToXmlString(String path,Model model) throws Exception { 
     MavenXpp3Writer mavenWriter = new MavenXpp3Writer(); 
     Writer writer = new FileWriter(path); 
     mavenWriter.write(writer, model); 
    }  

} 

TestMavenPomEdit.java

HTH

관련 문제