¿Cómo accedo a las propiedades maven definidas en el pom en un proyecto maven normal y en un proyecto maven plugin?Propiedades de acceso maven definidas en el pom
Respuesta
Puede analizar el archivo pom con JDOM (http://www.jdom.org/).
Maven ya tiene una solución para hacer lo que quiera:
Get MavenProject from just the POM.xml - pom parser?
por cierto: el primer éxito en la búsqueda de google;)
Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try {
reader = new FileReader(pomfile); // <-- pomfile is your pom.xml
model = mavenreader.read(reader);
model.setPomFile(pomfile);
}catch(Exception ex){
// do something better here
ex.printStackTrace()
}
MavenProject project = new MavenProject(model);
project.getProperties() // <-- thats what you need
Las respuestas de enlace único no se recomiendan aquí (sobre todo porque pueden volverse inútiles cuando el recurso vinculado desaparece). Al menos debe resumir la información del enlace para publicar aquí. –
He publicado accidentalmente el enlace incorrecto, es una publicación de stackoverflow, que no debería desaparecer;) – SWoeste
Pero estoy de acuerdo con usted, solo un enlace es un poco desagradable. Entonces, basado en la fuente del enlace, agregué algunos comentarios y la llamada al método que está buscando (última línea). – SWoeste
Esto se puede hacer con propiedades Java estándar en combinación con el complemento maven0-resource-plugin con filtrado habilitado en las propiedades. Para más información ver
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
Esto funcionará para el proyecto Maven estándares que en el plug-in proyecta
Establecer un System variable from Maven y en uso de Java following call
System.getProperty("Key");
enlace roto, ¿Puedes repararlo? –
Se corrigió el enlace roto. – Santosh
Esto solo funcionará si está ejecutando la compilación resultante de Maven, quizás usando maven-exec-plugin. Si solo está utilizando Maven para compilar el código, esto no funcionará. –
Uso del properties-maven-plugin para escribir pom específico properties
en un archivo en tiempo de compilación, y luego leer ese archivo en tiempo de ejecución.
En su pom.xml:
<properties>
<name>${project.name></name>
<version>${project.version}</version>
<foo>bar</foo>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile>${project.build.outputDirectory}/my.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Y luego, en .java:
java.io.InputStream is = this.getClass().getResourceAsStream("my.properties");
java.util.Properties p = new Properties();
p.load(is);
String name = p.getProperty("name");
String version = p.getProperty("version");
String foo = p.getProperty("foo");
Eso funcionó, pero hizo que Eclipse cayera en ** ciclo infinito de compilación/implementación a Tomcat ** (compilación -> generar propiedades my.properties -> recursos modificados -> compilación), así que tuve que cambiar la fase a 'compilar'. Sin embargo, no estoy seguro de si es una solución adecuada. –
@atoregozh sugirió usar los recursos de Guava en su lugar para cargar el archivo de propiedades. DE ACUERDO. Pero cambio revertido para mantener este ejemplo mínimo con API estándar. –
- 1. exportar todas las propiedades definidas del proyecto maven al archivo?
- 2. propiedades de lectura del archivo de Maven POM presentar
- 3. Maven parent pom vs modules pom
- 4. Maven Super POM
- 5. Spring Hibernate maven POM
- 6. Heredar propiedades de parent pom
- 7. Dependencias de actualización de Maven en POM
- 8. Maven no puede encontrar el padre POM
- 9. Establecer plugin surefire Configuración regional en el archivo Maven pom
- 10. Maven - Parent Pom - Child Herencia
- 11. Maven: POM padre no resoluble
- 12. Usar datos cifrados en Maven pom
- 13. Maven - Varias compilaciones en una sola pom
- 14. ¿Cómo establecer las propiedades de construcción desde un archivo en Maven POM?
- 15. Definir perfiles maven fuera de POM
- 16. Maven POM-Editor: Falta gráfico de dependencia
- 17. Volcar todas las propiedades definidas en el script Ant
- 18. agregando recursos adicionales a un maven pom
- 19. ¿Es posible dividir los archivos maven pom?
- 20. Cómo convertir build.xml al archivo maven pom?
- 21. ¿Dónde está super pom para maven 3?
- 22. ¿Cómo se editan los archivos Maven pom?
- 23. maven exclude plugin defined in parent pom
- 24. Maven propiedades de perfil no se "superior"
- 25. cómo escapar '&' en los valores de propiedad de maven pom
- 26. ¿Maven admite la herencia de propiedades?
- 27. ¿Cómo editar un POM maven en tiempo de ejecución?
- 28. Las propiedades de Maven en el proyecto de varios módulos se restablecen al valor predeterminado
- 29. ¿Cómo leer las propiedades de Maven de la prueba JUnit?
- 30. Cómo compartir fragmentos POM entre diferentes POM
Qué tipo de información está interesado? Si solo se trata de versiones o cosas similares, entonces probablemente sea una mejor idea [ponerlo en el manifiesto y leerlo desde allí] (http://stackoverflow.com/questions/2712970/how-to-get-maven-artifact- version-at-runtime/2713013 # 2713013). –
Hay una gran cantidad de publicaciones en Stack Overflow sobre esto: http://stackoverflow.com/search?q=read+pom+in+java, al menos, eche un vistazo antes de la publicación. SO edit helpers debería mostrarlos. Google también. –
Gracias chicos. Ahora me doy cuenta de que esto es realmente una mala práctica. Voy a probar otro enfoque. –