1

デフォルトでは、Maven はローカル リポジトリ (.m2 ディレクトリ) からすべての依存関係を取得します。しかし、代わりに、別の場所から依存関係を取得したいと考えています。これは可能ですか?

私はすべてでこれをしたくありません。これが「ルート」または親レベルで発生することは望ましくありません。これをより「より深い」pomレベルで実現したいと考えています。同じ依存が依存していることが複数回あります。毎回違う場所から来てほしい。したがって、1 つはデフォルトの Maven 構成を使用して .m2 ディレクトリから取得し、もう 1 つは特定のディレクトリから取得します。


私の理由:

インストール フェーズでは、すべてが .m2 ディレクトリにインストールされます。パッケージ フェーズでは、すべてをターゲット ディレクトリにパッケージ化します。(私は正しくありませんか?)

私の .m2 ディレクトリには必要以上のものがあります。私のターゲットには、.m2 ディレクトリに含まれる余分な「もの」がない最終的なプロジェクトがあります。ターゲット ディレクトリにあるものはすべて最終製品です。コンパイル段階では、.m2 ディレクトリに依存するのではなく、それが私の本当の最終プロジェクトであるため、ターゲットに依存したくありません。


Linux (Red Hat) で Maven 2.2.1 を使用しています。

ファイルの要素の下に<scope>ある値システムで要素を使用できることをどこかで読みました。次に、その下で呼び出される別の要素で実際の場所を指定します。これが私の質問に答えているかどうか、またはこれがまったく異なるものであるかどうかはわかりません。<dependency>pom.xml<systemPath><dependency>

これがMavenの推奨事項に反することはわかっていますが、私には理由があります。

4

2 に答える 2

2

この異なるが関連する質問に対する私の回答を最初に読んでください。

一般に、Maven に関して言えば、人々は筋肉の記憶を発達させています。適切な例として、Maven を使用してプロジェクトをビルドする方法をほとんどの人が考えています。

$ mvn clean install

これでプロジェクトがビルドされますが、ビルドされたアーティファクトもローカルリポジトリに保存されます..、これは、サブモジュールで作業し、常にすべてを安全に再構築したい場合、またはリアクターをよく理解していない IDE を使用している (ほとんどの IDE の新しいバージョンにはこの問題はありません)

あなたがおそらくやるべきことは

$ mvn clean verify

または

$ mvn clean package -DskipTests

(2番目のものはテストをスキップします。統合テストが確実にパスすることを気にしないのであれば、おそらく単体テストも気にしないからです)

だから私には、間違ったコマンドを入力しているように思えます...

つまり、推移的な依存関係として公開されていない「一時的な中間」アーティファクトを構築している可能性があります...その場合<skip>true</skip>、その特定の maven-install-plugin の構成に を追加できますモジュール (maven-deploy-plugin への追加も検討してください)です、モジュールが推移的な依存関係を介してリークしないことを確認する必要があります。

于 2013-01-23T09:26:43.347 に答える
0

Maven インストール ディレクトリにC:\apache-maven-2.2.1. 移動し、binディレクトリ edit m2.confに移動します。デフォルト設定は

set maven.home default set maven.home default ${user.home}/m2

必要に応じてこれを変更します。

于 2013-01-22T16:08:11.630 に答える