我需要在運行時編輯POM。我用Dom4j讀取pom,然後設置一些數據。但我需要知道是否存在另一種形式來做到這一點。存在一個Maven實用程序?如何在運行時編輯maven POM?
7
A
回答
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);
}
}
HTH
相關問題
- 1. 你如何編輯Maven pom文件?
- 2. 與Maven一起運行POM
- 3. 如何在運行時編輯標籤
- 4. 如何在運行時設置Maven artifactId?
- 5. 在運行時編輯ControlTemplate
- 6. 通過編輯pom在Maven項目中進行Java文件編碼
- 7. Maven - 運行mvn help的問題:effective-pom
- 8. 如何編輯json數據運行時?
- 9. 如何使用Maven POM文件運行testNG測試
- 10. 運行時編輯類
- 11. maven運行從內部pom的maven安裝
- 12. 如何在編輯器上運行redis?
- 13. 如何運行測試maven?
- 14. Maven POM編輯器:依賴關係圖缺失
- 15. Eclipse Maven錯誤:pom編輯器中的org.apache.maven.plugin.jar.JarMojo錯誤
- 16. Maven不斷更改項目設置 - 如何編輯有效的POM文件?
- 17. 如何在pom文件中配置maven
- 18. 如何在Maven POM中配置HSQLDB 2.2.5?
- 19. 如何使JTable單元在運行時可編輯或不可編輯?
- 20. Maven POM錯誤-POM丟失
- 21. PLSQL:在運行時編輯光標
- 22. Flex Datagrid可編輯在運行時
- 23. 在運行時編輯i18屬性
- 24. 在vba運行時凍結excel編輯
- 25. 在運行時編輯動態記錄
- 26. 在運行時編輯視圖
- 27. WPF - 編輯資源在運行時
- 28. 如何編輯在運行時在C#中創建的控件?
- 29. 僅通過激活在父POM中運行Maven目標
- 30. 在maven子pom上重寫Jacoco執行
是否要修改內存中的POM?你需要將它寫入文件系統嗎? – 2010-05-11 14:51:19
我想我曾經問過同樣的問題。 [這裏](http://stackoverflow.com/questions/2131365/is-there-a-java-class-that-generates-a-pom-xml-file)希望它有幫助。 – Random 2010-05-12 14:15:24