Как редактировать maven POM во время выполнения? - PullRequest
8 голосов
/ 11 мая 2010

Мне нужно редактировать POM во время выполнения. Я использовал Dom4j для чтения пом и после этого установил некоторые данные. Но мне нужно знать, существует ли другая форма для этого. Существуют ли maven утилиты для этого?

Ответы [ 3 ]

10 голосов
/ 11 декабря 2011

Используйте 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);

И обратите внимание, что любой комментарий, лишние пробелы или строки будут удалены из файла.

1 голос
/ 11 мая 2010

В зависимости от того, что вы меняете, могут быть плагины maven. Например, плагин maven release обновляет информацию о версии в файле pom.xml и проверяет изменения в управлении версиями.

Попробуйте поискать конкретную задачу, которую вы пытаетесь выполнить (например, «обновление номера версии плагина maven»), а не более общий «modify pom.xml».

0 голосов
/ 19 января 2017

У меня работает этот код:

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

НТН

...