2010-04-08 23 views
9

Istnieją dwa projekty: 1) projekt apletu, który wyprowadza plik JAR 2) projekt aplikacji internetowej, który powinien obsługiwać plik JAR.Maven skopiować dane wyjściowe projektu do innych zasobów projektu

Po zakończeniu (1) budowania plik jar apletu powinien zostać skopiowany do folderu webapp (2). Celem jest (2) hostowanie apletu (1) w Internecie.

Wiele przykładów wyjaśnia, jak używać innego projektu jako zależności od biblioteki. Inne przykłady pokazują, jak używać wtyczki ant do kopiowania plików. Nie jestem pewien, jak to właściwie ustawić, aby "instalacja mvn" w projekcie nadrzędnym wykonywała kopiowanie we właściwym czasie.

+0

Użyj [zależność: kopia] (http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html). – lexicore

Odpowiedz

6

Zadeklarowałbym aplet jako zależność od aplikacji webowej, skopiuj ją do aplikacji internetowej tuż przed zapakowaniem, używając Dependency plugin i jego celu copy. Cała potęga rozwiązanie wygląda tak:

<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> 

Deklarowanie aplet jako zależność jest na porządku budowy reaktora (ale nie jestem w 100% pewien, że jest to wymagane) .

+0

Tak, to działało w 100%. Jesteś szybki! I tak, reaktor wymagał zależności (ustawionej na dostarczoną). – Thomas

+0

@Thomas Cieszę się, że to było pomocne. Dziękuję za opinie (i za potwierdzenie moich drobnych wątpliwości). –

+0

Tylko jeden niewiarygodnie niewielki komentarz: ** pod warunkiem ** powoduje, że słoik nie jest kopiowany do ** WEB-INF/lib **, a nie ** WEB-INF/classes **. Ale zapobiega kopiowaniu w sposób redundantny i to jest ważny punkt. Przydatna odpowiedź, dzięki za publikację. –

Powiązane problemy