一般情况下,我该如何解决maven repo中找不到的资源,是否有另一个可以添加到pom.xml的repos列表?我尝试将该解决方案列为命令行,但它不起作用,即使maven将其报告为SUCCESS。
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] ------------------------------------------------------------------------
答案 0 :(得分:16)
你缺乏对Maven世界的一些基本理解。因此,回购的简短摘要应该对您有所帮助。
首先,当您运行maven“开箱即用”时,有两个存储库可用,这就是您所做的。你有1)maven central和2)你的本地仓库,即〜/ .m2 / repository。本地存储库是一种缓存,您在本地构建的工件将通过“mvn install”命令“安装”到该位置。注意,“mvn deploy”命令“部署”一个工件,就像安装一样,但它意味着将工件放入“远程存储库”。 Maven Central是一个远程存储库,除了您的单个本地存储库之外,所有存储库都是存储库,但是您不会毫不犹豫地部署它。这是经过审查的,发布质量的工件。
因此,您的构建无法找到Google工件。这意味着他们不在Maven Central,但您可以查看。 http://search.maven.org/
如果他们不在那里你有几个选择。
1)在本地仓库中“安装”工件(这应该是你的第一步,因为它非常轻量级)
2)运行您自己的存储库服务器,例如nexus。这是您自己的“远程存储库”,您可以将google内容“部署”到它。
3)找出google的东西是否在另一个公开的远程存储库中 - 有几个重要的东西不是开箱即用的maven repo定义,但是你可以添加它们。
请注意,这三个选项并不是针对不同情况的解决方案。如果你只是在喋喋不休地敲打东西,我肯定会选择#1号。如果您正在设置一个将使用这些工件的认真开发工作,那么您必须至少做到#3且可能是#2;如果你真的要大量使用maven,#2对于让你的生活更轻松至关重要。这也是一个很好的教育体验,因为大多数maven的东西在概念上都假定你拥有自己的repo服务器。
答案 1 :(得分:1)
您需要了解如何在POM文件中配置repositories部分。
最好还是考虑设置一个Maven存储库管理器(如Nexus)来缓存和聚合构建所需的第三方存储库。