Integration von Maven & Non-Maven-Projekten

8

Ich arbeite gerade an zwei Projekten gleichzeitig:

  • Mein Hauptprojekt (mit Maven gebaut)
  • Eine Spitze eines Open-Source-Projekts, von dem mein Hauptprojekt abhängt (nicht mit Maven bauen)

Wie richte ich Maven ein, um das OSS-Projekt als eine Abhängigkeit mit der geringsten Menge an Reibung zu verwenden, da ich die beiden oft gemeinsam entwickle?

    
Marty Pitt 25.10.2009, 14:51
quelle

4 Antworten

10

Ich kann mir mehrere Lösungen vorstellen:

  1. Mavenize das bestehende OSS-Projekt. Dies ist natürlich die "ideale" Option, aber oft nicht machbar (auch wenn Sie das neue Build-System parallel zu dem bestehenden einführen). Das Projekt hat wahrscheinlich eine bestehende Projektstruktur, die sich von Mavens Standardlayout unterscheidet. Das Ändern des bestehenden Layouts und des Build-Skripts kann von den Entwicklern nicht gewünscht sein. Die Anpassung eines Maven-Builds an ein nicht standardmäßiges Layout kann sehr schmerzhaft sein. In beiden Fällen bist du verrückt.

  2. Wickeln Sie den vorhandenen Ant-Build mit Maven. Dies kann nützlich sein, wenn Sie den Build des OSS-Projekts in den Lebenszyklus Ihres Projekts aufnehmen und beide in einem erstellen möchten Schritt. Sie können diese Antwort auf SO nachsehen Details dazu, wie man das macht.

  3. Verwenden Sie Apache Ivy oder Maven Ant-Aufgabe im vorhandenen Build , um ein Maven-Artefakt in Ihrem lokalen Repository zu erstellen und zu installieren. Verwenden Sie dieses Artefakt als reguläre Abhängigkeit in Ihrem Maven-Projekt (außer dass Sie seine transitiven Abhängigkeiten manuell deklarieren müssen). Dies ist vielleicht der schnellere und weniger aufdringliche Ansatz, wenn das separate Erstellen beider Projekte kein Problem darstellt.

Sieht so aus als würdest du Option 3 wählen. Ich denke es ist eine gute Wahl für einen schnellen Gewinn.

    
Pascal Thivent 25.10.2009, 17:37
quelle
1

Die Lösung, die ich benutzt habe, sind die maven-ant Aufgaben ( Ссылка ).

Ich habe eine Installationsaufgabe in die Datei build.xml aufgenommen, die die kompilierte .jar in das lokale Repository installiert.

Obwohl das Hinzufügen eines vollwertigen Pom zum Projekt definitiv der beste Ansatz wäre, ist dies ein großer Teil der Arbeit, und fügt dem Projekt Maven hinzu (wo die anderen Benutzer es lieber nicht benutzen würden).

>     
Marty Pitt 25.10.2009 15:47
quelle
0

Ich denke, Sie müssen wahrscheinlich in den sauren Apfel beißen und ein POM für Ihren OSS-Projektbaum einrichten. Dies ist der schmerzhafte Teil (da Sie die Details zum Spezifizieren von Ressourcenpfaden für verschiedene involvierte Plugins abhängig von dem OSS-App-Typ (d. H. Web usw.) suchen müssten). Eine gute Nachricht ist, dass dies eine einmalige Anstrengung ist.

Sobald dies geschehen ist, kann Ihr Hauptprojekt auf das (eingepackte) OSS-Projekt als Abhängigkeit verweisen. Hier würde eine (Standard-Maven-) Multiprojektstruktur zur Anwendung kommen.

    
alphazero 25.10.2009 15:03
quelle
0

Wenn das OSS-Projekt Abhängigkeiten aufweist - erstellen Sie ein POM mit diesen Abhängigkeiten (Ihr Projekt verwendet sie als transitive Abhängigkeiten) und installieren Sie dieses Artefakt und Pom im lokalen Repository. Wenn OSS-Projekt keine anderen Abhängigkeiten hat, ist es noch einfacher - das POM wird automatisch während der Installation generiert.

In beiden Fällen verwenden Sie maven-install-plugin .

%Vor%     
cetnar 25.10.2009 17:26
quelle

Tags und Links