我正在尝试添加maven存储库mvnrepository.com
,但似乎我没有这样做。
<repository>
<id>mvnrepository</id>
<url>http://mvnrepository.com/artifact/</url>
</repository>
我可以清楚地看到我正在寻找的神器是http://mvnrepository.com/artifact/org.springframework.ldap/spring-ldap/1.3.1.RELEASE
但是我的maven构建输出报告我它不是
下载: http://mvnrepository.com/artifact//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 mvnrepository(http://mvnrepository.com/artifact/)
我做错了什么?如何下载spring ldap artifact?
更新 我尝试了几种工件,但都失败了
下载: http://repo1.maven.org/maven2//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 maven central repo(http://repo1.maven.org/maven2/)正在下载: http://download.java.net/maven/2//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 java.net repo(http://download.java.net/maven/2/)正在下载: http://maven.springframework.org/external//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 外部弹簧(http://maven.springframework.org/external/) 下载: http://search.maven.org//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 repo.jenkins-ci.org(http://search.maven.org/)正在下载: https://repository.jboss.org//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 mvnrepository(https://repository.jboss.org/)正在下载: http://repo1.maven.org/maven2//org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 中心(http://repo1.maven.org/maven2/)
如果我没有在settings.xml中定义任何存储库,那么响应如下:
下载: http://repo1.maven.org/maven2/org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar [INFO]无法找到资源 &#39; org.springframework.ldap:弹簧LDAP:罐:1.3.1.RELEASE&#39;在存储库中 中心(http://repo1.maven.org/maven2)
更新 此外,我在其他项目中使用gradle,这无缝地工作
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile 'org.springframework.ldap:spring-ldap:1.3.1.RELEASE'
}
所以我很确定有一些maven repo我不知道
答案 0 :(得分:2)
spring-ldap工件是pom类型。要指定jar以外的任何工件,您需要指定类型。因此,您需要在pom中指定的工件是
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap</artifactId>
<version>1.3.1.RELEASE</version>
<type>pom</type>
</dependency>
希望这有帮助
答案 1 :(得分:1)
正如@techbost所提到的,maven无法从任何存储库中解析spring-ldap-1.3.1.RELEASE.jar,因为这样的jar不存在。
让我们看看发生了什么。您可以通过以下方式定义依赖关系:
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
如果您未指定type
标记,则默认类型为jar
。这意味着Maven尝试点击此URL来获取文件:
http://repo1.maven.org/maven2/org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.jar
如您所见,此文件不存在。那是因为spring-ldap
模块没有jar,它是一个pom
打包模块,这意味着它只有pom文件,它有子模块的通用配置和那些子模块的定义子模块。
接下来,您可能希望将类型定义为pom
:
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap</artifactId>
<version>1.3.1.RELEASE</version>
<type>pom</type>
</dependency>
有人可能认为这应该有用,因为现在你指示maven下载一个存在的pom文件: http://repo1.maven.org/maven2/org/springframework/ldap/spring-ldap/1.3.1.RELEASE/spring-ldap-1.3.1.RELEASE.pom
嗯,它也不会起作用。那是因为pom
工件不是真正的依赖项(仅用于提醒 - 依赖项是添加到类路径以进行编译,测试和打包的文件,因此在类路径中有一个pom文件是没有意义的)
你真正需要的是两者之一:
spring-ldap-core
。all
模块的spring-ldap
分类。在这种情况下,您将在一个jar中携带所有模块。虽然它可能会简化您的配置,但它强烈反对粒子。 在前一种情况下,您的依赖声明将如下所示:
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
这很有效。
在后一种情况下,您的依赖声明将如下:
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap</artifactId>
<version>1.3.1.RELEASE</version>
<classifier>all</classifier>
</dependency>
虽然这是一个非常糟糕的主意,但这也有效。
P.S。 mvnrepository site不是真正的 maven存储库。它是在maven-central中搜索和浏览工件的网站,当maven central没有搜索时可以使用。
我建议的两个存储库是:
jcenter
- Maven Central的超集,默认情况下为https,发布商的网络标识,更丰富的用户界面等。有关详细信息,请参阅https://bintray.com/bintray/jcenter(Set me up
按钮将为您提供相关说明如何与Maven一起使用)答案 2 :(得分:0)
我认为您不需要添加任何额外的存储库标记来获取spring-ldap工件。
您只需要在工件不属于默认maven存储库时指定存储库,例如Jboss存储库https://repository.jboss.org/,您需要在pom中添加它以获取此存储库的任何工件。 / p>
你简单地在你的pom中添加以下依赖项,它应该可以工作。
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
在没有指定存储库的情况下下载工件有任何问题吗?