2010-05-11 91 views
7

我需要在運行時編輯POM。我用Dom4j讀取pom,然後設置一些數據。但我需要知道是否存在另一種形式來做到這一點。存在一個Maven實用程序?如何在運行時編輯maven POM?

+0

是否要修改內存中的POM?你需要將它寫入文件系統嗎? – 2010-05-11 14:51:19

+0

我想我曾經問過同樣的問題。 [這裏](http://stackoverflow.com/questions/2131365/is-there-a-java-class-that-generates-a-pom-xml-file)希望它有幫助。 – Random 2010-05-12 14:15:24

回答

1

根據你的變化,可能會有maven插件。例如,maven release插件更新pom.xml中的版本信息並檢查更改爲版本控制。

嘗試搜索您要完成的特定任務(例如「maven插件版本號更新」),而不是更通用的「修改pom.xml」。

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具有上面引用的類 – 2012-01-11 19:15:21

+0

它還重新組織節點的順序。 – 2016-02-19 11:47:19

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