2010-05-11 23 views
7

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?¿Cómo editar un POM maven en tiempo de ejecución?

+0

¿Desea modificar un POM en la memoria? ¿Necesita escribirlo en el sistema de archivos? –

+0

Creo que hice la misma pregunta una vez. [Aquí] (http://stackoverflow.com/questions/2131365/is-there-a-java-class-that-generates-a-pom-xml-file) Espero que ayude. – Random

Respuesta

1

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

Intenta buscar la tarea específica que estás 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".

9

Utilice MavenXpp3Reader para leer y MavenXpp3Writer para 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, espacio en blanco adicional o líneas se eliminarán del archivo.

+0

para otros: el maven-model.jar tiene las clases mencionadas anteriormente –

+0

También reorganiza el orden de los nodos. –

0

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

Cuestiones relacionadas