开发者

How to edit a maven POM at runtime?

开发者 https://www.devze.com 2022-12-30 09:30 出处:网络
I need editing POM at runtime.I used Dom4j for read pom and after that set some data.But i need kno开发者_开发技巧w if exist another form for to do this. Exist a maven utilities for this?Use MavenXpp3

I need editing POM at runtime. I used Dom4j for read pom and after that set some data. But i need kno开发者_开发技巧w if exist another form for to do this. Exist a maven utilities for this?


Use MavenXpp3Reader to read and MavenXpp3Writer to write Model objects. Simple example:

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

And notice that any comment, extra white spaces or lines will be removed from the file.


Depending on what you are changing, there may be maven plugins. For example the maven release plugin updates the version information in the pom.xml and checks the changes into version control.

Try searching for the specific task you are trying to accomplish (e.g. "maven plugin version number update") rather than the more generic "modify pom.xml".


This code works for me:

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

0

精彩评论

暂无评论...
验证码 换一张
取 消