2010-12-07 7 views

Respuesta

26

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); 
+1

Genial, gracias. Esto funciona. – javamonkey79

+1

Te he probado la solución pero no llena algunos campos del objeto MavenProject que esperaba, como getCompileSourceRoots() devuelve la lista vacía. – javydreamercsw

+0

Leer un archivo pom no implica la interpolación de datos como variables, configuraciones heredadas de los padres (y sus proto-padres), etc. – carlspring

2

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.

Cuestiones relacionadas