如果您遵循推荐的方法并使用专用的本地存储库进行集成测试(例如target/local-repo),您可能会遇到很长的构建时间。如果测试存储库已被清理,插件需要从中央存储库重新下载所有工件,由此产生的网络流量会减慢测试执行速度。
但是您可以配置插件以从本地存储库下载已发布的工件。注意:这将在没有可选设置的情况下使用 Maven >= 2.0.9,因为许多插件版本被锁定在超级 POM 中。对于旧版本,您必须锁定插件版本。
要启用此功能,您必须在项目中添加一个settings.xml文件(例如在src/it/settings.xml 中)并修改插件配置如下:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<version>1.9</version>
<configuration>
...
<settingsFile>src/it/settings.xml</settingsFile>
...
</configuration>
</plugin>
</plugins>
</build>
...
</project>设置必须包含以下内容,这些内容有效地告诉 Maven 将本地存储库用作远程存储库:
<?xml version="1.0"?>
<settings>
<profiles>
<profile>
<id>it-repo</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>local.central</id>
<url>@localRepositoryUrl@</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local.central</id>
<url>@localRepositoryUrl@</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>令牌@localRepositoryUrl@将自动被 Invoker 插件替换为用于 Maven 调用的本地存储库的 URL。