当前位置: 首页 > 面试题库 >

如何在下载依赖项时使Maven提前超时?

梁丘扬
2023-03-14
问题内容

我正在使用Apache Maven构建我的项目,并配置了一个自html" target="_blank">定义存储库,但是当它访问该存储库时,它会挂起很长时间

下载: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>

使用上述配置,运行 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>


 类似资料:
  • 我正在eclipse中建立一个项目。此项目通过命令行成功构建(所有、、)等命令都运行良好。同时在STS或Eclipse上设置此项目。我看到有些依赖项没有下载,尽管它们存在于中。但是,在maven存储库中搜索它们,并将jar下载到我的本地计算机,然后将它们添加到构建路径中,就可以在Eclipse上运行。 我们需要对eclipse做什么来确保它从存储库下载所有的依赖项。 我的POM:

  • 问题内容: 我创建了一个非常简单的默认应用程序,用于在Windows 7计算机上测试Eclipse Indigo / Maven v3.0.1设置。Hello World应用程序可以从Eclipse正常运行。 现在从命令行尝试进行测试。 在这一点上,我看到Maven下载了大量的依赖项。出于某种原因,尽管下载它会停滞不前,但只会部分停止。每次都不在同一时间,但是当前始终是相同的jar文件,例如… h

  • 问题内容: 我需要将我们的maven build java项目发布给远程质量检查团队。为此,我想下载所有依赖项,并发送给他们,这样他们就不需要下载它们了。 当前,所有依赖项都在pom.xml文件中定义,并且我们使用mvn install或mvn包来构建项目。一些项目成员使用uber jars,其他一些项目则使用jars +依赖项来执行。 什么是最简单的方法来预打包相关的jar文件,以使从Inter

  • 一个月前,我可以在IntelliJ的基础上从头开始成功地构建Java应用程序,现在,我必须升级spring boot以获得一些新功能。但是,在我将spring boot的版本从2.2.2更改之后。发布到其他版本,然后单击“重新加载所有Maven项目”按钮,我会收到以下消息: 一个月前下载2.2.2还可以。释放。为什么此时更新失败?我的信息如下:MacOS 12.2,捆绑(Maven 3),Java

  • Maven依赖项处理(即下载)是否通过插件完成 Maven是否在秘密使用依赖插件(https://maven.apache.org/plugins/maven-dependency-plugin/)?

  • 我在Maven下载Selenium3.0时遇到了问题。显示以下错误 下面是在pom.xml中添加依赖项的代码。