2016-05-16 5 views
1

私は200以上のモジュールを持つ非常に大きなjava mavenプロジェクトを持っています。それはそのままです。私はこれらのモジュールをすべて単一のjarにマージしようとしています。複数のサブモジュールを持つmavenプロジェクトから単一のライブラリjarを作成するにはどうすればよいですか?

場合によっては、ただ1つの新しいMaven依存関係を宣言することは非常に便利です。 my-library-5.2.4-SNAPSHOT-bundle.jarなど、新しいプロジェクトでも同様です。

私はmavenアセンブリプラグインを使用しようとしました。新しいjarファイルを作成することができます.jarにはすべてのモジュールjarが含まれています。インストールすると、ローカル.m2 -folderに正しく移動します。 Jarは他のプロジェクトの依存として宣言することができます。

しかし、私のJavaクラスでは、ライブラリ内のモジュールをインポートできないという問題があります。インポートはそれらを認識しません。

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>make-bundle</id> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <phase>package</phase> 
        <configuration> 
         <descriptors> 
          <descriptor>assembly.xml</descriptor> 
         </descriptors> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

そして、私のassembly.xmlは次のようになります:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 
    <id>bundle</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <moduleSets> 
     <moduleSet> 
      <useAllReactorProjects>true</useAllReactorProjects> 
      <binaries> 
       <outputDirectory>modules</outputDirectory> 
       <unpack>false</unpack> 
      </binaries> 
     </moduleSet> 
    </moduleSets> 
</assembly> 
+0

http://www.mkyong.com/maven/create-a-fat-jar-file-maven-assembly-plugin/ –

答えて

0

Mavenの実践:私は私のルートのpom.xmlにこのビルドセクションを追加した

親モジュールいますすべての子モジュールが共通に使用する依存関係とプラグインを定義します。それ自身の出力を持つべきではありません。

親モジュールで行うのではなく、他のモジュール成果物をすべて集約する「配布」サブモジュールを使用する必要があります。例えば

-

一般的に、すべてのプロジェクトのための単純な親ポンポンファイルプロジェクト(パッケージ「POM」)を作成します

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>my.library</groupId> 
    <artifactId>my-library-parent</artifactId> 
    <version>1.0.0</version> 
    <packaging>pom</packaging> 

    <distributionManagement> 
     <repository> 
      <id>site</id> 
      <url>http://url_id</url> 
     </repository> 
    </distributionManagement> 

</project> 

今、あなたはそれを使用したいすべてのプロジェクトのために、単純にこれを含めますセクション:

<parent> 
    <groupId>my.library</groupId> 
    <artifactId>my-library-parent</artifactId> 
    <version>1.0.0</version> 
</parent> 
関連する問題