Gradle: используйте разные jre для сборки и тестов - PullRequest
0 голосов
/ 03 января 2019

Вот моя ситуация, у меня есть проект Java и некоторые модульные тесты, чтобы пойти с ним.

Мои модульные тесты запрашивают Java 1.8, потому что они используют Stream и Arguments.of

Мои исходники Java должны быть собраны с помощью Java 1.7, потому что они должны быть импортированы в Matlab - и, к сожалению, Matlab не понимает Java 1.8

.

Есть ли у меня решение заставить их работать вместе?

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вам нужно указать targetCompatibility при компиляции.Обычно это указывается на корневом уровне вашего файла сборки Gradle, но, поскольку вы хотите, чтобы тестовый код был другой версией, вам нужно явно указать его для задачи compileJava.

Также следует указатьбиблиотека времени выполнения Java 7, поэтому, если вы запустите Gradle с Java 8 , ваш файл сборки будет выглядеть примерно так:

apply plugin: 'java'

// options used by all compile tasks unless overridden, e.g. used by compileTestJava
sourceCompatibility = 1.8
targetCompatibility = 1.8

compileJava {
    // override global options just for this task
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
    options.bootClasspath = 'path/to/java7/lib/rt.jar'
}

// and all your other stuff
0 голосов
/ 03 января 2019

Вы должны быть в состоянии построить проект с JDK 8 и установить различные уровни совместимости.Согласно Плагин Java> Другие свойства соглашения , вы можете попробовать добавить ниже к build.gradle:

plugins {
  id 'java'
}

compileJava {
  sourceCompatibility = JavaVersion.VERSION_1_7
  targetCompatibility = JavaVersion.VERSION_1_7
}

compileTestJava {
  sourceCompatibility = JavaVersion.VERSION_1_8
  targetCompatibility = JavaVersion.VERSION_1_8
}     

Java стремится поддерживать обратную совместимость.Пока вы не столкнетесь с ошибкой, которая была исправлена ​​в JDK 8, но все еще присутствует в JDK 7, вы должны быть в порядке.

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