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

(最後のパラメーターを簡単に確認できるように、コマンドを複数行に配置します。)

いいですね。将来的には、プラグインのドキュメントに移動して、その目標を表示し、受け入れるすべてのパラメーターを確認できます。たとえば、 install-file ゴール

編集:

generatePom フラグのデフォルトの動作に関する質問については、ドキュメントではデフォルトが true であることが示され、コードはそれをサポートしているようです。ただし、maven-install-plugin バージョン 2.2 (どちらのバージョンも少し古くなっています) で Maven 2.0.9 を使用すると、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

このパラメーターのデフォルトはtrueバージョン 2.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 ゴールを使用するシェルスクリプトがありました。

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 に答える