【发布时间】:2018-05-23 00:22:19
【问题描述】:
mvn compile 可以与多模块 Maven 反应器构建一起使用吗?
我正在尝试开发一个使用反应器/多模块 Maven 构建的项目。当mvn compile 失败* 时,熟悉该项目的人告诉我需要mvn install,而不是mvn compile,因为它是一个反应堆构建。
虽然mvn install 确实有效,因为 Maven 然后可以将构建依赖项从本地存储库中拉出,但我认为我必须发布到存储库似乎是错误的,因为这样做会产生问题,尤其是在 CI 环境中。
但是,我能找到的围绕多模块项目的几乎所有示例都使用mvn clean install,包括Maven by Example。我没有找到可以归因于多模块项目的 mvn compile 示例,这让我倾向于认为这里存在 Maven 限制/要求。
我注意到 mvn compile 在 Maven by Example 中提供的示例确实为我工作,但这是一个相对简单的项目,所以我知道我不能认为它应该一般工作。
* 它失败是因为它找不到在 reactor 构建之前成功构建的依赖项之一。
【问题讨论】:
-
你用的是哪个版本的maven?
-
Apache Maven 3.5.2
-
据我所知,maven 需要将构建的工件放入本地 repo 以便能够找到它,如果它被用作其他项目的依赖项,即使是多模块项目。我不确定您为什么不希望工件出现在本地存储库中?
-
@tsolakp 考虑一个 CI 服务器,机器本地意味着该服务器上的所有构建都是全局的。通过执行
install,一个构建的编译工件对另一个构建可见。这意味着配置错误的构建可能会错误地成功,因为它可能会从本地存储库中提取依赖项。或者,由于来自构建的本地 repo 副本与预期的远程发布的依赖项之间的差异,另一个构建可能会在它应该通过时失败。 -
多模块项目通常使用
mvn clean package构建。仅当任何其他项目(与反应器中的模块无关)将使用一个或多个已构建项目作为依赖项时,才需要安装...
标签: java maven maven-reactor