【发布时间】:2021-05-02 07:55:18
【问题描述】:
有一个模块化的 Maven 项目,其中包含多个模块(本例中为 3 个),它们以某种方式相互依赖。
这是根项目pom(没什么特别的):
<project>
<modelVersion>4.0.0</modelVersion>
<description>Root project for modules build</description>
<groupId>abc</groupId>
<artifactId>xyz</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<modules>
<module>modules/first</module>
<module>modules/second</module>
<module>modules/third</module>
</modules>
</project>
在构建根项目 (mvn package) 后,我们在“目标”文件夹中相应地获得了三个工件
%rootdir%/modules/first/target/artifact_1.jar
%rootdir%/modules/second/target/artifact_2.jar
%rootdir%/modules/third/target/artifact_3.jar
我想将artifact_3.jar 复制到%rootdir%/target/main_artifact.jar 中,以强调整个构建的目标是这个jar 文件。
我知道如何将文件复制到特定文件夹中,但这种“命令式”复制似乎是一种打破 Maven 抽象的非常规操作。
将工件main_artifact.jar 放入正确位置%rootdir%/target/ 的正确方法是什么?
假设必须有一个配置要添加到%rootdir%/pom.xml。如果你能分享一个标准的 Maven 方法来做到这一点,我将不胜感激。
【问题讨论】:
-
为什么你的项目有中级?为什么不删除
modules目录?或者最好在modules目录中创建一个包含其他三个模块的 pom 文件......除此之外,为什么需要将该工件复制到不同的位置? -
太多问题让我们无处可去(到“这不是我们习惯的”的立场)。我有
modules目录,因为这个项目组织服务于与问题无关的项目维护的其他目的。假设我们已经删除了modules并获得了相同的三个模块上一层。那时会发生什么变化?复制工件不是“需要的”——可以保持原样。唯一的目标是声明意图,正如我上面所说的“强调整个构建的目标” -
首先,如果您认为这些问题没有帮助?好的,你看着办。所以对此的简单回答是:工件的正确位置是相应模块的
target目录。复制是不可能的,也没有用。根目录绝对没有意义,因为根模块是包装pom这意味着它不会产生任何东西...基于您拒绝回答问题...我无法再提供帮助...
标签: java maven multi-module artifact