簡體   English   中英

Maven:從編譯中排除文件在 IntelliJ IDEA 中不起作用

[英]Maven: excluding files from compilation doesn't work in 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 中,我在排除目錄中出現編譯錯誤。 知道什么可能導致問題嗎?

這是一個未解決的問題,請關注更新。

我在遷移 maven 項目時遇到了同樣的問題。 我通過選擇以下選項使其工作:

文件 > 設置 > 構建、執行、部署 > 構建工具 > Maven > Runner

選中“將 IDE 構建/運行操作委托給 Maven”選項。

此處提供說明: IntelliJ 文檔

我在嘗試解決 IntelliJ IDEA 中的 Java 9 模塊信息編譯時發現了這個問題。

我希望我的使用 Java 8 編譯,但同時我希望它具有模塊信息(只能使用 JDK 9+ 編譯)。 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM