Mavenを使用して依存関係を別のディレクトリに含む実行可能なjarファイルを作成しようとしています。私は "uberjar"を作成することに関して、そう多くの質問を見ました - 私はそれを望んでいません。追加ボーナスとして別の "lib"フォルダ(uber jarではなく)に依存関係を含む実行可能なjarファイルを作成する方法
/myApp
myApp.SNAPSHOT-1.0.jar
/lib
hibernate.jar
log4j.jar
...
私があれば、それはいいだろう:私が欲しいのはそうのような「LIB」ディレクトリにコピーdepenedencies(およびそれらを指すClassPath
エントリを持つjarファイルMANIFEST.MF
ファイル)を持っていることです/src/main/resources/*
を/myApp/conf
にコピーしてから、/myApp
ディレクトリ全体をmyApp.zip
に圧縮することもできます。
EDIT:maven-dependency-pluginとmaven-resources-pluginとmaven-jar-pluginを使用します。
<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>
うーん、私はそれについて知りませんでした。しかし、クラスパスのためにその場所を使うために私のjarのマニフェストファイルをどのように更新すればよいでしょうか? –
[マニフェストのカスタマイズ](http://maven.apache.org/plugins/maven-jar-plugin/examples/manifest-customization.html)はどうですか?もちろん、プロパティやMaven変数を使用してください。 –
@dma_k、うーん、うまくいくかもしれない、私はそれを調べるだろう。 –