我想暂时从编译中排除某些目录,所以我配置了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中,我在排除目录中遇到了编译错误。知道可能导致问题的原因是什么吗?
答案 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
。