2012-01-05 25 views
0

我有这样的一些依赖项。例如:JDICmaven中的非常规依赖项名称

在我的pom.xml中,我定义了一个依赖

<dependency> 
<artifactId>jdic</artifactId> 
<groupId>jdic</groupId> 
<version>0.8.6</version> 
</dependency> 

而且我有一个远程存储库(内部服务器):如http://repo/thirdparty/ 而JDIC可以http://repo/thirdparty/jdic/jar/jdic.jar

找到正如你注意到的,命名不是传统的groupId:artifactId:版本,而是它的只是jdic.jar

所以当我运行maven编译

mvn clean compile 

maven告诉我它无法解决依赖关系。 我知道,我们可以只下载那些罐子到本地仓库.m2目录/存储库和运行

mvn compile (ie without clean) 

,它的罐子不会是一个问题。但是,除了非传统的名称和缺乏这些依赖关系的元数据/ pom信息之外,是否还有其他方式可以从远程获取?

我已经有一个镜子,它覆盖中央

回答

0

你可以安装JDIC与版本(jdic-0.8.6.jar)内部/仓库镜像该内部存储库。

如果您使用存储库管理器并将jar上传到它,它会自动为它创建一个pom,并确保依据是使用版本创建的依赖项,如按照maven约定。

+0

我创建了另一个名为.maven3的本地存储库。在我的项目的settings.xml中,我重新定义了 $ {user.home} /。maven3/repository(可以使用属性$ {user.home}?) 然后我将jdic的jar安装到〜/ .maven3 /库/ JDIC/JDIC/0.8.6/JDIC-0.8.6.jar 为此JDIC-0.8.6.jar是一个符号链接jdic.jar 然后我跑MVN安装 它仍然无法下载依赖项 – ALQH 2012-01-05 21:24:48

+0

我刚发现如果我把$ {user.home}/.maven3/repository,本地存储库现在是myProjectnameWhereIRunMaven /〜/ .maven3/repository 奇数... – ALQH 2012-01-05 21:44:13

0

远程Maven仓库不是任何Web服务器以任何你想要的方式放置文件。有很多约定可以遵循。其中之一就是表示版本的方式(这是工件的一个重要元素)。通过你的“远程仓库”,很明显Maven无法找到这个工件。

设置一个真正的Maven远程存储库来托管这些文件。你可以看看Nexus和Artifactory。

+0

什么是Maven仓库的文件结构?我尝试手动将jar安装到本地存储库并运行mvn install,依赖项仍然无法解析。 – ALQH 2012-01-05 21:27:30

+1

你不应该关心文件结构。谷歌为“maven安装第三方库”,并学习如何正确安装使用Maven2/3的工件。而且,我正在谈论远程存储库,而不是本地回购。 (你在你的文章中说过,如果你在本地仓库中安装JAR,那么你确定,但是现在你说它不起作用?你能否清楚你的问题?) – 2012-01-06 08:09:56

+0

如果我将jar安装到本地仓库中,因为Maven会首先检查本地仓库。但我想要的是从远程回购下载它是一个Maven 1回购。它没有找到远程回购的罐子,很可能是因为它的Maven 1回购。 ..对不起,混淆 – ALQH 2012-01-09 00:25:04