Java Maven:从编译中排除文件不会';在IntelliJ IDEA中不起作用

Java Maven:从编译中排除文件不会';在IntelliJ IDEA中不起作用,java,maven,intellij-idea,Java,Maven,Intellij Idea,我想暂时从编译中排除一些目录,因此我配置maven编译器插件: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <excludes> <exclude>**

我想暂时从编译中排除一些目录,因此我配置maven编译器插件:

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

org.apache.maven.plugins
maven编译器插件
**/foo/***.java

从命令行和Eclipse中,一切都可以正常工作,但在IntelliJ IDEA中,我在排除的目录中遇到了编译错误。知道是什么导致了这个问题吗

这是一个问题,请关注更新。

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

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

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

有关说明,请参见:

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

我希望用Java8编译我的代码,但同时我希望它有模块信息(只能用JDK9+编译)。这个问题的解决方案是:使用JDK 8从编译中排除模块信息,如果使用JDK 9则包含模块信息。它与命令行一起工作,但IDEA无法编译这样的项目。通过向Excludes添加模块信息,可以调整IDEA编译配置,但我想要更清晰的解决方案

可以通过添加带有扩展源目录列表的Maven概要文件来欺骗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>

J9模块
org.apache.maven.plugins
maven编译器插件
8.
默认编译
编译
编译
${project.basedir}/src/main/java
${project.basedir}/src/main/java9
9
java-8-重新编译
编译
编译

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

为什么?将这些文件移到另一个模块中或只是删除它们…(我希望您使用的是版本控制系统)…是的,我当然可以这样做。但是在这种特殊情况下,暂时禁用编译某些包,然后在不移动目录树的大部分内容的情况下重新启用它们要容易得多。谢谢!我将跟踪这一问题的进展,同时我将遵循@khmarbaise的建议。