2016-07-01 5 views
1

Ich habe ein Projekt, das mehrere .jar Dateien enthält. In der Vergangenheit hatte ich eine build.xml Datei, die ich durch Ant lief, und es wurde ein neues Glas aus diesen mehreren Gläsern erstellt, und dieses brandneue Glas wurde als Abhängigkeit bezeichnet.Maven Ant-Task zu starten und dann als Abhängigkeit

Jetzt, wo ich zu Maven wechselte, würde ich gerne wissen, wie ich das mavenize. Mit anderen Worten, wie kann man Maven sagen, dass es die mehreren Gläser in ein Glas füllen soll, und es dann als Abhängigkeit bezeichnen? Um die Dinge in solidere Basis zu stellen, werde ich die Ordnerstruktur teilen Ich habe:

+- mainProject 
+- pom.xml  
+- someGroup 
| +- pom.xml <- refer here 
| +- sampleModule1 
| | +- pom.xml <- build here 
| | +- build.xml 
| | +- first.jar 
| | +- second.jar 

Eine Idee in meinem Kopf ist Maven zu sagen build.xml zu nennen, die diese neue Glas aus diesen beiden schaffen Gläser, und sie dann als Abhängigkeit ausnützt, wie hier:

<dependency> 
     <groupId>someGroup</groupId> 
     <artifactId>org.boofcv</artifactId> 
     <version>1.0.0</version> 
     <scope>system</scope> 
     <systemPath>${project.basedir}/../shared/org.boofcv/brand-new.jar</systemPath> 
    </dependency> 

ich bezweifle jedoch, dass es funktionieren würde, da das Huhn-Ei-Problem auftreten kann. Wenn ich maven install anrufe, kann die Aufgabe, die neue .jar zu erstellen, stattfinden, nachdem maven nach einer Abhängigkeit sucht, was zu einem Fehler führt.

Kennt jemand einen Workaround dafür?

+0

Mit systemPath aufhören ... falsche Richtung. Kannst du erklären, was du mit 'refer here' meinst? Können Sie ein Beispielprojekt Ihres gegenwärtigen Zustandes machen und es auf github oder so setzen ... – khmarbaise

+0

Ich benutze ein lokales Repository, und ich möchte ein Glas aus anderen zwei Gläsern bauen. Später möchte ich dieses neue Glas als Abhängigkeit verwenden. Einfach. –

+0

Was meinen Sie mit 'local Repository'? '$ HOME/.m2/Repository'? Ein Glas aus mehreren Gläsern zu bauen kann über maven-shade-plugin gemacht werden ... – khmarbaise

Antwort

0

Nachdem ich mehr gesucht habe, habe ich erfahren, dass es nicht möglich ist, ein Ant-Script aufzurufen, um diese Jars in ein JAR zu schreiben, und gleichzeitig Maven das letzte JAR zu nennen. Siehe unten quote:

„Wenn das Maven Antrun Plugin verwenden, Maven die Abhängigkeiten zu lösen versucht CLASSPATHs für den AntRun Aufruf zu bauen und man somit ein Huhn und Ei Problem: Sie eine Abhängigkeit nicht erklären kann, dass Will Wird während der AntRun-Ausführung erstellt, die die Ausführung dieser Abhängigkeit erfordert. Dies kann nicht funktionieren. "

statt, ich found out ein Plugin namens maven-shade-plugin. Es erzeugt ein großes Gefäß aus kleinen Gläsern, das ich später als Abhängigkeit in meinem Top-Level pom.xml verwenden kann, was ich gefragt habe.