intelliJ IDEA Ivy-Nutzung

In diesem Artikel bringe ich Euch die Nutzung von Apache Ivy näher, gemäß Wikipedia ist es ein „… Software-Werkzeug zur Verwaltung und Einbindung von Java-Archiven, von denen ein Java-Projekt abhängig ist“.

Wer schon länger programmiert kennt die Problematik, alle notwendigen externen Bibliotheken zusammenzusuchen und herunterzuladen. Erfahrene Programmierer denken dabei direkt an Maven, welches als „Lifecycle“ Programm unter anderem diese Problematik abdeckt, aber noch viel mehr kann und in der Anwendung deutlich komplexer ist.

Für mich war es immer wichtig, alle Tätigkeiten rund um die Programmentwicklung selber in der Hand zu haben und daher habe ich bislang die z.T. mühevolle Suche nach Bibliotheken selber übernommen. An dieser Stelle kann uns Ivy (auf Deutsch „Efeu“) eine wertvolle Hilfe sein, denn es übernimmt den Teil des Downloads, einschließlich der weiteren, ebenfalls noch notwendigen Bibliotheken.

Die Grundlage ist eine vorhandene Apache Ant Umgebung, die aber zum Glück bei unserem intelliJ IDEA-Paket gleich mit dabei ist. Im separaten Artikel intelliJ IDEA Ant Einrichtung zeige ich Euch, wie Ihr das Vorhandensein von Ant überprüft und es (falls noch nicht geschehen) auch aktiviert.

Auch die Einrichtung von Apache Ivy ist sehr schnell erledigt, denn es gibt mehrere Ivy-Plugins für intelliJ und im Artikel intelliJ IDEA Ivy Einrichtung erhaltet Ihr alle Informationen zur Inbetriebnahme.

Nun können wir einen Probelauf machen und hierfür habe ich ein kleines Maven-Demonstrationsprojekt von der Seite https://mkyong.com/maven/how-to-create-a-java-project-with-maven/ genommen und ein ganz klein wenig abgeändert. Den Originalquellcode einschließlich der Maven POM.XML-Datei findet Ihr im Mkyong Github-Archiv https://github.com/mkyong/maven-examples im Unterordner „java-project„, ich empfehle aber die Nutzung der Dateien in meinem Github-Archiv https://github.com/java-crypto/intelliJ-IDEA/tree/master/IvyDependencyDownloader, da ich dort alle notwendigen Datei versammelt habe.

Für den ersten Schritt kopiert Ihr einfach den „src“-Ordner sowie die POM.XML-Datei in Euer intelliJ Projektverzeichnis und dann seht Ihr ganz viele „rote Schlängel“, welche Euch auf Unstimmigkeiten im Quellcode hinweisen:

Der Grund liegt in den fehlenden externen Bibliotheken und nun würde die Suche und der Download anstehen. Beides könnt Ihr Euch mit Apache Ivy ersparen, nur benötigt Ivy eine anders aufgebaute Datei, d.h. mit der POM.XML-Datei könnt Ihr nicht unmittelbar arbeiten. Um Euch ein manuelles Kopieren der Daten zu ersparen habe ich einen Konverter geschrieben, der aus der für Maven bestimmten pom.xml-Datei eine ivy.xml-Datei macht. Schaut Euch die Anleitung zum Pom To Ivy Converter an und dann machen wir an dieser Stelle weiter.

Nach der Konvertierung haben wir eine ivy.xml-Datei, welche wir in das Projektverzeichnis kopieren und mit der Maus markieren. Im rechten unteren Bereich des intelliJ-Fensters erscheint ein kleiner Hinweis, den wir auch über das „Event Log“ wiedr auf den Bildschirm holen – wir klicken auf „Configure“:

Es gilt mit einem Klick auf „OK“ das Framework „IvyIdea“ zu bestätigen:

Nun markieren wir die Datei ivy.xml, über „Tools“ – „IvyIDEA“ wählen wir „Resolve for Mkyong Maven-Example“ (was unser Projektname ist) und lassen das Programm arbeiten.

Leider fehlt noch ein kleiner Konfigurations-Klick, dazu Klickt Ihr auf „Open Project settings for Mkyong Maven-Example…“:

Ihr kopiert noch die Datei „ivysettings.xml“ (ist im Github-Archiv gespeichert, hier noch der Inhalt) in das Projektverzeichnis und wählt die Datei aus.

Die obige Datei sorgt dafür, das die heruntergeladenen Bibliotheken im Projektverzeichnis im Ordner „lib_ivy“ landen. Möchtet Ihr ein zentrales Repository für den Download nutzen klickt Ihr einfach in der folgenden Maske „Use ivy default“ aus. Etwas weiter unten findet Ihr noch zwei Checkboxen, die Ihr vermutlich besser „unchecked“, nämlich der Download von „source artefacts“ und „javadoc artefacts“. Ansonsten wird Euer Download Repository mit einer Menge „unnützer“ Dateien gefüllt. Solltet Ihr aber die Sourcen und/oder Javadocs benötigen belasst Ihr besser die Voreinstellung (d.h. „checked“).

Nun wählen wir erneut „Resolve for Mkyong Maven-Example“ aus und nach kurzer Zeit ist das Programm fertig und … alle Schlängel Linien sind verschwunden:

Im Unterordner „libs_ivy“ befinden sich alle notwendigen Bibliotheken, welche bereits zum Projekt hinzu gelinkt wurden:

Hier das Ergebnis des JUnit-Testprogramms „AppTest.java“:

Alle Quellcodes zu intelliJ IDEA findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/intelliJ-IDEA. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für das eigene „Spielen“ notwendig ist.

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Bearbeitung: 31.03.2020