Java Dependencies auslesen

Guten Tag liebe Java-Forum Gemeinde :).

Ich habe ein Probl...nein, eine Herausforderung:


Mein Ziel ist es innerhalb einer Multiprojekt-Umgebung eine Java Anwendung zu entwickeln, die die direkte und transitive Abhängigkeiten von Projekten anzeigen kann.

Meine erste Überlegung war, ganz simple die pom's zu Parsen. Ich bekam jedoch den Hinweis, dass das mit Sicherheit besser geht.
In vielen Quellen habe ich Codeschnipsel gesehen, die in Java Klassen 'einfach' auf Projektinformationen zugreifen.
Beispiele: projektname.getGroupId(), .getArtifact() usw.

Doch wie kann ich das umsetzen? Wie kann ich so direkt in die Maven Bibliothekt zugreifen, ohne die Projektmodelle zu parsen?


Ich hoffe ihr versteht meine wirren Worte ;).

Vielen Dank für jede Bemühung im Voraus!
 
Vielen Dank für die schnellen Antworten.

Das Video kann ich leider erst heute Abend anschauen, die sind hier leider gesperrt :(.

Ansonsten: Ja, ich denke das würde mein Problem in seinen Ansätzen lösen, ABER ich hatte gehofft auf den Einsatz eben solcher Plug-Ins verzichten zu können.

Lässt sich denn nicht händisch auf die Abhängigkeiten zugreifen?



ein


Code:
mvn dependency:treereicht Dir nicht?

Ich befürchte nicht. Ziel ist es die Abhängigkeiten über eine Java Anwendung auch innerhalb der Anwendung anzeigen zu lassen (und ggf. speichern zu können in einer Datenbank).

Meine 'Aufgabe' ist es (ich hoffe ich zitiere soweit richtig), auf die "Schnittstelle in Maven" zuzugreifen, die auch die Poms mit Daten versorgt, und über diese die Dependencies direkt aus der Maven Bibliothek in der Anwendung aufzurufen.
 
S

Sym

Gast
Da sich die Bibliotheken nicht zur Laufzeit ändern, hast Du die Dependencies (z.B. durch mvn dependency:tree) doch vorliegen. Diese kannst Du dann als Bild in eine DB oder als File in oder neben das Jar legen. Und wenn es immer mit ausgeliefert werden soll, bau Dir ein Maven-Plugin, welches beim Release (oder package oder oder oder) dies mit generiert.

Wofür werden diese Informationen denn benötigt?
 
Da sich die Bibliotheken nicht zur Laufzeit ändern,

Ist in dieser Multiprojektumgebung hier leider doch der Fall.

Die Informationen sollen schlicht weg nur grafisch an der Oberfläche dargestellt werden.

Es muss doch einen Weg geben zur Laufzeit die Dependencies auszulesen? :/
 

kama

Top Contributor
Hallo,

Es muss doch einen Weg geben zur Laufzeit die Dependencies auszulesen? :/
Welche Abhängigkeiten ändern sich zur Laufzeit?

Warum auch immer....wenn aber ja, dann ist Maven der Falsche Weg!

Weiterhin kann man mit dem maven-dependency-plugin die Infos schon in eine Datei schreiben:

Code:
mvn dependency:tree -DoutputFile=tree.out
also einfach per execution in den lifecycle und das entstandene File später irgendwo mit verpacken...


Gruß
Karl-Heinz Marbaise
 

Noctarius

Top Contributor
Weil z.B. nicht alle Module deployed werden. Ergo kann man aber per Maven Dependencies alle Abhängigkeiten auflösen lassen bzw prüfen ob alles passt.
 
S

Sym

Gast
Weil z.B. nicht alle Module deployed werden. Ergo kann man aber per Maven Dependencies alle Abhängigkeiten auflösen lassen bzw prüfen ob alles passt.
Du meinst, dass zur Laufzeit andere Module deployed werden könnten, die den Dependency-Stack erhöhen? Beim Nachdeployen von Modulen kennt man doch ebenfalls die Dependencies und könnte diese direkt mitpflegen.
 

Noctarius

Top Contributor
Denke an Features einer Application, welche z.B. durch Lizenzen freigeschaltet werden. Du willst aber keine Features mitladen (z.B. in einer OSGi Umgebung) die nicht lizensiert sind. Also musst du den Dependency Tree zur Laufzeit auflösen und entsprechende Abhängigkeiten verdichten und laden. Wenn der Kunde nun seine Lizenz erhöht wird beim nächsten Start auf mehr geladen.

Solche Abhängigkeitenverwaltungen bekommst du in Maven geschenkt, wofür zusätzlich pflegen?

Es gibt also durchaus Anwendungsfälle wo sich eine bereits deployed Anwendung im Umfang ändern kann.
 
S

Sym

Gast
Das es Sinn haben kann, Module nachzuladen, ist mir klar. Allerdings kann ich vom Server erfragen, welche Module geladen sind. Die Module selbst haben feste Dependencies und Linken keine zur Laufzeit hinzu. Beim Erstellen der Module sind also die Dependencies klar. Warum etwas zur Laufzeit berechnen, dass zur Compilezeit bekannt ist?
 
Ich war auch überrascht, dass sie sich zur Laufzeit ändern, aber hab auch explizit bestätigt bekommen, dass es so ist.

Okay, um euch mal den Anwendungsfall näher zu beschreiben:
In dieser Umgebung befinden sich ca. 10 Anwendungen. Zwei Studenten haben mal die Aufgabe bekommen eine Anwendung zu entwickeln, die alle möglichen Informationen darstellt, u.A. Abhängigkeiten der Anwendung.
Da man diese aber alle per Hand eintragen muss, wäre das bei jeder aktualisierung ein tagelanger Aufwand die zu warten, ist also quatsch.

Deshalb hatte ich die Überlegung ob es nicht möglich wäre, für jedes Projekt nicht alle Daten, sondern einfach nur den SVN Pfad zum Super-POM anzugeben. Dieses enthält ja genug Daten um auf andere Inhalte zu verweisen, die dann die Abhängigkeiten beinhalten.

Denkt ihr das funktioniert nicht?
 

kama

Top Contributor
Hallo,

Deshalb hatte ich die Überlegung ob es nicht möglich wäre, für jedes Projekt nicht alle Daten, sondern einfach nur den SVN Pfad zum Super-POM anzugeben. Dieses enthält ja genug Daten um auf andere Inhalte zu verweisen, die dann die Abhängigkeiten beinhalten.

Denkt ihr das funktioniert nicht?
Warum denn nicht...Anhand der POM kann ich alles holen...alle Abhängigkeiten zu anderen Projekten etc. Hier wäre aber noch die Frage ob man nur die Release Versions macht oder auch die SNAPSHOT's ...

Weiterhin beschreibt die POM ja die statischen Abhängigkeiten und somit beschreibt es nicht Module die zur Build Zeit benötigt werden aber dann eventuelle im Server nicht geladen werden...

Weiterhin ist es wichtig hierbei zwischen den unterschiedlichen Scopes zu unterscheiden... (compile, test, provided, runtime etc.).

In Ähnlicher Form habe ich so was schon mal gemacht...und als Graphviz aufbereitet...

Da kommen mir so Sachen Neo4J in den Sinn....da könnte man dann auch eine Analyse Fahren...

Gruß
Karl-Heinz Marbaise
 

Noctarius

Top Contributor
Das es Sinn haben kann, Module nachzuladen, ist mir klar. Allerdings kann ich vom Server erfragen, welche Module geladen sind. Die Module selbst haben feste Dependencies und Linken keine zur Laufzeit hinzu. Beim Erstellen der Module sind also die Dependencies klar. Warum etwas zur Laufzeit berechnen, dass zur Compilezeit bekannt ist?

Natürlich ändern sich die Abhängigkeiten zur Laufzeit nicht aber wofür Daten verdoppeln? Die pom.xml liegt doch eh bereits in den JARs, warum sollte ich die Daten dann noch mal irgendwo hinterlegen?
 
Ich danke euch schon mal für alle weiteren Antworten, ich grase nebenbei alle Vorschläge von oben ab.

Ich denke ich hab selbst auch eine Lösung gefunden. Sollte diese funktionnieren, werde ich sie hier natürlich posten.
 
S

Sym

Gast
Natürlich ändern sich die Abhängigkeiten zur Laufzeit nicht aber wofür Daten verdoppeln? Die pom.xml liegt doch eh bereits in den JARs, warum sollte ich die Daten dann noch mal irgendwo hinterlegen?
Der dependency-tree ich besteht ja nicht nur aus der ersten Hierarchy. :) Wenn natürlich nur diese wichtig ist, geht es auch ohne. :)
 

