Me gustaría leer un pom.xml en código Java. Me pregunto si hay una biblioteca para eso, así que puedo tener un iterador para diferentes secciones, por ejemplo, dependenes, complementos, etc. Quiero evitar construir un analizador a mano.¿Hay una biblioteca para leer los archivos maven2/3 pom xml?
Respuesta
Puede intentar MavenXpp3Reader que es parte de maven-model. Código de ejemplo:
MavenXpp3Reader reader = new MavenXpp3Reader();
Model model = reader.read(new FileReader(mypom));
En primer lugar, estoy asumiendo que no está ejecutando dentro de un plugin de Maven, ya que hay maneras más fáciles de lograr que con las API disponibles allí.
La solución MavenXpp3Reader
publicada anteriormente le permitirá leer el POM fácilmente, sin embargo, no tiene en cuenta la herencia del padre y la interpolación de las expresiones.
Para eso, necesitarías usar la clase ModelBuilder.
El uso de este es bastante simple, por ejemplo, de Archiva es este fragmento de código:
ModelBuildingRequest req = new DefaultModelBuildingRequest();
req.setProcessPlugins(false);
req.setPomFile(file);
req.setModelResolver(new RepositoryModelResolver(basedir, pathTranslator));
req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
Model model;
try
{
model = builder.build(req).getEffectiveModel();
}
catch (ModelBuildingException e)
{
...
}
Usted debe hacer dos cosas para ejecutar esto, sin embargo:
- instantiate y alambre de una instancia de
ModelBuilder
incluyendo sus campos privados - use uno de los resolvedores de Maven para encontrar los POM originales, o escriba los suyos (como es el caso en el fragmento de arriba)
La mejor manera de hacerlo depende del marco DI que ya esté utilizando, o si simplemente desea incrustar el contenedor predeterminado de Maven.
Esto depende de lo que esté tratando de lograr. Si solo quieres tratarlo como un XML con archivos XML incrustados, sigue las sugerencias que ya se ofrecen.
Si está buscando implementar alguna forma de funcionalidad Maven en su aplicación, puede probar la nueva biblioteca aether. No lo he usado, pero parece lo suficientemente simple como para integrarlo y debería ofrecer la funcionalidad Maven con poco esfuerzo de su parte.
BTW, esta biblioteca es una biblioteca Maven 3, no Maven 2 (como se especifica en la etiqueta). No sé si eso hace mucha diferencia para usted
¿Puedes leer las configuraciones de los complementos con éter? –
Guau, tema zombie. De todos modos, como dije, depende de lo que trates de hacer. Si solo analizara la configuración externamente a maven, usaría un analizador XML normal. Si está escribiendo un complemento, me imagino que puede hacerlo, pero puede haber bibliotecas más nuevas disponibles (he estado fuera del desarrollador de Maven desde hace un tiempo). Puede consultar algunos de los documentos del complemento: http://maven.apache.org/plugin-developers/ PS. Noté que el enlace a éter ya no funciona. El nuevo enlace es - http://www.eclipse.org/aether/ – GKelly
- 1. ¿Hay una buena biblioteca .NET para leer archivos RAW?
- 2. ¿Hay una biblioteca Java para analizar los archivos PO gettext?
- 3. ¿Cómo usar EMF para leer archivos XML?
- 4. ¿Cómo se editan los archivos Maven pom?
- 5. Biblioteca para leer/escribir archivos pbxproj/xcodeproj?
- 6. ¿Hay una manera "correcta" para leer archivos CSV
- 7. Herramienta o biblioteca para comparar archivos xml
- 8. ¿Hay una biblioteca de Python para generar archivos .ico?
- 9. ¿Dónde encontrar una biblioteca java para leer archivos vcard?
- 10. ¿Hay una biblioteca Java para procesar archivos ONIX?
- 11. ¿Es posible dividir los archivos maven pom?
- 12. ¿Hay un AssertEquals para probar archivos XML?
- 13. ¿Alguna buena biblioteca para leer y escribir archivos csv?
- 14. ¿Hay una biblioteca para descomprimir archivos .Z usando VB.NET?
- 15. LINQ para leer XML
- 16. Excepción: No hay protocolo al leer XML
- 17. ¿Hay una API en .net para leer el archivo de documentación de comentario XML
- 18. ¿Cómo leer y escribir archivos xml?
- 19. ¿Hay una biblioteca de Python para editar los archivos de msword doc?
- 20. ¿Existe alguna biblioteca de código abierto para ayudar a leer los archivos binarios compilados de Microsoft?
- 21. Bibliotecas para generar archivos docx (Open XML)
- 22. ¿hay una biblioteca del sistema de archivos ext2 usermode para Windows?
- 23. ¿Hay una biblioteca LINQ para C++?
- 24. ¿Hay una biblioteca de hashmap para JavaScript?
- 25. ¿Cómo leer desde archivos xml comprimidos en código Scala?
- 26. ¿Hay una biblioteca de Cálculo para JavaScript?
- 27. ¿Hay una biblioteca de JavaScript (u otra) para leer las licencias de conducir?
- 28. Biblioteca .NET para leer marcos de video
- 29. ¿Hay una biblioteca (C#) que creará feeds para los servicios web de Amazon Marketplace?
- 30. Biblioteca XML-RPC para C++
Por lo que tengo entendido, esta es la forma de hacerlo de Maven 3. ¿Cuál sería el enfoque de Maven 2.2.x, podría mostrarnos? Gracias por adelantado. – carlspring
las bibliotecas son compatibles, por lo que recomendaría utilizar las bibliotecas de maven 3 para incrustarlas independientemente. Si realmente necesita utilizar las bibliotecas de Maven 2, puede encontrar un ejemplo aquí: https://github.com/brettporter/centrepoint/blob/master/centrepoint/modules/maven-importer/src/main/java/com/ effectivemaven/centerpoint/maven/repository/CentralRepositoryService.java –
¡Gracias por esa aclaración! ¡Muy apreciado! – carlspring