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?
Respuesta
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".
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.
para otros: el maven-model.jar tiene las clases mencionadas anteriormente –
También reorganiza el orden de los nodos. –
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);
}
}
HTH
- 1. Maven parent pom vs modules pom
- 2. Spring Hibernate maven POM
- 3. En Maven, ¿cómo puedo construir dinámicamente un valor de propiedad en tiempo de ejecución?
- 4. Maven Super POM
- 5. dependencia no encontrada en tiempo de ejecución maven
- 6. Dependencias de actualización de Maven en POM
- 7. agregando recursos adicionales a un maven pom
- 8. Cómo convertir build.xml al archivo maven pom?
- 9. ¿Cómo se editan los archivos Maven pom?
- 10. Maven - Parent Pom - Child Herencia
- 11. ¿puedo especificar un proyecto maven.artifactId en tiempo de ejecución?
- 12. Maven: POM padre no resoluble
- 13. Maven - Varias compilaciones en una sola pom
- 14. cómo escapar '&' en los valores de propiedad de maven pom
- 15. Usar datos cifrados en Maven pom
- 16. Maven POM-Editor: Falta gráfico de dependencia
- 17. Establecer plugin surefire Configuración regional en el archivo Maven pom
- 18. Generando un POM Maven de un proyecto existente?
- 19. Cómo compartir fragmentos POM entre diferentes POM
- 20. Definir perfiles maven fuera de POM
- 21. maven exclude plugin defined in parent pom
- 22. Maven no puede encontrar el padre POM
- 23. Maven-webstart-plugin para incluir dependencias de tiempo de ejecución
- 24. ¿Dónde está super pom para maven 3?
- 25. ámbito de tiempo de ejecución de Maven y dependencia cíclica
- 26. Propiedades de acceso maven definidas en el pom
- 27. ¿Cómo puedo ubicar el POM que solicita un POM faltante?
- 28. ¿Es posible dividir los archivos maven pom?
- 29. Repositorio de Maven para el tiempo de ejecución Eclipse BIRT
- 30. cómo obtener el super pom basedir en un pom módulo de niño?
¿Desea modificar un POM en la memoria? ¿Necesita escribirlo en el sistema de archivos? –
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