2012-03-03 13 views
0

私はマルチモジュールプロジェクトを持っています。私は私のプロジェクトにコンパイルされたすべてのソースコードのjarを作成するメインの "ベースコード"モジュールを持っています。mavenはjarに依存するアーティファクトコードを埋め込みます

私は、同じソースコードから実行可能なjarを作成する別のモジュール "executable"を持っています。重複を避けるために、私はクラスを "ベースコード"モジュールから引き出したいと思っています。

私は "実行可能"モジュールの "ベースコード"モジュールを依存関係にするだけで済むと思いました。しかし、私は空の瓶を手に入れるだけです。私は間違って何をしていますか? (私の「実行」POMは以下の通りです)

<project> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
    <groupId>com.myproject/groupId> 
    <artifactId>myproject</artifactId> 
    <version>1</version> 
</parent> 
<artifactId>executable</artifactId> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
    <groupId>com.myproject/groupId> 
     <artifactId>code-base</artifactId> 
     <version>1</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <finalName>runnable</finalName> 
       <archive> 
        <manifest> 
         <mainClass>com.myproject.Main</mainClass> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib/</classpathPrefix> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
</project> 
+0

com.myproject.Mainは、ベースコードモジュールまたは実行可能モジュール内のどこにありますか? – yorkw

+0

これはベースコードモジュールの中にあります。そのため、これを行う適切な方法は何とかそれを依存関係 – springcorn

答えて

3

あなたが探しているものをおそらくユーバージャーである:すべての埋め込まれたjarファイルの依存関係を持つ単一のjarファイル、Mavenのアセンブリ・プラグインのサポートの新規バージョン、このようあらかじめ定義された4つのディスクリプタのうちの1つ。hereをチェックしてください。

は、このようなあなたのmaven-jarファイル・プラグインを置き換えるのmaven-組立・プラグインを使用してみてください:

<!-- Create single executable jar with all dependencies unpacked and embedded --> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <archive> 
     <manifest> 
      <mainClass>com.myproject.Main</mainClass> 
      <addClasspath>true</addClasspath> 
      <classpathPrefix>lib/</classpathPrefix> 
     </manifest> 
     </archive> 
     <descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs> 
    </configuration> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals><goal>single</goal></goals> 
     </execution> 
    </executions> 
    </plugin> 

また、あなたもこれを行うにはmaven-shade-pluginを使用することができます。

希望に役立ちます。

関連する問題