14

私は Apache Maven を使用して、Java ライブラリ (jar) と、そのライブラリを使用するいくつかのプロジェクトを管理しています。便宜上、編集のために Eclipse ワークスペースにインポートできるEclipse プロジェクト ファイルmvn eclipse:eclipseを生成するために使用します。

メイン プロジェクトと Java lib プロジェクトを同じ Eclipse ワークスペースで編集すると、問題が発生します。つまり、期待どおりの依存関係ではなく、ファイルにsrc パスの依存関係がmvn eclipse:eclipse含まれます。.classpathjar

という名前の Java lib プロジェクトがあるとしmylibます。対応する jar ファイルmylib.jarは、私が管理するプライベート Maven リポジトリにデプロイされています。メイン プロジェクトで mylib.jar を使用するために、次の依存関係が に含まれていpom.xmlます。

<!-- pom.xml for the main project -->
<dependency>
  <groupId>namespace.my</groupId>
  <artifactId>mylib</artifactId>
  <version>[1.0, )</version>
</dependency>

mvn compile私のレポから自動的にダウンロードされ、mvn test完璧に機能します。mylib.jarただし、試してみるとmvn eclipse:eclipse、生成されたファイルに期待どおりの依存関係が.classpath含まれていないことがわかりました。mylib.jar代わりに、次のように mylib のソース ファイル ディレクトリが含まれます。

<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>

Maven が Eclipse のメタデータを読み取り、mylib とメイン プロジェクトが同じワークスペースに共存しているのを見つけたようです。したがって、maven には私の利益のためのソースが含まれています。くそ。ローカル プロジェクト ソースを無視して jar ファイルだけを含めるように Maven に指示するにはどうすればよいですか?

4

6 に答える 6

12

これは、実際にはEclipseの関連プロジェクトであるためだと思います。したがって、メイン プロジェクトを右クリックしProject Referencesて lib プロジェクトに移動すると、チェックマークが付きます。

実行mvn eclipse:eclipseすると、サブプロジェクト (モジュール) のプロジェクト参照が自動的に追加されます。これは、maven Eclipse プラグインのuseProjectReferencesプロパティで変更できます。

デフォルトでtrueは ですが、

false に設定すると、プラグインはサブプロジェクトを作成せず、代わりにローカル リポジトリにインストールされたパッケージを使用してそれらのサブプロジェクトを参照します。

プロパティを使用するには、pom.xml でプロパティを設定します。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <useProjectReferences>false</useProjectReferences>
            </configuration>
        </plugin>
    <plugins>
<build>

または、コマンド ラインのプロパティとして:

mvn eclipse:eclipse -Declipse.useProjectReferences=false
于 2012-09-25T06:30:40.670 に答える
11

依存関係を参照プロジェクトとしてではなく、jar として含めることを避ける必要があります。Eclipse 4.6 Neon を使用すると、以前のソリューションはどれも機能しません。

Workspace Resolution機能を無効にしていた

click on the project -> Maven -> Disable Workspace Resolution
于 2015-12-29T15:48:57.593 に答える
0

依存関係タグ内の type 要素を使用してみて、 pom.xml のタイプとして source/jar を指定してください

<!-- pom.xml for the main project --> 
<dependency>
   <groupId>namespace.my</groupId>
   <artifactId>mylib</artifactId>
   <version>[1.0, )</version>
   <type>jar<type> <!-- source/jar -->
 </dependency> 
于 2012-09-25T13:38:17.377 に答える
0

ハウンドドッグのヒントをありがとう。はい、useProjectReferencesは、 Maven がサブプロジェクトを処理する方法を制御します (ソースディレクトリまたは jar ファイルを含む)。

Eclipse 用の maven プラグインをインストールしていないので、次の構成を .xml に追加しますpom.xml。ソースディレクトリではなく、ローカルのmavenリポジトリにjar依存関係を含めるようにMavenに指示します。必要な jar ファイルがローカル リポジトリに存在しない場合は、その場で自動的にダウンロードされます。

  <!-- pom.xml for the main project: include jar, not src path -->
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.9</version>
    <configuration>
            <useProjectReferences>false</useProjectReferences>
    </configuration>
  </plugin>

期待どおりに動作するようになりましmvn eclipse:eclipseた。

于 2012-09-25T08:07:23.780 に答える