2009-11-17 8 views
26

Ich habe Maven Projekt mit Abhängigkeiten in Repo und Zeug. Ich möchte seine Quellen mit allen Abhängigkeiten "exportieren", damit ich sie erfolgreich in der IDE öffnen kann, ohne dass Maven auf einem Rechner läuft.Maven: Wie man Projekt mit Quellen und Abhängigkeiten exportiert

Beim Packen Projekt in War-Datei, hat es alle Abhängigkeiten damit gepackt.

Also ich möchte alle diese Abhängigkeiten plus meine Quellen an einem Ort gesammelt haben, die mit IDE (Eclipse oder IDEA) alle diese Bibliotheken erkannt werden können geöffnet?

Antwort

32

Try Maven-Abhängigkeit-Plugin mit Ziel copy-dependencies

<project> 
[...] 
<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>copy-dependencies</id> 
     <phase>package</phase> 
     <goals> 
      <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>false</overWriteSnapshots> 
      <overWriteIfNewer>true</overWriteIfNewer> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 
</build> 
[...] 
</project> 

PS.
Sind Sie sich der Integration von maven und IDE (für Eclipse p.e.) bewusst? Maven kann ein Projekt für eine bestimmte IDE generieren und alle abhängigen jars als Variablen enthalten (zeigt auf diese jars im lokalen Repository), so dass keine Kopierabhängigkeiten in Unterordner verwendet werden müssen.

+0

Dank. Das kann funktionieren, ich werde dies überprüfen – glaz666

+0

>> Sind Sie sich der Maven und IDE-Integration bewusst Wenn Sie über das Öffnen von POM-Datei in der IDE sprechen, die dann Quellen und Abhängigkeiten entdecken, das ist nicht was ich will. Ich muss nur die Projektquellen und Bibliotheken kopieren und in der Lage sein, es auf dem Rechner zu öffnen und auszuführen, ohne dass Maven installiert ist. Also ich denke, ich werde das Plugin verwenden Sie sprechen über – glaz666

+0

Ich habe ein Problem mit diesem Plugin. Wenn ich eine kompiliere in meiner Abhängigkeit - es kompiliert, aber nicht vom Abhängigkeits-Plugin kopiert wird. Aber wenn ich einen Bereich auf "Runtime" oder "Import" ändere, erscheint ein "Kompilierfehler": "Das Ziel konnte nicht ausgeführt werden. Org.apache.maven.plugins: maven-compiler-plugin: 3.3: compile (default-compile) auf Projekt AnnotationsProcessors: Kompilierungsfehler ... ... Anmerkungen/Prozessoren/ComplexityProcessor.java: [20,28] kann Symbol nicht finden ". Ich habe diese Abhängigkeit in lokalen Maven-Repository installiert und es baut gut. – DominikStyp

9

Eigentlich gibt es nichts, was ein Bündel mit Quellen und Abhängigkeiten aus der Box erstellen würde. Dazu müssen Sie eine Kombination aus einigen Plugins verwenden.

Für Abhängigkeiten, die Maven 2 Dependency Plugin und seine copy-dependencies wird helfen, wie von cetnar hingewiesen.

Für Quellen, müssen Sie möglicherweise das Maven Source Plugin und sein source:aggregate Ziel (oder vielleicht die Maven Assembly Plugin und den vordefinierten src Descriptor aber source:aggregate sind praktisch für Multi-Module baut).

Um das Ganze zusammen zu binden (und vielleicht Quellen entpacken), würde ich die Maven Assembly Plugin verwenden.

+1

Ich nenne mich "meine Quellen an einem Ort gesammelt" glaz666 mittlere reguläre Java-Projekt mit Quellen (von VCS oder nicht) und alle Abhängigkeiten in lib Unterordner. +1 für Quelle: Aggregat für Multimodul. – cetnar

0

Krieg mit Quellen

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <webResources> 
     <resource> 
      <directory>${build.sourceDirectory}</directory> 
      <targetPath>src</targetPath> 
     </resource> 
     </webResources> 
    </configuration> 
    </plugin>