13

ツリー構造で「互いに隣り合っている」いくつかのmavenプロジェクトのソースフォルダーとして使用されるJavaソースを含むフォルダーが必要な状況があります。Maven プロジェクトの依存関係の違いにより、ソースのコンパイル済みバージョンを含むアーティファクトを作成することはできませんが、各プロジェクトでそれを src/main/java に加えてソース フォルダーとして扱う必要があります。

どうやら Maven は "../foo/src" にある別のソース フォルダーを追加することでこれを簡単に行うことができますが、m2e はこれを拒否します。

次のような構造を持つにはどうすればよいでしょうか。

/common/src
/a/pom.xml  (add source folder ../common/src)
/a/src/main/java/...
/b/pom.xml  (add source folder ../common/src)
/b/src/main/java/....

Eclipseで動作させるには?

(注:http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01988.htmlを認識しています-ただし、2011年からです)

4

6 に答える 6

3

ファイルシステムでちょっとしたトリックはいかがですか? フォルダーへのシンボリックリンクを作成するだけで、おそらく問題ありません:)

mklinkNTFS の場合は、コマンド ラインから実行できます。詳細はこちら: http://en.wikipedia.org/wiki/NTFS_symbolic_link

于 2013-05-31T11:06:34.490 に答える
1

解決策として、相対パスとMaven Build Helperを使用できるはずです。

各プロジェクト、またはすべてが継承する "親" pom.xml で、次を追加します。

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.8</version>
    <executions>
      <execution>
        <id>add-source</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>add-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>${basedir}/../../common/src</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>
于 2013-05-24T18:05:24.717 に答える
1

Subversion を使用する場合、おそらく最も便利な方法は、共有ソース フォルダーを別のリポジトリに保持し、それを必要とするすべてのプロジェクトに追加することですsvn:externals。一方で、これはタグとブランチの作成をより複雑にします。

Mercurial のサブレポジトリでも同様のことが実現できるかもしれませんが、それほど便利ではありません。

于 2013-05-31T12:24:44.920 に答える
1

NTFS Junctionを使用します。

プロジェクトでそれらを使用して、実際にコピーせずにプロジェクト間でリソースを共有しています。ジャンクションは、ドライブとファイルシステムの間のブラックホールのようなものです。これらはハード リンクと同じように動作しますが、異なるドライブ (ネットワーク ドライブを含む) であってもフォルダーを参照できます。あなたの観点からは、プロジェクトのフォルダーに /common/src フォルダーがあるように見えます (その後、Eclipse にそれをソース フォルダーとして使用するように指示できます)。もちろん、ジャンクション ポイントの名前を変更して、 project から見た /common/srcaが呼び出されるようにすることもできますcommon

/common/src
/a/src
/a/common <- this is a junction to /common/src

Junction の作成を容易にするために、私はこのシェル拡張を使用するのが本当に好きです。

于 2013-06-04T08:35:47.223 に答える