0

私は実際に複数のJavaプロジェクトとしてビルドするMavenプロジェクトを持っています。プロジェクトBには、プロジェクトAのクラスの子であるクラスが含まれています。このクラスをデバッガーで実行しようとすると、メソッドがその親から機能を呼び出そうとすると、NoSuchMethodエラーが発生します。

Mavenセットアップは、すべてのプロジェクトをコンパイルしてMavenリポジトリーに配置するように設計されているため、他のプロジェクトがそれらを見つけることができます(依存関係があるため、最初に前提条件のプロジェクトをビルドします)。これはすべてデプロイメントに適していますが、Eclipseでデバッグしているユーザーに、デバッガーを起動するたびにMavenインストールを強制したくありません。代わりに、該当するプロジェクトのクラスパスにpre-reqプロジェクトを追加してみました(ビルドパス->クラスフォルダーの追加)。これは機能しません。ビルドパスにMavenリポジトリとクラスパスの両方があるためだと思いますか?しかし、Mavenをインストールする前に、クラスフォルダーを強制的に解析し、新しいクラスフォルダーを解析する必要がありますか?

毎回Mavenインストールをやり直す必要なしにこれが機能するように構成するにはどうすればよいですか?

4

2 に答える 2

0

あなたのpomファイルは正確にどのように見えますか?私はよく、他のMavenサブプロジェクトで構成される1つの親Mavenプロジェクトがあるセットアップを使用します。

次のような親pomがあります。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>put group id here</groupId>
<artifactId>name of artifact id</artifactId>
<version>0.2.0-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>example-subproject-1</module>
    <module>example-subproject-2</module>
    </modules>
</project>

次に、次のようなpomファイルをサブプロジェクトに作成します(これがサブプロジェクト1のpomファイルであると想定します)。

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<parent>
    <artifactId>artifact id of parent pom</artifactId>
    <groupId>group id of parent pom</groupId>
    <version>version number of parent pom</version>
</parent>
<groupId>group id</groupId>
<artifactId>artifact id</artifactId>
<packaging>packaging</packaging>
<version>1</version>
<name>put name here</name>
<dependencies>
    <dependency>
        <groupId>group id of example subproject 2</groupId>
        <artifactId>example-subproject-2</artifactId>
        <version>version number of example subproject 2</version>
    </dependency>
</dependencies>
</project>

このように設定すると、ルートディレクトリにいる場合は、プロジェクト全体をコンパイルできます。特定のディレクトリをコンパイルしたいだけなら、そのディレクトリに変更するだけです。依存関係セクションに必要なサブプロジェクトが含まれていることを確認してください。

于 2013-03-18T17:56:18.963 に答える
0

m2eclipse プラグインがインストールされていることを確認してください。

http://eclipse.org/m2e/download/

また、m2eclipse-wtp プラグインをインストールします。

http://marketplace.eclipse.org/content/maven-integration-eclipse-wtp#.UUdUhBxwrIU

プロジェクトが「Maven」プロジェクトとして作成されていることを確認してください。したがって、'ProjectA->Properties->Builders' を見ると、'Maven Project Builder' が表示されます。

上記のすべての手順に従うと、プロジェクトの依存関係が正しく解決され、エラーが発生することはありません。

それでもエラーがある場合は、Eclipse プロジェクト構造を投稿してください。

于 2013-03-18T17:54:24.440 に答える