¿Es posible obtener una instancia de org.apache.maven.project.MavenProject
o alguna otra forma de objeto del POM desde solo el archivo pom.xml?Obtenga MavenProject solo del POM.xml - pom parser?
Gracias de antemano.
¿Es posible obtener una instancia de org.apache.maven.project.MavenProject
o alguna otra forma de objeto del POM desde solo el archivo pom.xml?Obtenga MavenProject solo del POM.xml - pom parser?
Gracias de antemano.
sí, puede. Este es el código. Es necesario experto-modelo-3.0.4.jar y el plexo-utils-2.0.6.jar y experto-core-3.0.4.jar
Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try {
reader = new FileReader(pomfile);
model = mavenreader.read(reader);
model.setPomFile(pomfile);
}catch(Exception ex){}
MavenProject project = new MavenProject(model);
Genial, gracias. Esto funciona. – javamonkey79
Te he probado la solución pero no llena algunos campos del objeto MavenProject que esperaba, como getCompileSourceRoots() devuelve la lista vacía. – javydreamercsw
Leer un archivo pom no implica la interpolación de datos como variables, configuraciones heredadas de los padres (y sus proto-padres), etc. – carlspring
Si desea obtener el MavenProject basado en groupid, artifactId y la versión que tienes que ejecutar dentro de un plugin maven. Y este código hará el trabajo:
ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
configuration.setProcessPlugins(false);
configuration.setRepositorySession(session);
org.apache.maven.artifact.Artifact artifact = new org.apache.maven.artifact.DefaultArtifact(groupId, artifactId, version, "compile", "", "", new DefaultArtifactHandler());
MavenProject project = projectBuilder.build(artifact, configuration).getProject();
Las propiedades faltantes se pueden inyectar en el complemento maven.
¿Por qué lo quieres? ¿Qué estás tratando de lograr? –
Informes en nuestro servidor CI. – javamonkey79