Pregunta ¿Cómo editar un POM maven en tiempo de ejecución?


Necesito editar POM en tiempo de ejecución. Usé Dom4j para leer pom y después de eso, establecí algunos datos. Pero necesito saber si existe otra forma para hacer esto. ¿Existe una herramienta maven para esto?


8
2018-05-11 14:29


origen


Respuestas:


Utilizar MavenXpp3Reader para leer y MavenXpp3Writer escribir Model objetos. Ejemplo simple:

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

Y tenga en cuenta que cualquier comentario, espacios en blanco adicionales o líneas se eliminarán del archivo.


10
2017-12-11 14:37



Dependiendo de lo que está cambiando, puede haber complementos maven. Por ejemplo, el maven lanzamiento el plugin actualiza la información de la versión en el pom.xml y verifica los cambios en el control de la versión.

Intente buscar la tarea específica que está intentando lograr (por ejemplo, "actualización del número de versión del complemento maven") en lugar de la más genérica "modificar pom.xml".


1
2018-05-11 19:00



Este código funciona para mí:

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
2018-01-19 00:43