Noctarius

Top Contributor
Aether ist der Dependecy Traversal Mechanismus in Maven selber und kann auch extern genutzt werden, ich verstehe deinen Punkt nicht.
 

Noctarius

Top Contributor
Ich verstehe nicht wieso sollte ich Daten, welche ich ja auch durch ein spezielles Maven Plugin aufarbeiten müsste (alternativ pflege ich selber irgendeine Definitionsdatei - z.B. in XML) hinterlegen sollte wenn ich das Dependency Management von Maven geschenkt bekomme.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java ServerFaces Anwendung mit XHTML & CSS Allgemeines EE 1
E modulare Java-Anwendung verteilen (Camel) Allgemeines EE 0
B Java Mail und idle() mit zig Emailadressen? Allgemeines EE 59
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
M Rest mit Java 11 Allgemeines EE 6
M java.lang.SecurityException: class "javax.persistence.TupleElement"'s signer information does not match ... Allgemeines EE 1
F Java Programmierer Allgemeines EE 13
R Wie viel DevOps sollte ein Java-Entwickler kennen, der sich in Microservices spezialisiert? Allgemeines EE 5
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
Dimax JSP Auf button click java methode ausführen.Ist das möglich? Allgemeines EE 6
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
A Java EE (am Cleint) und websocket Allgemeines EE 8
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
R Aufbau zum Java EE Entwickler - Schulungen Allgemeines EE 0
G Java EE Hosting ? Allgemeines EE 6
P Java EE Videotutorials Allgemeines EE 1
R Java Enterpise entwickeln mit Virtualbox Allgemeines EE 6
A OutOfMemoryError: Java heap space Allgemeines EE 7
I Start Word from Java Allgemeines EE 1
T Java Jersey Interceptor Allgemeines EE 7
R Post Variable in Java Allgemeines EE 8
L JSP Fehlermeldung bei Verwendung von Java-Expression-Language Allgemeines EE 8
K Wie habt ihr Java EE gelernt? Allgemeines EE 11
hjpsoft JSF Lösung einer Aufgabe im "Workshop Java EE7" Allgemeines EE 5
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
T Java Login Allgemeines EE 1
L Certified Master Java Enterprise Architect Java EE Allgemeines EE 3
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
W Authentifizierung und Sessions in Java EE7 Allgemeines EE 0
OnDemand Task in Java ee Allgemeines EE 7
OnDemand JSF - java File Verständnisfrage Allgemeines EE 5
OnDemand Deployen ohne .java Files Allgemeines EE 0
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
V Java EE 7 CDI, annotations und beans Allgemeines EE 1
G Bachelorthesis: Java oder PHP (CMS) Allgemeines EE 7
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
D Java Projekt goes Webservice Allgemeines EE 6
L Button Handling in JSP mit Java-Backend Allgemeines EE 2
Shams Frage zu Dowload von JAVA SDK Allgemeines EE 5
T Größeres Java EE Beispiel Projekt Allgemeines EE 4
N JavaScript schickt und Java empfängt? Allgemeines EE 4
O Java EE in Netbeans + allgemeine Fragen Allgemeines EE 5
H java selenium spezis? Allgemeines EE 4
H java selenium test connection refused Allgemeines EE 6
M Java EE-Technologie-Lern-Wahl Allgemeines EE 5
B [EJB] javax.inject.DefinitionException: bean not a Java type Allgemeines EE 5
2 installation java EE Allgemeines EE 12
J PHP oder Java? Allgemeines EE 12
L Webseiten Formulare über Java Oberfläche ausfüllen? Allgemeines EE 2
T Java CMS Entwicklung : Welcher Weg ist besser? Allgemeines EE 9
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
J Einstieg in Java EE Allgemeines EE 5
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
D Grundüberlegung Java Webprojekt Allgemeines EE 10
F Einstieg in Java EE - Beispielanwendungen Allgemeines EE 52
R JAVA EE - eigene Klassen aus EJB übernehmen Allgemeines EE 2
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
M EE6+EJB+JavaLib: Error in annotation processing: java.lang.NoClassDefFoundError Allgemeines EE 4
G java ResourceLocator Allgemeines EE 12
M Was ist mit Java möglich? Allgemeines EE 13
T Komponenten zusammenhänge Java EE Allgemeines EE 7
A Java CMS Allgemeines EE 2
P Architektur Java EE <-> HTML5 Allgemeines EE 3
A Java Tomcat findet Website nicht Allgemeines EE 8
F Java EE Server nutzung kostenlos an Schule? (zB. mit Glassfish) Allgemeines EE 6
B Java EE, kickstart my heart Allgemeines EE 10
P Frage zu Java EE Design Patterns Allgemeines EE 3
G EJB und Java EE - No Persistence provider Allgemeines EE 5
zilti Java EE Hosting, worauf muss ich achten? Allgemeines EE 5
M Java EE6: Wie Login-Vorgang durchführen? Allgemeines EE 2
MQue Java Web- Application -> MVC Allgemeines EE 4
G Java <-> Flex Allgemeines EE 2
Spin Ant - Java Beans umsetzen Allgemeines EE 4
V "null" durch NICHTS ersetzen jsp und java beans Allgemeines EE 3
M Serialisierung und Klonen in Java Allgemeines EE 5
W JAVA Optionen auslesen Allgemeines EE 3
D Spring 3 vs. Java EE 6 Allgemeines EE 33
MQue CMS in Verbindung mit Java Allgemeines EE 16
X3TitanCore Java Servertechnologie Allgemeines EE 7
C WebStart Fehler nach update auf Java 1.6 Allgemeines EE 2
R Variablen statt Java-Methoden in EL's Allgemeines EE 4
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
G Vergleich zwischen Java Spirng und Ruby on Rails Allgemeines EE 9
K EJB Enterprise Java Beans Allgemeines EE 32
F Ich will mit Java Internetseiten bauen, aber wo hosten? Allgemeines EE 14
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Java EE vs. Spring/Hibernate Allgemeines EE 26
R Java EE Anfänger will mehr. Allgemeines EE 7
A Fragen zum Einstieg in Java EE Allgemeines EE 11
M Evolution der Web-Entwicklung im Java-Bereich Allgemeines EE 15
N erstes Java EE Projekt - Server/ EJB-Verbindung-Anfängerfage Allgemeines EE 17
G Von Java SE nach JavaEE umsteigen Allgemeines EE 31
K Java Application Server + ganttproject *.jar Anwendung Allgemeines EE 6

Ähnliche Java Themen

Neue Themen


Oben