'转到定义'在IntelliJ中具有模块依赖性的多模块maven项目中

时间:2014-12-03 15:14:03

标签: maven intellij-idea intellij-14

我有一个包含两个子模块的父模块(module1module2

module2module1

有maven依赖关系

module2中,我引用了module1

中的一个类

当我尝试跳转到此类的定义时,IntelliJ会在我的maven存储库中打开.class文件。我希望它跳转到module1中的java类。如何让IntelliJ跳转此类文件?

我正在运行IntelliJ IDEA Ultimate 14.0.1

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

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>module2</module>
        <module>module1</module>
    </modules>
</project>

module1 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">
    <parent>
        <artifactId>test</artifactId>
        <groupId>test</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>module1</artifactId>
</project>

module2 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">
    <parent>
        <artifactId>test</artifactId>
        <groupId>test</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>module2</artifactId>

    <dependencies>
        <dependency>
            <groupId>test</groupId>
            <artifactId>module1</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

2 个答案:

答案 0 :(得分:0)

另一个答案over here at stackoverflow帮助了我。如果它们尚未到位,您基本上必须添加模块依赖项。

答案 1 :(得分:-1)

您有两种选择:

#p>方式#1:

使用来源构建module1。这样可以确保您使用的java类始终具有一致的源代码。

要使用源启用构建,请将此添加到maven插件:

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.1.2</version>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

方式#2:

通过module1&gt;将您的module2添加到Project structure Modules&gt; Dependencies&gt; +&gt; 3. Module dependency

嗯,它不像#1那样一致,但如果你使用maven版本,设置速度要快得多。如果您正在使用intellij idea build,则可以将此依赖项标记为export,以将其包含在module1输出目录中。