5

Intellij-IDEA 11 を使用しています。12 で動作するソリューションがあれば、喜んでアップグレードします。

多くのプロジェクトが依存するライブラリを構築しましたが、ライブラリは頻繁に変更されます。このライブラリは、通常の依存関係としてプロジェクトの pom.xml に追加されます。

    <dependency>
        <groupId>my.company</groupId>
        <artifactId>MyLibrary</artifactId>
    </dependency>

これは、プロジェクトに機能を追加するときに実行する必要がある典型的な一連の手順です。

  1. プロジェクトの一部のコードを変更する
  2. 依存しているライブラリの一部のコードを変更する
  3. 機能が動作するかどうかを確認する
  4. そうでない場合は、繰り返します

私の IDE (たまたま Intellij-IDEA) の外では、これは簡単なプロセスです。依存関係のプロジェクト フォルダーに移動し、次にmvn installライブラリに移動するステップ 2.5 を追加します。

しかし、Intellij-IDEA でこれを行う便利な方法がわかりません。理想的には、Intellij 内のライブラリのソースを変更し、緑色の再生ボタンをクリックすると、IDE がライブラリの変更されたソースを使用することを認識します。

現在、ライブラリは依存関係にあるため、ローカル リポジトリに既にあるものを使用するだけです。したがって、ライブラリのソースを変更しても、手動で変更するまで影響はありませんmvn install

注: うまくいくと思われるトリックを見つけました。プロジェクトの親 pom を変更してライブラリを maven モジュールとして含め、同じライブラリを intellij モジュールとして含めると、ローカル リポジトリの jar の代わりにそのソースが使用されます。しかし、変更された pom をコミットしたくないため、このソリューションは好きではありません (モジュールはローカル ファイル システムにのみ存在するファイル システム パスを指す必要があるため)。

Intellij-IDEA バグ トラッカーで、これに関連していると思われるバグを見つけました: http://youtrack.jetbrains.com/issue/IDEA-25146

4

4 に答える 4

2

私はこれを行う方法を見つけました。まず、ライブラリのpom.xmlをMavenプロジェクトツールウィンドウに追加します。次に、構成を編集して、ライブラリのインストール目標を実行します。そして、これを行う方法の画像を以下に示します。

フルサイズのリンクについては、ここをクリックしてください 実行する前にライブラリをmvnインストールする方法

于 2013-01-03T20:55:26.083 に答える
1

モジュール設定を開き(モジュールではF4)、[モジュール]に移動し、ライブラリに依存するモジュールの[依存関係]タブを選択します。

ライブラリがモジュールの場合はモジュールの依存関係を追加しますライブラリがモジュールでない場合は、ライブラリがビルドされてどこかに配置されていると想定し、そのディレクトリをモジュールの依存関係に追加します。

リストの上位にあるほど、優先度が高くなります

于 2013-01-02T23:02:25.707 に答える
0

私は同様のアーキテクチャを持っていますが、これが私がしていることです(そしてそれは非常にうまく機能します)。

  1. メイン プロジェクト (頻繁に変更されるライブラリを使用するプロジェクト) の pom.xml に基づいて、IDEA Maven プロジェクトを作成します。
  2. メイン プロジェクトに Maven プロジェクトを追加します (Maven プロジェクト タブの「+」アイコンをクリックし、頻繁に変更されるライブラリの pom.xml を選択します)。

編集

注:すべてのモジュール (ライブラリおよびメイン プロジェクトから) には、*-SNAPSHOT バージョンがあります。

詳細については、私のライブラリ プロジェクトの pom.xml :

<groupId>com.company</groupId>
<artifactId>mylibrary</artifactId>
<version>2.0.1-SNAPSHOT</version>

そして、私のメインプロジェクトのpom.xml

<groupId>com.company</groupId>
<artifactId>myproject</artifactId>
<version>1.1-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>com.company</groupId>
        <artifactId>mylibrary</artifactId>
        <version>2.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

IDEA は、依存関係が SNAPSHOT であり、このライブラリが現在の IDEA プロジェクト (つまり、同じ IDEA ウィンドウ) にあることを確認するのに十分スマートであると思います...したがって、SNAPSHOT があるため、IDEA はローカルリポジトリを調べません現在の「ワークスペース」。

状況が明確になることを願っています。

何かを実行する必要がある場合は、さまざまなオプションがあります

  1. IDEA で新しいMaven 実行構成を定義して、任意のプロファイルで (私の IDEA プロジェクトの任意の pom.xml から) Maven ゴールを実行します。
  2. IDEA で単純な単体テスト構成を定義する (クラスパスが pom.xml で定義されたクラスパスから派生することを除いて、maven とは直接リンクされていません)
  3. IDEA で新しいTomcat/JBoss 構成を定義し、その中にアーティファクトをデプロイします。(IDEA は、pom.xml から war や ejb などのデプロイ可能なアーティファクトを検出します)
于 2013-01-03T11:45:54.540 に答える
0

私はあなたと同じシナリオを持っており、Intellij 2016.02 を使用しています。

これが私がそれを解決した方法です:

1 - Intellij で、View -> Tool Windows -> Maven Projects に移動する maven パネルを開き、プラス緑色のボタン (maven プロジェクトを追加) をクリックして、依存関係プロジェクトから pom.xml ファイルを選択します。

2 - 実行/デバッグ構成設定で、maven ゴールとして起動前タスクを追加し、依存関係プロジェクトの作業ディレクトリを選択し、コマンド ラインで「インストール」と入力します。

3 - 依存関係プロジェクトのすべてを編集し、メイン アプリケーションを再デプロイすると、変更が影響する場合があります。

編集:

私は新しい解決策を見つけました。それは「クラスとリソースの更新」の欠点を解決しました。これが私がしたことです:

1 - 前のソリューションの最初のステップを実行しますが、ステップ 2 で追加する場合は、起動タスクの前からインストール ゴールを削除します。

2 - 展開されたアーティファクトを編集し、依存プロジェクトの「コンパイル済み出力」要素を「使用可能な要素」パネルから出力の左側のパネルに追加します。

インストールしなくても変更が機能する可能性があり、「クラスとリソースの更新」が魅力的に機能するようになりました:)

于 2016-08-15T05:51:11.357 に答える