Ich habe versucht, maven pom.xml zu parsen. Ich war in gewisser Weise erfolgreich. Aber mein Problem ist, dass ich die Standardwerte nicht bekommen kann. Ich muss die Standardwerte manuell injizieren. Wenn beispielsweise die Versionsnummer in pom.xml nicht angegeben ist, ist es offensichtlich, dass die übergeordnete Version verwendet wird. Wenn Build-Verzeichnis nicht angegeben ist, wird es Ziel sein.Parsing maven pom.xml, mit maven jar
Ich muss wissen, welche Klassen ich verwenden sollte, um diese Dinge automatisch zu besetzen. Abgesehen davon würde ich gerne Abhängigkeitsgraphen für mich erstellen lassen. Der Code, den ich zum Parsen verwende, ist
Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try {
reader = new FileReader(pomfile);
model = mavenreader.read(reader);
model.setPomFile(pomfile);
if (model.getBuild() != null) {
// location of output directory basically target
if (model.getBuild().getDirectory() == null) {
//set the build directory
} // location of compiled classes
if (model.getBuild().getOutputDirectory() == null) {
// set the classes directory
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException("pom file not found " + pomfile);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("pom file is not accessible " + pomfile);
} catch (XmlPullParserException e) {
e.printStackTrace();
throw new RuntimeException("unable to parse pom " + pomfile);
} catch (NullPointerException nullPointerException)
System.out.println("Exception setting build dir "+model.getPackaging());
} finally {
if (reader != null) {
reader.close();
}
}
Danke.