2011-06-30 106 views
4

摘要:
运行 “MVN战争:战争” 失败,错误包括:
“下面的文物无法解析:org.openid4java:openid4java:罐子:0.9.6" 。Maven的 “无法解析的依赖关系” 为openid4java

我会记下它的事实,即我是Maven noob,但我看到其他人已发布到openid4java网站,声明来自Maven中心的jars are missing for openid4java。

详情:
我试图站起来通过运行中包含的openid4java(0.9.6.662)的最新版本的简单的OpenID的示例应用程序与openid4java加快。

根据自述“此演示要求 apache Maven2构建”。自述文件还指出:“军事战争:战争任务应该创建一个可以通过复制战争文件来部署的战争文件”。

到现在为止,我一直在用Ant和Mavent Ant Tasks来解决问题,但我想我今天会咬紧牙关并安装Maven 3.0.3。我遵循安装说明,现在可以成功运行“mvn --version”

当我运行“mvn war:war”时,确实有很多文件被下载到我的本地存储库中,但最终生成失败,出现以下摘录消息:

[ERROR] Failed to execute goal on project simple-openid: Could not resolve dependencies for project org.openid4java:simple-openid:war:0.9.6: The following artifacts could not be resolved: org.openid4java:openid4java:jar:0.9.6, org.openid4java:openid4java-consumer:jar:0.9.6, org.openid4java:openid4java-server:jar:0.9.6, org.openid4java:openid4java-server-JdbcServerAssociationStore:jar:0.9.6, org.openid4java:openid4java-consumer-SampleConsumer:jar:0.9.6, org.openid4java:openid4java-server-SampleServer:jar:0.9.6: Failure to find org.openid4java:openid4java:jar:0.9.6 in http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project simple-openid: Could not resolve dependencies for project org.openid4java:simple-openid:war:0.9.6: The following artifacts could not be resolved: org.openid4java:openid4java:jar:0.9.6, org.openid4java:openid4java-consumer:jar:0.9.6, org.openid4java:openid4java-server:jar:0.9.6, org.openid4java:openid4java-server-JdbcServerAssociationStore:jar:0.9.6, org.openid4java:openid4java-consumer-SampleConsumer:jar:0.9.6, org.openid4java:openid4java-server-SampleServer:jar:0.9.6: Failure to find org.openid4java:openid4java:jar:0.9.6 in http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced 
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:196) 

Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project org.openid4java:simple-openid:war:0.9.6: The following artifacts could not be resolved: org.openid4java:openid4java:jar:0.9.6, org.openid4java:openid4java-consumer:jar:0.9.6, org.openid4java:openid4java-server:jar:0.9.6, org.openid4java:openid4java-server-JdbcServerAssociationStore:jar:0.9.6, org.openid4java:openid4java-consumer-SampleConsumer:jar:0.9.6, org.openid4java:openid4java-server-SampleServer:jar:0.9.6: Failure 

Caused by: org.sonatype.aether.resolution.DependencyResolutionException: The following artifacts could not be resolved: org.openid4java:openid4java:jar:0.9.6, org.openid4java:openid4java-consumer:jar:0.9.6, org.openid4java:openid4java-server:jar:0.9.6, org.openid4java:openid4java-server-JdbcServerAssociationStore:jar:0.9.6, org.openid4java:openid4java-consumer-SampleConsumer:jar:0.9.6, org.openid4java:openid4java-server-SampleServer:jar:0.9.6: Failure to find org.openid4java:openid4java:jar:0.9.6 in 

我在这里做错了什么或者是实际上从Maven存储库中缺少的罐子?

回答

4

我能够加入<type>pom</type>到的pom.xml来解决这一问题。我在this thread的OpenID4Java谷歌组中找到了答案。

下面是谷歌的组中跟帖说:

我的意思是,你应该在你的 pom.xml中添加 “POM” 到openid4java的依赖 部分:

<dependency> 
     <groupId>org.openid4java</groupId> 
     <artifactId>openid4java-consumer</artifactId> 
     <!--artifactId>openid4java-server</artifactId--> 
     <!--artifactId>openid4java-infocard</artifactId--> 
     <!--artifactId>openid4java-xri</artifactId--> 
     <!--artifactId>openid4java</artifactId--> 
     <!--artifactId>openid4java-full</artifactId--> 
     <version>0.9.6</version> 
     <type>pom</type> <-----------------------This line can not be omitted. 
    </dependency> 

openid4java-consumer/openid4java-server/....的类型都是“pom”而不是“jar”。该jar文件是在由openid4java消费者/ openid4java服务器依赖openid4java-nodeps ...

+0

作为一个总的maven noob,我无法完成这项工作。哪个pom确切需要编辑?存储库中或包含的示例包中包含哪一个? – Steven

1

