2010-12-07 21 views

Répondre

26

oui vous pouvez. C'est le code. Vous avez besoin maven-modèle 3.0.4.jar et plexus-utils-2.0.6.jar et maven-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

Cool, merci. Cela marche. – javamonkey79

+1

J'ai essayé votre solution mais elle ne remplit pas certains champs de l'objet MavenProject auquel je m'attendais, comme getCompileSourceRoots() retourne la liste vide. – javydreamercsw

+0

La lecture d'un fichier pom n'implique pas l'interpolation de données telles que des variables, des paramètres hérités des parents (et de leurs proto-parents), etc. – carlspring

2

Si vous voulez obtenir le MavenProject basé sur groupId, artifactId et la version que vous devez exécuter à l'intérieur d'un plugin maven. Et ce code fera l'affaire:

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(); 

Les propriétés manquantes peuvent être injectées dans le plugin maven.