Maven - Lookup Abhängigkeiten zur Laufzeit

stimmen
3

Ich möchte in der Lage sein, zu bestimmen, welche Versionen ich eine Abhängigkeit selbst sowie die Version der Web-Anwendung zur Laufzeit leite.

Jede Web-Anwendung bereitstellen I ist mit einem pom.xml verpackt, die ich aus lesen kann, dass ein Teil trivial. Der nächste Teil wird Parsen der pom ohne viel Aufwand.

Da die Web-Anwendung ausgeführt wird, ich möchte in der Lage zu verstehen, welche Version ich bin, und welche Versionen meine Abhängigkeiten sind.

Im Idealfall würde Ich mag, wie etwas zu tun ist:

MavenPom pom = new MavenPom(webApplicationPomInputStream);
pom.getVersion();
pom.getArtifactId();
pom.getGroupId();

for(Dependency dependency:pom.getDependencies())
{
  dependency.getVersion();
  dependency.getArtifactId();
  dependency.getGroupId();
}

Soll ich hier XPath-Notation nur, oder gibt es eine Bibliothek, die ich anrufen kann diese Art der Sache zu tun?

Nach diesem Posten, denke ich der schnellste / zuverlässigste Weg ist eine Textdatei mit dem Abhängigkeitsbaum darin zu generieren: mvn Abhängigkeit: Baum. Dann werde ich die Textdatei analysiert, trennen Sie die groupId, artifactId und Version, und dann die Struktur durch die Einzugsebene bestimmen.

Wenn ich das tue, kann ich in XML exportieren anstelle von Text? Ich kann dann JAXB verwenden und einfach die Datei analysieren, ohne eine / viel Arbeit zu tun.

Es ist ein Hack, aber sieht vielversprechend aus.

Walter

Veröffentlicht am 30/12/2009 um 02:41
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Maven hat natürlich eine solche API. Werfen Sie einen Blick auf org.apache.maven.project.MavenProject. Aber, um ehrlich zu sein, ich glaube nicht , dass es so einfach sein , einen erstellen MavenProjectInstanz. Der Quellcode wird hilfreich sein hier, prüft zum Beispiel MavenProjectTestoder vielleicht das Maven Plugin API (eigentlich wäre diese Aufgabe viel, wirklich viel, einfacher zu erreichen von a Mojo) für einige Hinweise.

Ich würde vorschlagen , suchen oder diese Frage auf die fragen , Mailing - Listen Maven , org.apache.maven.dev angemessen wäre hier IMHO.

Beantwortet am 30/12/2009 um 13:05
quelle vom benutzer

stimmen
2

Ich verwende nur den MVN Abhängigkeit: Baum Plugin eine Textdatei mit dem Abhängigkeitsbaum zu erzeugen. Dann werde ich das in parsen und die Abhängigkeitsbaum / Grafik aus, dass erstellen. Ich werde den Umfang des Artefakts, groupId, artifactId, Version und ihre Eltern erhalten.

Ich implementierte erfolgreich diese Art von Lookup, es ist einfach die Abhängigkeit Ausgang nimmt, analysiert sie und organisiert Abhängigkeiten einfach den Einzug verwenden, nichts Besonderes. Das Artefakt, Gruppe, Version und Umfang sind leicht analysiert, da der Separator a:.

Walter

Beantwortet am 04/01/2010 um 14:01
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more