产生的原因:org.sonatype.aether.resolution.DependencyResolutionException:下面的文物无法解析:org.openid4java:openid4java:罐子:0.9.6,org.openid4java:openid4java消费中:jar:0.9 .6,org.openid4java:openid4java-server:jar:0.9.6,org.openid4java:openid4java-server-JdbcServerAssociationStore:jar:0.9.6,org.openid4java:openid4java-consumer-SampleConsumer:jar:0.9.6,org .openid4java:openid4java-服务器SampleServer:罐子:0.9.6:未能找到org.openid4java:openid4java:罐子:0.9.6在

您需要可以添加<repository>含有这些文物项目或将它们安装到您的本地存储库。

尝试https://oss.sonatype.org/content/repositories/openid4java/(在MavenHowTo找到)

+0

如果我正确理解你(并记住我几乎是Maven noob),那么你建议我指定一个特定的Maven在线存储库来搜索Jars或者从我从openid4java的网站直接下载的jar并将它们放置在我的本地Maven存储库中。 在我看来,版本0.9.6的jar文件也从您建议的资源库(oss.sonatype.org)中丢失,并且您在openid4java网站的MavenHowTo wiki页面中找到该文件。那有意义的是罐子在那里失踪了吗?我看到之前版本0.9.5的罐子。 – Justin

+0

关于手动将罐子安装到我的本地存储库的其他建议是有道理的。我有一个单独的jar(openid4java-0.9.6.jar),我从openid4java的网站下载了它,但似乎Maven试图下载几个不同的openid4java相关jar(openid4java-consumer,openid4java-server等)。我确实拥有了openid4java-consumer,openid4java-server等的类,所以我不确定它是否需要分解成几个jar或什么。 – Justin

+0

我想我会尝试使用依赖的jar文件Maven能够下载并使用openid4java-0.9.6.jar将其打包并查看让我感兴趣的地方。 对不起,有多条评论,但我跑出了房间。 :)非常感谢您的回复 – Justin

1

这是我做过什么,使其编译和运行:

  1. 转到您的M2或Maven中央存储库,
  2. org-> openID4java-> openID4java-> 0.9.6和编辑openid4java-0.9.6.pom文件,并添加甲醛,其不具有罐子依赖
  3. org-> openID4java-> openid4java-consumer-SampleConsumer-> 0.9.6并编辑openid4java-consumer-SampleConsumer-0.9.6.pom文件并将pom添加到工件openId-consumer
  4. org-> openID4java-> openid4java-openid4java-server-SampleServer-> 0.9.6并编辑openid4java-server-SampleServer-0.9.6.pom文件并将pom添加到openId-服务器的工件中
  5. org-> openID4java-> openid4java-server-JdbcServerAssociationStore-0.9.6并打开pom文件并将pom添加到openID服务器工件。

融合的Eclipse,然后右键单击项目和Maven的工具,用户Maven和更新相关性,你准备好了, ,直接编译,你准备推出

1

另一种方式来解决Grails的依赖是添加Maven仓库“https://oss.sonatype.org/content/repositories/openid4java/”,并将“openid4java-nodeps”作为工件。

repositories { 
    grailsPlugins() 
    grailsHome() 
    grailsCentral() 
    mavenCentral()  
    mavenRepo "https://oss.sonatype.org/content/repositories/openid4java/" 
} 

dependencies { 
    runtime('mysql:mysql-connector-java:5.1.19', 
      'org.apache.httpcomponents:httpclient:4.2', 
      'org.openid4java:openid4java-nodeps:0.9.6') { excludes "xml-apis" } 
} 
0

请行家为每depency openid4java-xxx安装包失败,因为便接踵而来:

  1. 运行openid4java-0.9.6目录

  2. 内Ant构建任务,然后执行:

    mvn install:install-file -DgroupId=org.openid4java -DartifactId=openid4java-consumer -Dversion=0.9.6 -Dpackaging=jar -Dfile=<<change_this_path_to>>build\openid4java.jar 
    
    mvn install:install-file -DgroupId=org.openid4java -DartifactId=openid4java-server -Dversion=0.9.6 -Dpackaging=jar -Dfile=<<change_this_path_to>>build\openid4java.jar 
    
    mvn install:install-file -DgroupId=org.openid4java -DartifactId=openid4java-server-JdbcServerAssociationStore -Dversion=0.9.6 -Dpackaging=jar -Dfile=<<change_this_path_to>>build\openid4java.jar 
    
    mvn install:install-file -DgroupId=org.openid4java -DartifactId=openid4java-consumer-SampleConsumer -Dversion=0.9.6 -Dpackaging=jar -Dfile=<<change_this_path_to>>build\openid4java.jar 
    
    mvn install:install-file -DgroupId=org.openid4java -DartifactId=openid4java-server-SampleServer -Dversion=0.9.6 -Dpackaging=jar -Dfile=<<change_this_path_to>>build\openid4java.jar 
    

而且应该这样做!