Используйте другой уровень языка для тестирования и производства - PullRequest
1 голос
/ 15 января 2020

У нас есть проект, который создает библиотеку (файл jar) с совместимостью Java 6, но наши модульные тесты выполняются с использованием Java 8 и используют синтаксис Java 8. Наш файл Maven pom. xml включает в себя следующее:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <testSource>1.8</testSource>
            <testTarget>1.8</testTarget>
        </configuration>
    </plugin>

Проект IntelliJ IDEA построен как проект Maven. К сожалению, IntelliJ IDEA рассматривает весь проект как jdk 1.6, даже модульные тесты, поэтому в окне редактора помещается красная строка с синтаксисом Java 8 (например, лямбда-выражения), говоря, что это не поддерживается в Java 6. Есть ли способ сказать ему использовать синтаксис Java 8 для тестов и Java 6 для производственного кода? Они живут в отдельных деревьях каталогов, но являются частью одного и того же модуля.

1 Ответ

1 голос
/ 15 января 2020

Согласно документации IntelliJ IDEA, можно настроить разные JDL для разных модулей, но они не поддерживают разные JDK для теста и исходного кода.

Существует даже официальный ответ:

В настоящее время не поддерживается: https://youtrack.jetbrains.com/issue/IDEA-85478.

(подробнее здесь: https://intellij-support.jetbrains.com/hc/en-us/community/posts/360001335500-Set-different-java-language-level-between-source-code-and-test-in-the-lastest-stable-version-of-Idea-)

Существует несколько неуклюжий обходной путь - вы можете использовать другой профиль Maven, который будет использоваться только для IDEA:

<profiles>
  <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>
<profiles>

Более подробную информацию можно найти здесь: https://youtrack.jetbrains.com/issue/IDEA-85478

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...