これは、IntelliJ で maven マルチモジュール プロジェクトを使用して動作する方法です。
構造:
.
├── pom.xml
├── モジュール-1
| | ├── pom.xml
| | └── src
| | └──メイン
| | └──ジャワ
| | └──コム
| | └──スタックオーバーフロー
| | └──ふー
| | └──Foo.java
└── モジュール-2
├── pom.xml
└── src
└──メイン
└──ジャワ
└──コム
└──スタックオーバーフロー
└──バー
└── Bar.java
Bar
extendsは に依存している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 モジュールの変更をオンザフライで処理できます。コンパイル時に保存を使用している場合でも、依存モジュールの変更はすぐに反映されます。