1

マルチモジュール プロジェクトがあり、さまざまなモジュールが Google グアバを依存関係として使用しています。別のサブモジュールは、すべての例のように、プロジェクトのディストリビューションをビルドするために使用されます。そのプロジェクトでは、アセンブリ プラグインを使用して、依存関係を持つモジュールの jar を含むディレクトリを作成します。問題は、Google グアバに依存するすべてのプロジェクトで、Google グアバのみを含む「jar-with-dependencies」タグのない個別の jar が作成されることです。

例えば:

    parent
    |- moduleA
       |- pom.xml
       |-src
         |- ...   
    |- dist 
       |- pom.xml
       |- src
          |- main
             |- assembly
                |- assembly.xml
       | - target
          |- libs
             |- moduleA-XX.x-SNAPSHOT.jar
             |- moduleA-XX.x-SNAPSHOT-jar-with-dependencies.jar
   |- pom.xml

moduleA-XX.x-SNAPSHOT.jar には google guava のみが含まれています。Google guava のみを含む jar を作成するとは思っていませんでした。

moduleA pom.xml

   <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/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>

     <parent>
       <groupId>foor.bar</groupId>
       <artifactId>parent</artifactId>
       <version>0.0</version>
     </parent>

     <artifactId>commons</artifactId>
     <version>0.0-SNAPSHOT</version>
     <packaging>jar</packaging>

     <name>Commons</name>

     <properties>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>

     <dependencies>
       <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>11.0</version>
       </dependency>
     </dependencies>

     <build>
       <!-- For annotations and other Java5 stuff -->
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.5.1</version>
           <configuration>
             <source>1.7</source>
             <target>1.7</target>
           </configuration>
         </plugin>
         <plugin>
           <artifactId>maven-assembly-plugin</artifactId>
           <version>2.3</version>
           <configuration>
             <descriptorRefs>
               <descriptorRef>jar-with-dependencies</descriptorRef>
             </descriptorRefs>
           </configuration>
           <executions>
             <execution>
               <id>make-assembly</id> 
               <phase>package</phase> <!-- bind to the packaging phase -->
               <goals>
                 <goal>single</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
       </plugins>
     </build>
   </project>

dist 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>bin</id>
     <formats>
       <format>dir</format>
     </formats>
     <includeBaseDirectory>false</includeBaseDirectory>
     <moduleSets>
       <moduleSet>

         <!-- Enable access to all projects in the current multimodule build! -->
         <useAllReactorProjects>true</useAllReactorProjects>

         <!-- Now, select which projects to include in this module-set. -->
         <includes>
           <include>**</include>
         </includes>
         <binaries>
           <attachmentClassifier>jar-with-dependencies</attachmentClassifier>
           <outputDirectory>libs/</outputDirectory>
           <unpack>false</unpack>
         </binaries>
       </moduleSet>
     </moduleSets>
   </assembly>
4

0 に答える 0