如何在下载依赖项时使Maven提前超时?
我正在使用Apache Maven构建我的项目,并配置了一个自定义存储库,但是当它访问该存储库时,它会挂起很长时间
下载:http
:
//maven.mycompany.com/m2/org/springframework/spring/2.5.6/spring-2.5.6.pom
几分钟后,它就会从中央存储库下载
下载:http
:
//repo1.maven.org/maven2/org/springframework/spring/2.5.6/spring-2.5.6.pom已下载12K(spring-2.5.6.pom)
我希望超时比那快得多。所有较新版本的Maven都会发生这种情况。2.0.6版或更早的版本没有此问题,它将更快地超时。
回答:
在2.1之前的Maven版本中,没有方法可以将客户端配置为超时,但是如果您设置了更新策略,则可以将其配置为较少检查更新。这部分解决了这个问题。
例如:
<repository> <id>myrepo</id>
<url>http://maven.mycompany.com/m2</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
有效值为:
- 始终-始终检查何时启动Maven以获取较新版本的快照
- 从不-从不检查较新的远程版本。一旦关闭,便可以执行手动更新。
- 每天(默认)-检查一天的第一轮(当地时间)
- 时间间隔:XXX-每XXX分钟检查一次
另一个考虑因素是用于托管内部存储库的软件。使用Nexus等存储库管理器,您可以通过管理器管理所有外部远程存储库连接,并为这些远程连接配置超时。然后,您的客户端将仅查询存储库管理器,该管理器应在超时允许的范围内尽快响应。
更新:
如果您知道某个特定存储库将不再提供依赖项,则可以将其分为一个配置文件,因此该构建中不会引用它。
<profiles> <profile>
<id>remote</id>
<repositories>
<repository>
<id>central</id>
<url>http://repo1.maven.org</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
...
</repositories>
</profile>
<profile>
<id>internal</id>
<repositories>
<repository>
<id>myrepo</id>
<url>http://maven.mycompany.com/m2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
...
</repositories>
</profile>
</profiles>
使用上述配置,运行 将不会连接到内部存储库,因此超时不会成为一个因素。
您可以通过在设置中添加一些额外的配置来避免在每个构建中指定配置文件:
<settings> ...
<activeProfiles>
<activeProfile>internal</activeProfile>
<activeProfile>remote</activeProfile>
</activeProfiles>
...
</settings>
对于Maven 2.1,您可以通过在Maven设置中添加服务器上的配置(~/.m2/settings.xml
默认情况下)来设置超时,例如:
<server> <id>myrepo</id>
<configuration>
<timeout>5000</timeout> <!-- 5 seconds -->
</configuration>
</server>
以上是 如何在下载依赖项时使Maven提前超时? 的全部内容, 来源链接: utcz.com/qa/430072.html