我的情况:我有一个包含几个 Maven 模块的项目。我对其中之一进行了更改。我突然发现,由于其他模块的错误,我的项目不再可能构建。为了解决这个问题,我需要运行 SVN UPDATE 并重建项目。
我的假设:可能,在我的模块的构建过程中,一些工件来自中央存储库并具有最新版本,而其他工件仍然过时并来自我的本地存储库。
一个问题:我不想在每次有人更新另一个 Maven 模块时重建我的项目。我想从中央存储库下载已经构建的工件,而不是自己重建它们。是否可以?
我的情况:我有一个包含几个 Maven 模块的项目。我对其中之一进行了更改。我突然发现,由于其他模块的错误,我的项目不再可能构建。为了解决这个问题,我需要运行 SVN UPDATE 并重建项目。
我的假设:可能,在我的模块的构建过程中,一些工件来自中央存储库并具有最新版本,而其他工件仍然过时并来自我的本地存储库。
一个问题:我不想在每次有人更新另一个 Maven 模块时重建我的项目。我想从中央存储库下载已经构建的工件,而不是自己重建它们。是否可以?
你可以告诉 Reactor 要构建哪些模块。在您只更改单个模块并希望加快构建速度的情况下,您可以将 -pl (项目位置)参数传递给 maven。例如:
mvn -pl module-with-changes
这将构建单个模块,同时从本地 Maven 存储库获取其他依赖项或从 Central 下载(无论是最新的)。也就是说,如果您已经为整个项目运行了 mvn install 并且其他工件尚未在中央存储库中更新,那么 Maven 会将您的本地工件视为最新并且不会重新下载它们。
使用 -pl 参数可能会遇到的另一个问题是,当您的项目中的其他模块依赖于您正在构建的模块时。如果依赖模块中存在问题,您将不会通过仅构建依赖模型来看到它。为避免这种情况,您可以通过 -amd (也使依赖项)。像这样:
mvn -pl module-with-changes -amd
这将触发带有更改的模块+依赖于带有更改的模块+它们的依赖项的模块的构建。
您可以从此处获取有关 Reactor 参数的更多信息:http: //www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/