Maven多模块w。每个模块的装配选项?

时间:2012-10-17 13:01:07

标签: maven maven-plugin

我有一个多模块maven设置,我想在其中包装一个带有依赖关系的jar,其他所有人都可以保持原样。我的配置如下所示:

根:

<project...>
    <modelVersion>4.0.0</modelVersion>
    <name>Foo</name>
    <artifactId>Foo</artifactId>
    <groupId>org.example</groupId>
    <version>1.0</version>
    <packaging>pom</packaging>

     <modules>
         <module>Bar1</module>
         <module>Bar2</module>
         <module>Bar3</module>
     </modules>
 </project>

模块(Bar1):

<project...>
    <modelVersion>4.0.0</modelVersion>
    <name>Foo - Bar1</name>
    <artifactId>Bar1</artifactId>
    <groupId>${project.parent.groupId}</groupId>

    <parent>
        <artifactId>Foo</artifactId>
        <groupId>org.exmaple</groupId>
        <version>1.0</version>
    </parent>

    <build>
        <finalName>Bar1</finalName>
        <plugins>
        ...
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                        <mainClass>org.exmaple.bar1.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            ...
        </plugins>
    </build>
</project>

运行mvn package将为我提供模块的所有jar / war文件。但要生成具有依赖关系的jar,我必须切换到模块并在cd Bar1; mvn assembly:single之外触发程序集。

是否有机会更改设置,以便在mvn package其中一个jar包含依赖项后构建?

干杯。

2 个答案:

答案 0 :(得分:1)

将程序集插件包含在程序包阶段的执行中:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <descriptor>src/assembly/bin.xml</descriptor>
    <finalName>apache-maven-cookbook-${pom.version}</finalName>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

maven assembly page

所述

答案 1 :(得分:0)

您需要为程序集插件定义执行。否则它将不会被执行。插件的网站可能有点误导,因为有一个关于配置的部分看起来像你的。但是如果你想要实际执行,你需要定义它。