在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>
使用上述配置,运行 mvn软件包-Premote 将不会连接到内部存储库,因此超时不会成为一个因素。
您可以通过在设置中添加一些额外的配置来避免在每个构建中指定配置文件:
<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>



