8

一般来说,我该怎么做才能解决在 maven 存储库中找不到的资源,是否有另一个我可以添加到 pom.xml 的存储库列表?我尝试了列为命令行的解决方案,但它不起作用,即使 maven 报告它是成功的。

I tried to build test-analytics, but got error:

[INFO]    task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 6 resources
Downloading: http://repo1.maven.org/maven2/com/google/code/gwt-dnd/gwt-dnd/3.1.1/gwt-dnd-3.1.1.pom
[INFO] Unable to find resource 'com.google.code.gwt-dnd:gwt-dnd:pom:3.1.1' in repository central (http://repo1.maven.org/maven2)
Downloading: http://repo1.maven.org/maven2/com/google/code/gwt-dnd/gwt-dnd/3.1.1/gwt-dnd-3.1.1.jar
[INFO] Unable to find resource 'com.google.code.gwt-dnd:gwt-dnd:jar:3.1.1' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) com.google.code.gwt-dnd:gwt-dnd:jar:3.1.1

  Try downloading the file manually from the project website.

  Then, install it using the command: 
      mvn install:install-file -DgroupId=com.google.code.gwt-dnd -DartifactId=gwt-dnd -Dversion=3.1.1 -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there: 
      mvn deploy:deploy-file -DgroupId=com.google.code.gwt-dnd -DartifactId=gwt-dnd -Dversion=3.1.1 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency: 
    1) com.google.testing.testify.risk.frontend:test-analytics:war:1.0-SNAPSHOT
    2) com.google.code.gwt-dnd:gwt-dnd:jar:3.1.1

----------
1 required artifact is missing.

for artifact: 
  com.google.testing.testify.risk.frontend:test-analytics:war:1.0-SNAPSHOT

from the specified remote repositories:
  central (http://repo1.maven.org/maven2)



[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sun Nov 18 21:24:23 EST 2012
[INFO] Final Memory: 16M/238M
[INFO] ------------------------------------------------------------------------

这是命令和错误:

 mvn deploy:deploy-file -DgroupId=com.google.code.gwt-dnd -DartifactId=gwt-dnd -Dversion=3.1.1 -Dpackaging=jar -Dfile=gwt-dnd-3.1.1.jar
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'deploy'.
[INFO] ------------------------------------------------------------------------
[INFO] Building test-analytics
[INFO]    task-segment: [deploy:deploy-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] One or more required plugin parameters are invalid/missing for 'deploy:deploy-file'

[0] Inside the definition for plugin 'maven-deploy-plugin' specify the following:

<configuration>
  ...
  <url>VALUE</url>
</configuration>

-OR-

on the command line, specify: '-Durl=VALUE'

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Tue Nov 20 14:10:37 EST 2012
[INFO] Final Memory: 14M/238M
[INFO] ------------------------------------------------------------------------
4

2 回答 2

17

您对 Maven 世界缺乏一些基本的了解。因此,回购的简短摘要应该对您有所帮助。

对于初学者,当您“开箱即用”运行 maven 时,有两个可用的存储库,这就是您所做的。您有 1) maven Central 和 2) 您的本地仓库,即 ~/.m2/repository。本地存储库是一种缓存,您在本地构建的工件将通过“mvn install”命令“安装”到。请注意,“mvn deploy”命令“部署”一个工件,这类似于安装,但它意味着将工件放入“远程存储库”。Maven Central 是一个远程存储库,除了您的单个本地存储库之外的所有存储库都是如此,但您不会随意部署到它。它用于经过审查的、发布质量的工件。

因此,您的构建找不到 google 工件。这意味着它们不在 Maven Central 中,尽管您可以检查一下。http://search.maven.org/

如果他们不在那里,您有几个选择。

1)在你的本地仓库中“安装”工件(这应该是你的第一步,因为它非常轻量级)

2)运行自己的repository server,比如nexus。这是您自己的“远程存储库”,您可以将 google 的东西“部署”到它。

3)找出谷歌的东西是否在另一个公开可用的远程存储库中——有几个重要的不在开箱即用的maven repo定义中,但你可以添加它们。

请注意,这三个选项与其说是针对不同情况的解决方案,不如说是替代方案。如果您只是在扣球或打球,我肯定会选择#1。如果你正在建立一个将使用这些工件的严肃的开发工作,你必须至少做 #3 并且可能 #2;如果您真的要大量使用 maven,那么 #2 对于让您的生活更轻松至关重要。这也是一种很好的教育体验,因为大多数 maven 东西在概念上都假设您拥有自己的 repo 服务器。

于 2012-11-21T15:35:49.403 回答
1

您需要阅读有关如何在 POM 文件中配置存储库部分的信息。

最好还是考虑设置一个 Maven 存储库管理器(如 Nexus)来缓存和聚合构建所需的第 3 方存储库。

于 2012-11-20T19:42:02.323 回答