2010-04-08 24 views
9

Hay dos proyectos: 1) proyecto de applet que genera el archivo jar 2) proyecto de aplicación web que debe alojar el archivo jar.Maven copie la salida del proyecto a otros recursos del proyecto

Después de que (1) termine de compilarse, el archivo jar applet debe copiarse en la carpeta webapp de (2). El objetivo es que (2) aloje el applet (1) en Internet.

Muchos ejemplos explican cómo utilizar otro proyecto como dependencia de la biblioteca. Otros ejemplos, muestran cómo usar el plugin ant para copiar archivos. No estoy seguro de cómo configurarlo correctamente, para que 'mvn install' en el proyecto principal haga la copia en el momento adecuado.

+0

Use [dependency: copy] (http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html). – lexicore

Respuesta

6

Declararía el applet como una dependencia de la aplicación web, cópielo a la aplicación web justo antes de empaquetar usando el Dependency plugin y su objetivo copy. Toda la fuerza solución se parece a esto:

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

declarando el applet como dependencia es para el fin reactor de acumulación (pero no estoy 100% seguro de que se requiere) .

+0

Sí, eso funcionó al 100%. ¡Eres rápido! Y, sí, el reactor requirió la dependencia (establecido en proporcionado). – Thomas

+0

@Thomas Me alegro de que haya sido útil. Gracias por los comentarios (y por confirmar mi poca duda). –

+0

Solo un comentario increíblemente menor: el ** proporcionado ** evita que el contenedor se copie en ** WEB-INF/lib **, no ** WEB-INF/classes **. Pero evita que se copie de manera redundante y ese es el punto importante. Una respuesta útil, gracias por publicar. –

Cuestiones relacionadas