Apache MAVEN:如何在repo中没有pom的情况下从非标准存储库中指定jar依赖项?

时间:2014-01-13 13:36:09

标签: maven

我是Maven的新手,我的问题如下:

我在以下仓库中有一个jar文件: http://www.repo.com/custom/path/Jarfile-0.1.0.jar

我已将存储库添加到pom文件中,如下所示

<repository>
<url>http://www.repo.com/custom/path </url>
<id>Custom_repo</id>
</repository>

我在pom文件中设置了依赖关系,如下所示:

<dependancy>
<groupId>XXX<groupId>
<artifactId>Jarfile</artifactId>
<version>0.1.0</version>
</depandancy>

当我编译'mvn compile'时输出为:

Downloading: http:/www.repo.com/custom/path/XXX/Jarfile/0.1.0/Jarfile-0.1.0.pom
[ERROR] Failed to execute goal on project X: could not resolve dependencies for project ... could not transfer artifact from Custom_repo... 

有两个问题:

  1. 路径(由groupid,artifactid和版本组成) /XXX/Jarfile/0.1.0 / 会附加到我不想要的Custom_repo上 - 如何摆脱它?
  2. 我想获取jar文件,而不是 .pom 文件。拿到罐子可以做些什么? (我知道&lt; systemPath&gt; - 但这是从系统中取出jar而不是来自repo)
  3. 谢谢。

1 个答案:

答案 0 :(得分:2)

maven repo比简单的jar有点复杂。您可以尝试安装reposotory服务器,例如 Nexus

http://www.sonatype.org/nexus/

另见这篇文章 Maven Internal Repository, Is it Really This Hard?

您还可以通过以下方式安装 jar文件在本地存储库

mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>

Maven依赖关系搜索序列

  • 步骤1 - 在本地存储库中搜索依赖项,如果未找到,则移至 步骤2如果找到,则进行进一步处理。

  • 步骤2 - 在中央存储库中搜索依赖项,如果找不到则 提到远程存储库/存储库然后转到步骤4 如果找到,则将其下载到本地存储库以备将来使用 参考

  • 步骤3 - 如果没有提到远程存储库,Maven就是这样 停止处理并抛出错误(无法找到依赖项)。

  • 步骤4 - 在远程存储库或存储库中搜索依赖项,如果 发现然后将其下载到本地存储库以供将来参考 否则Maven会按预期停止处理并抛出错误(无法使用 找到依赖)。