Maven:从本地文件夹手动安装一个Jar,然后上网并抓住&安装所有依赖项

时间:2012-02-07 18:51:15

标签: maven maven-2 maven-plugin

在我的项目的pom文件中,我有一个依赖项,我可以在Maven central repository javax.enterprise:cdi-api:jar:1.0-SP4 中看到,但由于某种原因,我在某些计算机上获得 构建项目时出现以下错误(因此构建失败):

[INFO] Unable to find resource 'javax.enterprise:cdi-api:jar:1.0-SP4' in repository central (http://repo1.maven.org/maven2)
  1. 我知道为什么我只在某些计算机上出现此错误(我可以说所有计算机都在使用同一个网络)?

  2. 为什么我会收到此错误? As far as I can see maven中央存储库中的jar IS

  3. 即使maven无法在某些计算机上找到/下载jar,我也可以在这些计算机上手动下载through the browser。怎么会这样?

  4. 好的,所以我已经通过浏览器在其中一台有问题的计算机上手动下载了jar。我想手动将其安装到此计算机上的本地存储库中。所以从命令行我做:

  5. mvn install:install-file -DgroupId=javax.enterprise -DartifactId=cdi-api -Dversion=1.0-SP4 -Dpackaging=jar -Dfile=path/to/file

    ...但是也没有下载任何依赖项。是否有一些maven插件可以将文件安装到本地存储库 AND download&将其所有依赖项安装到本地存储库? 如果是这样,请告诉我如何使用它。

2 个答案:

答案 0 :(得分:0)

  1. 如果.m2文件夹中的settings.xml文件包含所需jar的url,请检查未下载jar的计算机。如果没有添加它们。

  2. 您无法下载,因为maven仅在settings.xml文件中定义的网址中搜索。因此,如果网址不存在,即使jar位于中央存储库中,也不会下载。

  3. 在浏览器中,您可以导航到该链接并下载。由于第二点中给出的原因,Maven无法做到这一点

答案 1 :(得分:-1)

好的,看起来你需要在你的pom文件中提到你的存储库路径,存储库的url是什么?它是您的网络本地或一些开放网址?例如:http://repo2.mvn.org/ ???

示例示例如下::

<repositories>
        <repository>
          <id>codehausSnapshots</id>
          <name>Codehaus Snapshots</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://snapshots.maven.codehaus.org/maven2</url>
          <layout>default</layout>
        </repository>
      </repositories>

如果你可以粘贴pom文件,那么帮助你会更容易。

回答你的观点:检查.m2 \ settings.xml中的settings.xml文件,确保存在相同的内容。有时,settings.xml会直接在maven安装目录中修改。所以你最好也检查那个位置。

回答第4点:mvn install:安装安装(简单来说,复制)一个工件(jar / ear / zip /任何用于分发的工件)到maven本地存储库或远程存储库。所以在你的命令中,你只是尝试安装cdi-api jar。

每当你运行mvn compile,mvn package,mvn install,maven都会扫描你的pom文件,并将所有提到的依赖项下载到你的本地存储库中。我建议你查看本地存储库,看看它是如何创建目录结构的。