6

我在我的项目中添加了一个 Maven 依赖项,我的项目在本地编译,而它不在服务器上编译。它无法解决新添加的依赖项。

这是我的 pom.xml 文件:

    <repositories>
        <repository>
            <id>rep</id>
            <name>Repository</name>
            <url>http://artifacts.com/rep</url>
            <releases>
               <enabled>true</enabled>
               <updatePolicy>always</updatePolicy>
            </releases>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.project.rest</groupId>
            <artifactId>common</artifactId>
            <version>2.0.5</version>
        </dependency>
    </dependencies>

这是我的控制台输出错误:

 Downloading: http://artifacts.com/rep/com/project/rest/common/2.0.5/common-2.0.5.pom
    [WARNING] The POM for com.project.rest:common:jar:2.0.5 is missing, no dependency information available

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 6.154s
    [INFO] Finished at: Tue Feb 03 06:58:35 BRT 2015
    [INFO] Final Memory: 9M/152M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project server: Could not resolve dependencies for project org.server:
    server:jar:2.5.1-SNAPSHOT: The following artifacts could not be resolved: com.project.rest:common:jar:2.0.5:
    Could not find artifact com.project.rest:common:jar:2.0.5 in rep (http://artifacts.com/rep) -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

(我隐藏了所有真实的 URL 和包。)

可能是什么问题呢?

4

5 回答 5

2

第一行“Downloading:...”仅表示 maven 尝试下载工件。这不是关于成功的声明。如果 maven 成功,您将获得以“已下载:...”开头的另一行

因此,在您的情况下,maven 无法下载该文件。检查浏览器中记录的 url 是否存在并且是否受保护。

顺便说一句<updatePolicy>always</updatePolicy>,对于发布 repos 来说并不常见,因为发布不应该再改变了。

于 2015-02-03T11:01:42.637 回答
2

DependencyResolutionException

(来源:Maven Confluence

当 Maven 无法下载依赖项时,通常会发生此错误。此错误的可能原因是:

  1. POM 错过了<repository>托管工件的声明。
  2. 您配置的存储库需要身份验证,而 Maven 未能向服务器提供正确的凭据。在这种情况下,请确保您${user.home}/.m2/settings.xml包含一个与要使用的远程存储库匹配的<server>声明。有关更多详细信息,请参阅Maven 设置参考<id><id>
  3. 有问题的远程存储库使用 SSL,并且运行 Maven 的 JVM 不信任服务器的证书。
  4. 存在阻止 Maven 访问任何远程存储库的一般网络问题,例如缺少代理配置。
  5. 您已将 Maven 配置为执行严格的校验和验证,并且要下载的文件已损坏。
  6. Maven 未能将文件保存到您的本地存储库,LocalRepositoryNotAccessibleException有关详细信息,请参阅。
  7. 在 Maven 3 中,如果您刚刚下载失败并已修复它(例如,通过将 jar 上传到存储库),它将缓存失败。要强制刷新添加-U到命令行。

如果遇到与网络相关的一般问题,您还可以参考以下文章:

于 2016-08-30T19:36:59.363 回答
1

确保您的存储库配置正确。尝试在您的存储库中搜索 com.project.rest:commonversion 2.0.5

这是你自己的项目吗?你建的一些罐子?你确定你将它部署到你的仓库吗?如果它不在您的仓库中,请尝试在您的本地仓库中搜索它(通常是.m2/repository /com/project...)

于 2015-02-03T11:08:38.693 回答
0

您提到的项目不包含 POM,即它不是 MAVEN 项目。.m2(在 c 驱动器或您已安装的位置查看)存储库包含所有依赖项文件夹,看看那里是否包含所需的项目,即 com.project.rest。

于 2015-02-03T10:12:59.350 回答
0

就像控制台输出所建议的那样,您可以查看 Maven Wiki 页面 ( http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException ) 以获取有关问题所在位置的更多信息。

鉴于您提供的信息。我想我们正在研究第一个问题: POM 错过了托管工件的声明。

Maven 存储库分为三种类型:本地、中央和远程

在您的情况下,您的本地存储库包含项目特定的工件,但中央存储库不包含。

  1. 本地存储库位于您的本地计算机上。当您运行 Maven 构建时,Maven 会自动将所有依赖项 jar 下载到本地存储库中。
  2. 中央存储库是由社区提供的 Web 存储库,它包含许多常用库,可在此处找到 https://repo1.maven.org/maven2/
  3. 远程存储库是开发人员自己的自定义存储库,其中包含所需的库或其他项目 jar。开发人员使用标签在 POM 文件中定义这些存储库。

我建议如下:

  • 检查您的存储库标签,如果存储库是正确的
  • 检查存储库是否包含在您的依赖项标记中指定的工件
于 2020-02-04T16:59:38.060 回答