Maven und POM(.xml)

Hallo,
könnte ihr mir ein paar Tipps geben, zu dem Einstieg in (Netbeans,) Maven, pom.xml und Git?

Bis jetzt trage ich die Dependencies einfach manuell in die pom.xml ein, weil mir das mit dem „Explorer“ zu umständlich ist.

Ich möchte gern eine Applikation auf Windows und später auf Linux mit 3rd-Party-Libs. Maven und Git sei eine gute Kombo: http://stackoverflow.com/questions/19080093/why-the-combination-of-maven-with-git


Oder es wird ein allgemeiner Laberthread, das fänd ich auch gut. :smile: :sunny:

Eventuell, unter Umständen, benutze ich alles in Kombination. Hängt davon ab was du schon weißt und was nicht und was du vor hast

Was genau ist Deine Frage?

Git ist gut. Maven ist auch gut. Beides funktioniert zusammen. Gradle funktioniert aber auch mit Git. Maven auch mit Mercurial. Netbeans funktioniert mit allen von den genannten.

Da Du nach Tips suchst: Das manuelle Eintragen von dependencies in eine pom.xml ist nicht verkehrt. Ich mache das auch immer so.

Tip für Netbeans habe ich nicht. Nutze immer IntelliJ.

Maven finde ich toll - auch wenn der Hype zur Zeit gefühlt eher in Richtung Gradle geht.

Was ist denn die konkrete Frage?

Ach so…

Im aktuellen Projekt bei meiner Arbeit wird auch Gradle benutzt.
Ich sag es mal so… es fühlt sich so ein wenig wie ein mächtiger Aufsatz auf Maven an.
Allerdings muss man für Gradle Groovy lernen (bzw. wissen wie man wonach sucht) und für Maven reicht XML

Das ist eine etwas… inhaltsarme Aussage. Das gilt für alle Category:XML-based programming languages - Wikipedia :wink:

Der Ansatz, einen Prozess (nämlich das compilieren und deployen) mit einer Sprache (XML) zu definieren, die praktisch keine Reihenfolgen abbilden kann, sorgt eben für solche Auswüchse, dass man irgendwelche Schritte implizit oder explizit an irgendwelche „phasen“ binden muss, von denen man wissen muss, in welcher Reihenfolge sie durchlaufen werden.

Bestimmte Werte und Prinzipien von Maven sind super. Aber die POM kann schon recht kompliziert werden.

(Erstaunlich: Eine schnelle Websuche sieht aus, als gäbe es nichts, was eine JSON-basierte POM schluckt, und die in eine XML-basierte POM umbaut - JSON wäre schon weit weniger verbose… :thinking: )

Ansonsten… noch der Hinweis auf diesen einen Pixel, der mich immer so irritiert:

1 „Gefällt mir“

Also XML vs. Groovy ist eher nicht das Problem :smiley:

Es sind eher die Konzepte die dahinter stehen die kompliziert sind, und da sind sich Maven und Gradle viel aehnlicher als so ein Beitrag auf „Hackernews“ erklaeren kann.

Unterschiedlich ist zB. wie Maven und Gradle mit Abhaengigieiten von Modulen in einem Projekt umgehen, das macht Gradle besser, aber dependencyManagement im eigentlichen Sinne gibt in Gradle nicht, selbst aufgeflanscht mit dem nebula-dependency-recommender-plugin kommt es auch nicht ganz hin.

Bei kleineren Projekten macht das kaum einen Unterschied, wenn man aber grosse Projekte hat und/oder versucht viele Projekte auf einen einheitlichen Standard zu bringen, merkt man dann schnell die Luecken von Gradle.

Ist aber eigentlich nicht so wichtig was man dann nimmt von den beiden, fuer Maven gibt es im allgemeinen mehr Plugins/Tooling und ist ausgereifter, dafuer halt Legacy in vielen Punkten.

Esoterische Build Tools wie Bazel dagegen… naja, wer das braucht hat es echt noetig :wink:

Zu Git möchte ich noch anmerken, dass es hier zwei Themengebiete gibt. Das erste ist die Grundsätzliche Bedienung von Git, das andere ist die Art und Weise wie man Git einsetzt. Wann man also einen oder mehrere Feature Branch anlegt, wie man diese wieder auf den Master merged. Gerade wenn mehrere Leute daran arbeiten wichtig.

Als Einzelentwickler/Anfänger wird man zuerst alles auf dem Master machen und viele Möglichkeiten links liegen lassen.

Wie ist unter Netbeans eigentlich die Code-Completion für Maven-Dependencies. Intellij bietet z.B. im XML eine Auflistung aller möglichen Versionen einer Abhängigkeit, die in den Repositiories zu finden sind an.

Wenn man öfters Projekte mit ähnlichem setup macht, dann wird mittelfristig ein Blick auf archetypes nicht schaden, die ein vorgefertigtes pom.xml und eine grobe Projektstruktur mitliefern.

Aber Ant ist mittlerweile kaum noch wo in gebrauch? Da hab ich auch schon die gruseligsten Sachen mit erlebt.

1 „Gefällt mir“

Funktioniert auch in Netbeans, ich kopiere mir aber meistens den gesamten Dependencyblock von search.maven.org zusammen, oder steuere das über Variablen und nicht direkt im Dependency Tag

Zum Thema: Was anderes als XML würde ich vorschlagen mal https://github.com/takari/polyglot-maven anschauen…da kann man dann in Groovy, YAML, Scala, Ruby, Atom, Closure seine POM’s schreiben…wer es mag…warum nicht…JSON gibt es aktuell nicht…

Gruß
Karl Heinz Marbaise

Polyglot tauchte irgendwo in den ersten Suchergebnissen auf. Es wunderte mich nur, weil JSON ja schon sehr ähnlich zu XML (nur eben weniger verbose) ist, und eine Übersetzung da eigentlich weitgehend 1:1 möglich sein sollte.

JSON ist ein Protokoll, wer das freiwillig fuer Konfiguration einsetzt, hat einen an der Waffel.
Sorry, aber das musste mal gesagt werden :slight_smile:

Schon mal versucht ein Kommentar in JSON einzufuegen? :wink:
Gibt es nicht, braucht man ja auch nicht fuer ein Protokoll!

JSON ist eine XML-Alternative, weiterentwickeltes Format. Schlanker bei gleichem Informationsgehalt - und es sieht einfach sexy aus. :wink:
Ohne groß Mühe ist eine Darstellung möglich…


Aber gut, ihr erstellt auch die pom.xml händisch. Mehr wollt ich erst mal gar nicht wissen. :slight_smile: