1

我克隆了 Apache ActiveMQ Artemis 项目的 git 存储库(https://github.com/apache/activemq-artemis),然后输入

mvn -Ptests test -pl :integration-tests

我很惊讶地看到如下日志消息

...
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-selector/1.4.0-SNAPSHOT/artemis-selector-1.4.0-20160625.030221-11.jar
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-core-client/1.4.0-SNAPSHOT/artemis-core-client-1.4.0-20160625.030211-11.jar
...

由于 egartemis-core-client包含在我一开始克隆的 git 存储库中,我预计 maven 只是从那里构建它。

这样,当我在核心客户端源中进行更改时,它们会被集成测试拾取。

相反,maven 正在从存储库下载 jar。

问题:如何配置 maven 以始终构建 git 存储库中的所有模块并仅下载“真正的”依赖项,我的意思是不在 git 存储库中的东西?

4

1 回答 1

2

您没有在主项目上执行 Maven 构建,在主项目上pom.xml确实定义了artemis-selectorartemis-core-client模块等等。

您正在测试及其上执行 Maven 构建pom.xml,其中仅定义了测试模块。这是一个侧面/测试项目,它以之前的 pom 文件作为父项,但它在其父模块定义中没有任何作用。因此,依赖关系不是作为模块而是作为 Maven 依赖关系来解析的。

您应该首先安装(通过mvn clean install)前一个项目,以便在本地 Maven 缓存中可以使用库(因此不会触发下载),然后执行该tests项目。


检查官方文档以了解继承与聚合的差异以进一步澄清它。

从 Stack Overflow 中,以下线程也可能很有趣:

于 2016-06-26T12:18:10.440 回答