Я пытаюсь использовать Maven для создания исполняемого файла JAR, который включает в себя зависимости в отдельном каталоге. Я видел много вопросов на SO о создании «uberjar» - я этого не хочу. Я хочу, чтобы зависимости были скопированы в каталог lib следующим образом (и файл jar MANIFEST.MF
с записью ClassPath
, указывающей на них):
/myApp
myApp.SNAPSHOT-1.0.jar
/lib
hibernate.jar
log4j.jar
...
В качестве дополнительного бонуса было бы неплохо, если бы я мог скопировать /src/main/resources/*
в /myApp/conf
и затем сжать весь каталог /myApp
в myApp.zip
.
РЕДАКТИРОВАТЬ: я использую плагин maven-dependency-plugin и maven-resources-plugin и maven-jar-plugin. Это то, что я включаю в мой pom.xml (который копирует зависимости времени выполнения в / target / release / lib, чтобы я мог заархивировать / target / release и он готов к работе):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<outputDirectory>
${project.build.directory}/release/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/release</outputDirectory>
<resources>
<resource>
<directory>src/main/config</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/release/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>