我希望在同一个POM.xml文件中有2个打包目标。 2个包装目标将衍生出2个不同的罐子
答案 0 :(得分:0)
这并不是maven背后的精神,你只能构建一个工件。您可以通过在父pom(包装modules
)下将两个单独的工件保留为pom
来管理多个工件。
例如:
pom.xml在... / com / product / parent / child1(构建child1 jar)
<project xmlns="...">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.product</groupId>
<artifactId>parent</artifactId>
</parent>
<groupId>com.product.parent</groupId>
<artifactId>child1</artifactId>
<packaging>jar</packaging>
<name>Child1 jar</name>
<properties>
...
</properties>
<build>
<plugins>
<plugin>
etc...
<plugin>
<plugins>
<build>
<dependencies>
...
</dependencies>
</project>
pom.xml在... / com / product / parent / child2(构建子jar)
<project xmlns="...">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.product</groupId>
<artifactId>parent</artifactId>
</parent>
<groupId>com.product.parent</groupId>
<artifactId>child2</artifactId>
<packaging>jar</packaging>
<name>Child2 jar</name>
<properties>
...
</properties>
<build>
<plugins>
<plugin>
etc...
<plugin>
<plugins>
<build>
<dependencies>
...
</dependencies>
</project>
为了完整起见,这里有一个将你的罐子组成一个单独的耳部工件的例子。这也是您父位置下的模块。 pom.xml在... / com / product / parent / child-ear(构建child-ear ear组成child1和child2 jar):
<project xmlns="...">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.product</groupId>
<artifactId>parent</artifactId>
</parent>
<groupId>com.product.parent</groupId>
<artifactId>child-ear</artifactId>
<packaging>ear</packaging>
<name>Child EAR</name>
<properties>
...
</properties>
<build>
<plugins>
<plugin>
etc...
<plugin>
<plugins>
<build>
<dependencies>
<dependency> <!-- include the above jars in my child-ear -->
<groupId>com.product.parent</groupId>
<artifactId>child1</artifactId>
</dependency>
<dependency>
<groupId>com.product.parent</groupId>
<artifactId>child2</artifactId>
</dependency>
</dependencies>
</project>
父pom:pom.xml在... / com / product / parent中(在child1和child2 jar poms之上)
<project xmlns="...">
<modelVersion>4.0.0</modelVersion>
<parent>
...
</parent>
<groupId>com.product</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<name>Parent Assembly</name>
<modules> <!-- child modules to be executed as part of this build -->
<module>child1</module>
<module>child2</module>
<module>child-ear</module>
</modules>
<properties>
...
</properties>
<build>
<plugins>
<plugin>
etc...
<plugin>
<plugins>
<build>
</project>
有一些关于多个模块poms的讨论:
除此之外,你应该掌握maven如何处理事情(因为它非常局限于支持熟悉度:
如果您希望自己可以拥有一个拆开包装的装配pom,并将依赖关系重新打包到其他结构中(或者将罐子包装成战争或其他任何东西)。请参阅assembly:single
mojo目标,了解如何使用此功能(因为它更加明显,可能超出了您的问题范围。