3

マルチモジュールプロジェクトを構築しようとするためにmavenを使い始めたところです。

2つの小さな問題以外はすべて問題ありません。

Eclipse ウィザードを使用して「単純な J2EE」アーキタイプの新しい Maven プロジェクトを作成すると、Eclipse のバグが原因で失敗し、アーキタイプを探すときにプロキシ設定が無視されます (https://bugs.eclipse.org/bugs/show_bug.cgi? id=348893)

解決策は、コマンド ラインでプロジェクトを作成し、結果のファイル構造をワークスペース内の「単純な Maven」プロジェクトにコピーすることです。インポート プロジェクトも失敗します。

しかし、私の本当の問題は次のとおりです

プロジェクトフォルダーをクリックして「新しいJavaクラスを作成」すると、Mavenアーキテクチャーのどこにあるべきかに従って、クラスが間違った場所に配置されます(間違ったオプションを選択していますか?)。だから動かします。

そのため、最初のクラスをメンバーとして持つ 2 番目のクラスを作成します。どちらのクラスも明らかに同じパッケージ名前空間内にあります。しかし、2 番目のメンバー クラスのメソッドがまったく表示されません。

私のPOMまたは私の構造で何か間違ったことをしていると思います。

しかし、私はそれを解決するために何が必要なのか、またどのような情報が必要なのかわかりません.

今のところ、サブモジュールをEclipseで別のパッケージとして作成することに戻り、ANTとさまざまなEclipseツールを使用して必要なライブラリなどをポイントし、テストが完了したらプロジェクトを「maven」プロジェクトに変換します。親POMと子POMはすべて、これを行った後、Eclipse内からOKを検証します。しかし、機能を拡張してモジュールに新しいクラスを追加すると、クラス ファイルが間違った場所に配置され、そこから他のクラス (またはそれらからのこの新しいクラス) が見えなくなります。

助けてください。私はMavenのアイデアが好きで、それを使って依存関係を制御しています.ちなみに、私はANTに向かい、依存関係制御のためにIVYを学ぶかもしれません. Maven を機能させるのに苦労して、それを捨てるだけです!)

ANT / IVY に固執し、maven を忘れる必要がありますが、将来のために maven ディレクトリ構造を維持する必要がありますか?

編集。

だから私は何かを逃したかもしれません...私はEclipseで単純なMavenプロジェクトを作成しようとしましたが、今回はアーキタイプを選択しませんでした。新しい「モジュール」を親フォルダーの下に置きました。これは私がやっていることではなく、親と同じレベルで多数の外部モジュールを作成しました。親の有効な POM (テスト モジュールを含む) から、セクションやその他のタグがあることに気付きました。これを個々のモジュールのPOMに追加することで問題を解決できますか?

4

3 に答える 3

19

これは Eclipse/Maven の奇妙さの結果であり、ランダムに発生するようです。解決するには:

プロジェクトを右クリックし、Maven > Update Project... を選択します。

于 2013-01-17T01:57:16.263 に答える
4

.classpathを見てください。ソースフォルダとターゲットがeclipseが期待する場所にあることを確認します。

例:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
于 2012-05-17T00:26:25.707 に答える
0

たぶん、.project ファイルに次のような設定があるでしょう:

<buildSpec>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.common.project.facet.core.builder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.springframework.ide.eclipse.core.springbuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.validation.validationbuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>

この構成 (または他のプロジェクトの 1 つ) に合わせて変更します。

<buildCommand>
        <name>org.eclipse.wst.common.project.facet.core.builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.springframework.ide.eclipse.core.springbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
于 2014-12-04T14:10:50.327 に答える