1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Verwaltung von Librarys

Dieses Thema im Forum "Algorithmen & Datenstrukturen mit Java" wurde erstellt von melmager, 15. April 2018.

  1. melmager

    melmager Erfahrenes Mitglied

    Ich habe mal ein paar Fragen zu Java Librarys.
    Eine Tool zu dem Thema ist ja Maven (ich habe mich ehrlich gesagt noch nicht darin eingearbeitet)

    Das problem was ich bei Maven sehe ist das es eine bestimmte Ordnerstructur voraussetzt.
    Die wurde auf Webanwendungen hin ausgelegt.
    Leider legt Maven die benötigen Libs in das locale Verzeichnis vom Projekt ab.
    Bei mehreren Projekten hat man also unter Umständen mehrere Libs doppel und dreifach auf dem Rechner.

    Und wo ich grade drüber gestolpert bin:
    Wie regel ich das mit maven (dem pom File) wenn eine eigen Lib erstellt wird ?

    Was ich gern hätte:
    Eine zentrales verzeichnis wo alle notwenigen Libs abgelegt werden.
    Im Projekt selber eine Konfigdatei wo ich angeben kann welche Libs benötigt werden. erste Suche dann im zentralen localen verzeichnis und download wenn noch nicht vorhanden.
    und wenn es in einer Lib ein bezug zu einer andren Lib gibt dieser recursive Bezug
    automatisch aufgelöst wird.

    so die Richtung wie es RPM bei Linux macht - das Tool löst ja abhängigkeiten selbst auf.

    Nachtrag:
    Apache Ivy klang gut, aber scheinbar wird das von Netbeans Version 8.x nicht mehr unterstützt
     
    Zuletzt bearbeitet: 15. April 2018
  2. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hoi melmager,

    ich gehe mal auf die einzelnen Punkte deines Post getrennt ein:
    Naja, nicht zwangsweise. Die Struktur sieht vereinfacht gesagt so aus, dass du getrennte Ordner für Produktiv- und Testcode hast. Zusätzlich hierzu werden dann die Resourcen auch getrennt. Du hast dann also deine Produktivklassen unter "src/main/java" und deine Testklassen unter "src/test/java". Zusätzlich hierzu kannst du dann auch z.B. Scala-Klassen einbinden, unter "src/main/scala". Heir ist die Struktur ziemlich flexibel und erweiterbar.

    Ich weiss ja nicht, wie du maven konfiguriert hast, aber die Libs liegen unter "$HOME/.m2/repository". Zentral, halt für jeden Benutzer eigens. Das kann aber bei Bedarf natürlich auch umkonfiguriert werden, so dass z.b. ein Repository pro Rechner (nicht per User) verwendet wird.
    Wenn du jetzt allerdings mit Maven ein "dist" machst, dann kopiert er alles was für die Runtime benötigt wird in den Buildordner. Das ist auch so beabsichtigt, kann aber natürlich auch konfiguert werden. Damit kann mvn dann zum Beispiel ein Fat-Jar bauen (alle Libraries in einem Jar mit deinem Code kombiniert)

    Genau das macht Maven :) Siehe oben auch mit dem $HOME. Wenn du jetzt allerdings viele Entwickler hast, an verschiedenen Rechnern, dann hast du normalerweise einen Repository-Mirror. Das ist ein zentraler Server, der als kleiner Mirror von Maven Central (oder andere) dient. Der übernimmt dann wie eine Art Proxy die Verwaltung der Libraries. Somit fragen die Clients bei dem an, der lädt runter was er noch nicht hat und verteilt das dann lokal im Netzwerk. Spart vorallem dann Netzwerklast. Ein (kostenpflichtiges) Beispiel ist Artifactory.

    Ivy ist tot. Ich bin da nicht der Fan von, habe da schon einige Schwierigkeiten mit Projekten von uns gehabt. Umständlich und teilweise auch absolut hirnrissig wie der die Dependencies auflöst. Wir haben regelmässig die gleiche Dependency mit unterschiedlichen Versionen im Classpath (Könnte aber auch an sbt liegen)

    Persönlich bevorzuge ich Gradle. Kleine Buildfiles, Dependencies sauber angegeben und macht genau das was ich brauche. Die Integration in IntelliJ ist auch gut, für Eclipse / Netbeans gibts da sicher auch Plugins.

    Grüsse,
    BK
     
    sheel und melmager gefällt das.
  3. melmager

    melmager Erfahrenes Mitglied

    Kurze Nachfrage:
    Wenn ich auf Gradle umsteige und ich eine eigenes Lib erstelle kann ich dort ein
    ein File mit Dependencies anlegen wo meine Lib aufsetzt ?
    Sprich im Projekt gebe ich als Dependencie mein Lib an und er zieht sich dann
    das Lib was meine Lib braucht ?
    Siehe Paketmanager bei Linux - der zieht ja auch alles nach (man wählt ein Programm aus und bekommt 5 Libs dazu :) )
     
  4. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hi,

    ja, transitive Abhängigkeiten werden dort auch unterstützt.

    Grüse,
    BK
     
Die Seite wird geladen...
Ähnliche Themen - Verwaltung Librarys
  1. melmager
    Antworten:
    1
    Aufrufe:
    1.362