使用IntelliJ IDEA处理源和测试的不同语言和目标级别

时间:2013-02-01 11:35:09

标签: java maven intellij-idea

如果有人知道如何在IDEA的项目属性中处理这个pom,我感兴趣:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
       <source>1.3</source>
       <target>1.3</target>
       <testSource>1.5</testSource>
       <testTarget>1.5</testTarget>
   </configuration>
   <version>3.0</version>
</plugin> 

我应该设置项目级别1.3和模块级别1.5还是明智的?

当IDEA重新加载maven项目的任何时候,它都会设置语言级别,因为它从maven到1.3并且总是抱怨测试类。

但这将作为错误报告给JetBrains。

2 个答案:

答案 0 :(得分:10)

this request跟踪支持测试源/目标级别。语言级别已更改消息也是known issue

答案 1 :(得分:3)

如前所述,Idea尚不支持主要和测试源的不同语言级别。

有一种解决方法可以强制Idea在导入Maven项目时使用testSource中定义的语言级别。您可以仅为Idea使用不同的编译器插件设置创建单独的Maven配置文件:

<profiles>

    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <testSource>1.8</testSource>
                        <testTarget>1.8</testTarget>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <profile>
        <id>ide</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <property>
                <name>idea.maven.embedder.version</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <testSource>1.8</testSource>
                        <testTarget>1.8</testTarget>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

</profile>