2010-05-11 27 views
7

Tôi cần chỉnh sửa POM khi chạy. Tôi đã sử dụng Dom4j để đọc pom và sau đó thiết lập một số dữ liệu. Nhưng tôi cần biết nếu tồn tại một hình thức khác để làm điều này. Tồn tại một tiện ích maven cho việc này?Làm thế nào để chỉnh sửa POM maven trong thời gian chạy?

+0

Bạn có muốn sửa đổi một POM trong bộ nhớ? Bạn có cần ghi nó vào hệ thống tập tin không? –

+0

Tôi nghĩ tôi đã hỏi cùng một câu hỏi một lần. [Ở đây] (http://stackoverflow.com/questions/2131365/is-there-a-java-class-that-generates-a-pom-xml-file) Hy vọng nó sẽ giúp. – Random

Trả lời

1

Tùy thuộc vào những gì bạn đang thay đổi, có thể có trình bổ sung maven. Ví dụ: maven release plugin cập nhật thông tin phiên bản trong tệp pom.xml và kiểm tra các thay đổi trong điều khiển phiên bản.

Hãy thử tìm kiếm tác vụ cụ thể mà bạn đang cố gắng thực hiện (ví dụ: "cập nhật số phiên bản plugin maven") thay vì "sửa đổi pom.xml" chung chung hơn.

9

Sử dụng MavenXpp3Reader để đọc và MavenXpp3Writer để viết Model đối tượng. Ví dụ đơn giản:

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); 

Và lưu ý rằng mọi nhận xét, khoảng trống hoặc đường trắng sẽ bị xóa khỏi tệp.

+0

cho những người khác: maven-model.jar có các lớp được tham chiếu ở trên –

+0

Nó cũng sắp xếp lại thứ tự các nút. –

0

Mã này làm việc cho tôi:

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

Các vấn đề liên quan