2012-02-11 8 views
4

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> 

答えて

5

Mavenの依存関係:これは私が(実行時の依存関係は、私は/ターゲット/リリースをzip化することができます/ターゲット/リリース/ libにするように、それは行く準備ができていたコピー)私のpom.xmlに含めるものですプラグインには、あなたが望むことを行う必要があるコピー依存関係のゴールがあります。

mvn dependency:copy-dependencies 

利用可能なオプションについては、hereを参照してください。すなわち、 'outputDirectory'は依存関係を/ libにコピーする

+0

うーん、私はそれについて知りませんでした。しかし、クラスパスのためにその場所を使うために私のjarのマニフェストファイルをどのように更新すればよいでしょうか? –

+0

[マニフェストのカスタマイズ](http://maven.apache.org/plugins/maven-jar-plugin/examples/manifest-customization.html)はどうですか?もちろん、プロパティやMaven変数を使用してください。 –

+0

@dma_k、うーん、うまくいくかもしれない、私はそれを調べるだろう。 –

関連する問題