7

我已经使用以下命令将一些第三方 jar 安装到我的存储库中:

mvn install:install-file -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar

但是,一旦我执行 mvn compile,maven 就会抱怨存储库中没有 pom 文件并尝试下载它,但不能导致它没有在任何远程存储库中发布。

这是来自 Maven 的确切消息:

Downloading: http://repo1.maven.org/maven2/nifty-gui/nifty-gui/1.0/nifty-gui-1.0.pom
[INFO] Unable to find resource 'nifty-gui:nifty-gui:pom:1.0' in repository central (http://repo1.maven.org/maven2)

那么如何让 maven 为该 jar 生成一个 pom 文件并将其放入我的本地存储库中呢?

4

4 回答 4

15

你告诉它!:-)

mvn install:install-file
  -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar
  -DgroupId=nifty-gui
  -DartifactId=nifty-gui
  -Dversion=1.0
  -Dpackaging=jar
  -DgeneratePom=true

(命令放置在多行上,以便您可以轻松查看最后一个参数。)

不错吧?以后您可以访问插件的文档,查看它的目标,并且可以看到它接受的所有参数。例如,安装文件目标

编辑:

关于 generatePom 标志的默认行为的问题,文档表明它默认为 true,并且代码似乎支持这一点。但是,使用 Maven 2.0.9 和 maven-install-plugin 版本 2.2(两个版本都略微过时),它不会生成 POM。因此,也许增加版本将允许默认值工作。

> touch DeleteMe.jar
> mvn install:install-file -DgroupId=Delete -DartifactId=Me -Dversion=0.0.0 -Dpackaging=jar -Dfile=DeleteMe.jar
...
[INFO] BUILD SUCCESSFUL
...
> ls ~/.m2/repository/Delete/Me/0.0.0/
Me-0.0.0.jar

(没有生成 POM。)

于 2009-10-08T05:50:14.960 回答
2

install:install-file目标有一个可选参数generatePom(从 2.1 版开始),它允许:

如果没有通过参数提供,则为工件生成最小 POM pomFile。如果本地存储库中还没有现有的 POM,则
默认为 。true

此参数默认为true2.3 版(以及false2.1、2.2 版)以来。因此,如果您使用的是 2.3 之前的安装插件版本,则必须在命令中传递参数。

以防万一,显式使用 2.3 版安装插件的语法为:

mvn org.apache.maven.plugins:maven-install-plugin:2.3:install-file \
    -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui \
    -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar
于 2009-10-08T05:48:17.060 回答
0

我和你有同样的问题,我有一个使用 install:install-file 目标的 shell 脚本,如下所示:

mvn -o install:install-file -e 
  -DgroupId=org.jfree.jcommon 
  -DartifactId=jcommon
  -Dversion=1.0.15
  -Dpackaging=jar
  -Dfile=jcommon-1.0.15.jar 

需要注意的几点:

artifactId不能包含“.” ...不知道为什么,但如果其中包含“。”,安装将失败。

运行上面的命令只生成了一个带有 maven 3.x 的 pom。通过添加以下参数,我能够复制要复制的 jar:

-DgeneratePom=true -DupdateReleaseInfo=true
于 2012-03-15T01:26:24.660 回答
-1

好吧,如果你的第三方库真的是“漂亮的 gui”,你需要做的就是将漂亮的 maven 存储库添加到你的 pom.xml:

<repositories>
  <repository>
    <id>nifty-maven-repo.sourceforge.net</id>
    <url>http://nifty-gui.sourceforge.net/nifty-maven-repo</url>
  </repository>
</repositories>

并且您的 Maven 项目将自动下载漂亮的:D

PS:我知道这不是您的实际问题,但它可能有助于漂亮的集成:)

于 2009-10-24T15:44:51.193 回答