2013-07-16 16 views
11

依存性(maven shade plugin、maven dependency plugin、maven assemblyプラグイン)を持つ実行可能なjarファイルをビルドするためのソリューションをたくさん読んでいます。 jarファイルを実行可能なjarファイルに再パッケージします。実行可能なjarで展開された依存関係jarをパックする唯一のプラグインは1つのjarプラグインですが、このプラグインはランナーコードを実行可能なjarファイルに追加します。依存関係を持つ実行可能なjarファイルを作成するためのMavenプラグイン(jarファイルとjarファイル)

├─executable.jar 
├──lib/ 
├───dependency1.jar 
├───dependency2.jar 
. 
. 
. 

と仕事への解決策:

このようなjarファイルを作成するための任意の解決策はあります。

+0

あなたはおそらくアーカイブ内のjarファイルにバンドルされているクラスをロードするために、カスタムクラスローダーが必要になります。 [one jar](http://one-jar.sourceforge.net/)を見ましたか? –

答えて

0
<plugins> 
      <plugin> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <additionalProjectnatures> 
         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
        </additionalProjectnatures> 
        <additionalBuildcommands> 
         <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
        </additionalBuildcommands> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArgument>-Xlint:all</compilerArgument> 
        <showWarnings>true</showWarnings> 
        <showDeprecation>true</showDeprecation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>org.test.int1.Main</mainClass> 
       </configuration> 
      </plugin> 
     </plugins> 
+0

あなたはpom.xmlにyhisを追加できます。その後、実行可能なjarを取得できます – Ritesh

1

最も一般的な方法は、あなたはまた、あなたが設定

<configuration> 
    <appendAssemblyId>false</appendAssemblyId> 
    <descriptors> 
     <descriptor>src/main/assembly/assembly.xml</descriptor> 
    </descriptors> 
</configuration> 

ためのアセンブリ記述子を指定することができます

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <archive> 
       <manifest> 
        <mainClass>com.somewhere.Main</mainClass> 
       </manifest> 
     </archive> 
     <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
    <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
     </execution> 
    </executions> 
</plugin> 

を必要とするように、パッケージを設定することができますアセンブリのプラグインを使用することですそしてassembly.xml自体

<assembly> 
    <id>assembly</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 
私はあなたが最後のものを探しているの理解限り

<!-- lib --> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
    </dependencySet> 
</dependencySets> 

アセンブリ記述子はまた、依存関係のセクションを含めることができます。 jarファイルを変更せずにアセンブリに組み込むだけです。

<assembly> 
    <id>assembly</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <!-- lib --> 
    <dependencySets> 
     <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

とポンポン部分::だから、最終的な解決策は次のようになります

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <descriptors> 
      <descriptor>src/main/assembly/assembly.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
     </execution> 
    </executions> 
</plugin> 
関連する問題