2

NetBeans と Maven を使用する場合、複数の Maven プロジェクトでの小さな問題を除けば、すべて問題ありません。「コア」モジュールに依存する「ツール」モジュールがあるとします。「ツール」から最近変更された「コア」を使用するには、「コア」を再インストールする必要があります。

または、別の IDE に切り替える必要がありますか? しかし、IntelliJEclipseにも問題があるようです (これは本当ですか?)。どのようにしますか?

もちろん、これはプロジェクトの実行、デバッグ、およびテストには機能するはずです。

[更新] NetBeans 7.4ではこれが改善されましたが、記載されているようにまだいくつかの問題があります。

4

1 に答える 1

3

これは、IntelliJ で maven マルチモジュール プロジェクトを使用して動作する方法です。

構造:

.
├── pom.xml
├── モジュール-1
| | ├── pom.xml
| | └── src
| | └──メイン
| | └──ジャワ
| | └──コム
| | └──スタックオーバーフロー
| | └──ふー
| | └──Foo.java
└── モジュール-2
    ├── pom.xml
    └── src
        └──メイン
            └──ジャワ
                └──コム
                    └──スタックオーバーフロー
                        └──バー
                            └── Bar.java

Barextendsは に依存しているFooためmodule-2、 に依存していmodule-1ます。

pom.xml

<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">
<modelVersion>4.0.0</modelVersion>

<groupId>com.stackoverflow</groupId>
<artifactId>multi-module-idea</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<name>${project.artifactId}-${project.version}</name>

<properties>
    <mainClass/>
    <argument/>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<modules>
    <module>module-1</module>
    <module>module-2</module>
</modules>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.stackoverflow</groupId>
            <artifactId>module-1-idea</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

</project>

module-1\pom.xml

<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">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.stackoverflow</groupId>
        <artifactId>multi-module-idea</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>module-1-idea</artifactId>

    <name>${project.artifactId}-${project.version}</name>

</project>

module-2\pom.xml

<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">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.stackoverflow</groupId>
        <artifactId>multi-module-idea</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>module-2-idea</artifactId>

    <name>${project.artifactId}-${project.version}</name>

    <properties>
        <mainClass>maba.java.module2.App</mainClass>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.stackoverflow</groupId>
            <artifactId>module-1-idea</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

このプロジェクトが IntelliJ に読み込まれると (ルートでFile | Open...を指すことによってpom.xml)、すべてのモジュールの依存関係が自動的に設定されます。注意maven-idea-pluginおよびの使用は禁止されていますmvn idea:idea。そのモジュールは 2008 年以来更新されていません。

ここに画像の説明を入力

がチェックされていることを確認してくださいMake project automatically(保存時にコンパイルと同じ)。

ここに画像の説明を入力

これがコードサンプルで、すべてがうまく見えます(コンパイルエラーはありません)。

ここに画像の説明を入力

そして今、getText()メソッドをクラスgetTextMessage()内に変更しFoo、数秒待ちます (自動保存を待ってから自動コンパイルするだけで保存する必要はありません)。結果がここに表示されます。

ここに画像の説明を入力


結論

IntelliJ は、他の Maven モジュールの変更をオンザフライで処理できます。コンパイル時に保存を使用している場合でも、依存モジュールの変更はすぐに反映されます。

于 2013-06-12T07:20:37.240 に答える