【问题标题】:Maven install-file won't generate pom.xmlMaven 安装文件不会生成 pom.xml
【发布时间】:2010-12-04 21:03:46
【问题描述】:

我已使用以下命令将一些第三方 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 文件并将其放入我的本地存储库中?

【问题讨论】:

    标签: maven-2 nifty-gui


    【解决方案1】:

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

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

    此参数默认为true,因为version 2.3(以及2.1、2.2 中的false)。因此,如果您使用的是 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
    

    【讨论】:

    • 插件文档说“generatePom”标志默认为true,但我一直不得不手动提供。快速检查插件的源代码看起来它实际上默认为 false。
    • 嗯。乍一看,我同意代码似乎默认为“true”。有关我的困惑的解释,请参阅我对答案的编辑...谢谢!
    【解决方案2】:

    你告诉它! :-)

    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
    

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

    不错吧?以后你可以去插件的文档,查看它的目标,你可以看到它接受的所有参数。例如,the install-file goal

    编辑:

    关于 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。)

    【讨论】:

    • 我没有通过 generatePom 选项,因为文档说它默认为 true。我将更新我的软件以确保一切都同步。谢谢!
    【解决方案3】:

    如果你的第三方库真的是“漂亮的 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:我知道这不是您的实际问题,但它可能有助于进行漂亮的集成:)

    【讨论】:

      【解决方案4】:

      我和你有同样的问题,我有一个使用 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
      

      【讨论】:

        猜你喜欢
        • 2014-07-27
        • 2014-12-22
        • 2011-12-28
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        • 2018-02-13
        • 1970-01-01
        • 2018-10-11
        相关资源
        最近更新 更多