Maven:排除编译中的文件在IntelliJ IDEA中不起作用

时间:2017-05-26 11:22:39

标签: java maven intellij-idea

我想暂时从编译中排除某些目录,所以我配置了maven-compiler-plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>**/foo/**/*.java</exclude>
        </excludes>
    </configuration>
</plugin>

从命令行和Eclipse开始,一切正常,但在IntelliJ IDEA中,我在排除目录中遇到了编译错误。知道可能导致问题的原因是什么吗?

3 个答案:

答案 0 :(得分:2)

这是open issue,请关注更新。

答案 1 :(得分:0)

我在迁移Maven项目时遇到了同样的问题。 我通过选择以下选项使其工作:

  

文件>设置>构建,执行,部署>构建工具> Maven>   跑步者

选中“将IDE的构建/运行操作委托给Maven”选项。

此处提供说明: IntelliJ documentation

答案 2 :(得分:0)

我在 IntelliJ IDEA 中尝试解决 Java 9 模块信息编译时发现了这个问题。

我希望我的 library 使用 Java 8 编译,但同时我希望它具有模块信息(只能使用 JDK 9+ 编译)。此问题的解决方案suggested by Maven:从使用 JDK 8 的编译中排除 module-info,如果使用 JDK 9,则包括。它适用于命令行,但 IDEA 无法编译此类项目。可以通过将模块信息添加到排除来调整 IDEA 编译配置,但我想要更清晰的解决方案。

可以通过添加带有源目录扩展列表的 Maven Profile 来欺骗 IDEA:

<profile>
    <!-- This profile enables two pass compilation:
         1. Compile all sources with Java 9 target version (including module-info.java)
         2. Recompile all sources with Java 8 target version, but module-info.java
         After this all classes will have Java 8 bytecode (version 52), while
         module-info.class will have Java 9 bytecode (version 53) -->
    <id>J9-module</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <release>8</release>
                </configuration>
                <executions>
                    <execution>
                        <id>default-compile</id>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <phase>compile</phase>
                        <configuration>
                            <compileSourceRoots>
                                <sourceRoot>${project.basedir}/src/main/java</sourceRoot>
                                <sourceRoot>${project.basedir}/src/main/java9</sourceRoot>
                            </compileSourceRoots>
                            <release>9</release>
                        </configuration>
                    </execution>
                    <execution>
                        <id>java-8-recompile</id>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <phase>compile</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

使用上面显示的配置文件,IDEA 本身将只编译标准的 src/main/java