2009-07-23 11 views
2

Mavenにリモートアーティファクトを強制的に使用させる方法はありますか?私は実行時のエラーを心配し、コンパイルエラーではないため、サーバーの構築は有効ではありません。ローカルにインストールされたアーティファクトを使用しないでビルドする方法

P.S.私は.m2フォルダを削除したり、名前を変更したりすることができますが、これを行うもっと巧妙な方法があるはずです。たぶん、いくつかのプラグインや特別なコマンドのパラメータ?

答えて

7

ローカルリポジトリがないと、クラスパスはほとんどすべてリモートサーバー上のURLで構成されます。実行がひどく、接続が切断されるとクラスローダーの問題が発生するため、なぜこれがサポートされるのかわかりません。ローカルリポジトリを持つと、コンパイル/実行が開始される前にjarファイルが使用可能になります。

また、WARおよびEARプロジェクト(および依存プラグインを使用している多くのプロジェクト)は、パッケージングを完了するためにJARをダウンロードすることに依存しているとも考えてください。これらがすべてのビルドでリモートリポジトリから取得されなければならない場合は、膨大なオーバーヘッドが発生します。私は、中央のマネージャーがその負荷に敏感ではないと確信しています。

あなたが考慮するためのいくつかの選択肢:

  • あなたは各ビルドにきれいなローカルリポジトリを強制したい場合は、依存関係のプラグインのpurge目標を使用することができます。
  • ビルドを分離したままにしたい場合は、-Dorg.apache.maven.global-settings =/path/to/global/settings.xmlを使用して別のMaven設定を使用することができます。
  • ローカルリポジトリビルドごとに、あなたのリモートリポジトリの構成に<updatePolicy>決して</updatePolicy >を追加し、各ビルドにリモートリポジトリを打つ避けたい場合は-Dmaven.repo.local = /いくつかの/レポ/パス
  • を渡すこと。これは、Mavenがコマンドラインで "-U"スイッチを強制した場合にのみ更新をチェックすることを意味します。
  • 依存関係の最新バージョンを使用したい場合は、バージョン宣言でLATESTキーワードを使用できますバージョン番号ではなく)。ただし、依存関係が互換性がないと危険です。
  • 現在のリリースの依存関係を使用する場合は、(バージョン番号ではなく)バージョン宣言でRELEASEキーワードを使用できます。これはLATESTと似ていますが、最新ではなく最新の安定したビルドになりがちです。
  • 範囲内の依存関係の最新バージョンを使用する場合は、Mavenのバージョン範囲表記を使用します。たとえば、[1.0.0,2.0.0]は、1.0.0以上2.0.0以下の任意のバージョンを意味します。

LATESTおよびRELEASEの詳細については、section 9.3.1.3 of the Maven bookを参照してください。

あなたは内部のリポジトリマネージャ(ここでは義務NexusArtifactory参照)を使用している場合は、ローカルリポジトリをパージのオーバーヘッドが大幅に削減された - あなたはだけは増加したローカル・ネットワーク・トラフィックの負荷を持っています。

+0

私はlibの最新バージョンを持っているかどうかをチェックするプラグインを探していました。もしそれを無視して最新のリポジトリを使うよりも手作業でインストールしたのであれば。 – IAdapter

+0

その場合は、最新のバージョンを常に使用する方法をMavenに伝えるためにこの質問を見てください:http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the -latest-of-a-dependency –

+0

@ 01、さらに3つのオプション、バージョン範囲を追加しました。LATESTまたはRELEASEのバージョンは、 –

0

本当にあなたが求めていることをする方法はないと思います。あなたはSNAPSHOTのリリースに応じて調べることができます(ただし、アップストリームプロジェクトのバージョン文字列をSNAPSHOTバージョンに変更することを意味します)。

なお、これは最近のJava Posse episode (#268)の長さで議論された。私は彼らが解決策に終わったとは思わないが、そこに良いアイデアを得るかもしれない。

また、Rich Seller's ideasのようなものもありますが、これについては自分で検討しています。

関連する問題