2009-06-17 14 views
11

Ich habe zwei Maven-Module, eines, das als Glas endet, und einen Krieg, der von diesem Glas abhängt.Maven - Abhängigkeit von Artefaktquelle hinzufügen

Ich möchte, dass das JAR-Modul seinen Quellcode zusammen mit den kompilierten Klassen im Jar packt, so dass das zweite Modul darauf zugreifen kann. Ich habe versucht, das Maven-Source-Plugin zu verwenden, aber ich bin verwirrt, wie man eine Abhängigkeit von der Ausgabe von diesem hinzufügt. Es scheint, dass die Abhängigkeit standardmäßig auf das kompilierte jar und nicht auf den Quellcode jar (endend mit "-source.jar"), den maven-source-plugin erstellt, folgt.

Wie füge ich die "-source.jar" als Abhängigkeit hinzu, während die Abhängigkeit von den kompilierten Quellen erhalten bleibt?

Antwort

20

Ich habe das nicht versucht, aber ich denke, Sie müssen zwei Profile in Ihrem Projekt erstellen. Eine, die das Hauptglas baut. Der andere, der das Quellenglas erstellt. Leider weiß ich nicht genau, wie Sie dieses Profil erstellen würden. Ich konnte bisher kein gutes Beispiel dafür finden.

(zu den Kommentaren Accoding, brauchen Sie nicht wirklich ein Profil aus. Sie haben soeben die Quellen-Plugin verwenden können, die werden die Quellen bereitstellen und sie über die Quellen-Klassifikator zur Verfügung stellen)

Theoretisch Sie‘ d Verwenden Sie das 2. Profil, um die Quellen an das Projekt anzuhängen. Dies erstellt einen zweiten Eintrag in Ihrem Repository für die Quellen, die diesen Klassifikator verwenden. Sobald Sie die Quellen in Ihrem Repository installiert/bereitgestellt haben, sollten Sie in der Lage sein, die Quellen als Abhängigkeit einzubeziehen, indem Sie das Klassifizierungs-Tag für die Abhängigkeit verwenden, um die Quellen direkt anzugeben.

So würde man so etwas in Ihrem Webapp POM hat:

<dependencies> 
    <dependency> 
    <groupId>myGroup</groupId> 
    <artifactId>myJar</artifactId> 
    <version>4.0</version> 
    <type>jar</type> 
    </dependency> 
    <dependency> 
    <groupId>myGroup</groupId> 
    <artifactId>myJar</artifactId> 
    <version>4.0</version> 
    <type>jar</type> 
    <classifier>sources</classifier> 
    </dependency> 
</dependencies> 
+2

ich nicht einmal die Profile brauchte, Maven-Source-Plugin automatisch den "Quellen" Klassifikator zur Verfügung gestellt. Gerade hinzugefügt Quellen zu der Abhängigkeit :) –

+3

Sorry - ich meinte , nicht ! –

+1

Wir hatten das gleiche Setup für unser mGWT-Projekt. Wir stellen die AutoBean-Schnittstellen in ein "gemeinsames" Maven-Modul, das von den Diensten auf dem Server (REST-Dienste mit CXF) und auf dem mGWT-Client verwendet wird. Das Problem ist, dass das maven gwt: compile-Ziel die Quellen UND die kompilierten Versionen benötigt, um abgeschlossen zu werden. Die obige Konfiguration hat auch für uns gut funktioniert. – peron

1

Haben Sie versucht, das src-Verzeichnis als Ressourcenverzeichnis im Build-Abschnitt hinzuzufügen? Das sollte die Quelle in den Jar bei Build kopieren.