设置maven以编译(而不是下载)依赖项

时间:2016-06-26 10:32:47

标签: maven build dependency-management multi-module activemq-artemis

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

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
...

例如artemis-core-client包含在我开始克隆的git存储库中,我预计maven会从那里构建它。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

检查official doc是否有继承与聚合差异,以进一步澄清它。

从Stack Overflow,跟随线程也可能很有趣: