Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven copy project output into other project resources

Tags:

maven-2

applet

There are two projects: 1) applet project that outputs jar file 2) web app project that should host the jar file.

After (1) finished building, the applet jar file should be copied into the webapp folder of (2). The purpose is that (2) will host the applet (1) on the Internet.

A lot of examples explain how to use another project as a library dependency. Other examples, show how to use ant plugin to copy files. I am unsure on how to properly set this up, so that 'mvn install' on the parent project will do the copying at the right time.

like image 987
Thomas Avatar asked Apr 08 '10 20:04

Thomas


1 Answers

I would declare the applet as a dependency of the webapp, copy it to the webapp just before packaging using the Dependency plugin and its copy goal. The whole solution might looks like this:

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

Declaring the applet as dependency is for the reactor build order (but I'm not 100% sure it is required).

like image 151
Pascal Thivent Avatar answered Nov 18 '22 02:11

Pascal Thivent