2010-04-08 5 views
9

Es gibt zwei Projekte: 1) Applet-Projekt, das JAR-Datei ausgibt 2) Web-App-Projekt, das die JAR-Datei hosten sollte.Maven Projektausgabe in andere Projektressourcen kopieren

Nach (1) abgeschlossene Erstellung sollte die Applet JAR-Datei in den Webapp-Ordner von (2) kopiert werden. Der Zweck ist, dass (2) das Applet (1) im Internet hostet.

In vielen Beispielen wird erläutert, wie ein anderes Projekt als Bibliotheksabhängigkeit verwendet wird. Andere Beispiele zeigen, wie man mit dem ant-Plugin Dateien kopiert. Ich bin mir nicht sicher, wie ich das richtig einrichten soll, damit "mvn install" im übergeordneten Projekt den Kopiervorgang zum richtigen Zeitpunkt ausführt.

+0

Verwenden Sie [Abhängigkeit: Kopie] (http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html). – lexicore

Antwort

6

Ich würde das Applet als eine Abhängigkeit der Webapp deklarieren, kopieren Sie es in die Webapp kurz vor der Verpackung mit der Dependency plugin und seine copy Ziel. Die gesamte Lösung könnte wie folgt aussieht:

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>my-applet</artifactId> 
     <version>${project.version}</version> 
     <scope>provided</scope> <!-- we don't want the applet in WEB-INF/classes --> 
    </dependency> 
    ... 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.1</version> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
       <artifactItem> 
        <groupId>${project.groupId}</groupId> 
        <artifactId>my-applet</artifactId> 
        <version>${project.version}</version> 
        <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory> 
        <destFileName>the-applet.jar</destFileName> 
       </artifactItem> 
       </artifactItems> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
</project> 

Deklarieren das Applet als Abhängigkeit für den Reaktor zu bauen ist, um (aber ich bin nicht 100% sicher, dass es erforderlich ist) .

+0

Ja, das hat 100% funktioniert. Du bist schnell! Und, ja, Reaktor benötigt die Abhängigkeit (festgelegt, um zur Verfügung gestellt). – Thomas

+0

@Thomas Froh, dass es hilfreich war. Danke für die Rückmeldung (und um meine kleinen Zweifel zu bestätigen). –

+0

Nur ein unwichtiger kleiner Kommentar: Der ** ** verhindert, dass der Krug in ** WEB-INF/lib ** kopiert wird, nicht ** WEB-INF/Klassen **. Aber es verhindert, dass es redundant kopiert wird, und das ist der wichtige Punkt. Eine nützliche Antwort, danke für die Veröffentlichung. –

Verwandte Themen