Como sabes, Maven se usa para administrar las dependencias de un projecto en Java. Sin embargo, cuando se construye el proyecto sólo crea el JAR del mismo. Para que cree un subdirectorio que contenga los JARs de las dependencias, es necesario configurar el
maven-dependency-plugin
en el archivo pom.xml
. Además, para que el archivo META-INF/MANIFEST.MF
contenga el classpath apuntando a dicho subdirectorio, es necesario configurar el maven-jar-plugin
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<!-- agrega el classpath al archivo MANIFEST.MF-->
<addClasspath>true</addClasspath>
<classpathPrefix>lib-${project.version}/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<!-- crea un directorio que contenga los JARs de las dependencias -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib-${project.version}</outputDirectory>
<includeScope>compile</includeScope>
<!-- en particular, no incluir las dependencias con scope test -->
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>