2016-09-06 6 views
0

Я использую Xtend в intellij, используя Xtend-plugin. Мой уровень языка проекта установлен на Java 8, а Xtend отлично компилируется для Java 8 (например, с использованием лямбда-выражений).Xtend force java 7 уровень языка

По каким-то причинам мне нужен Xtend для генерации кода Java 7 без изменения языкового уровня моего оставшегося проекта (Java 8).

В настройках проекта Xtend я могу установить уровень языка, однако этот параметр игнорируется. Я считаю, что он игнорируется, потому что в оставшемся проекте по-прежнему используются JDK 8 и уровень языка Java 8.

Есть ли способ заставить Xtend использовать другой уровень языка?

+0

Код Java 7 полностью совместим с кодом Java 8. Какое доказательство у вас есть, что этот параметр игнорируется? – Makoto

+0

Он генерирует лямбда-выражения. Сгенерированный код используется на стороне клиента GWT, который не поддерживает новые функции Java 8. – fwind

ответ

0

Существует по крайней мере один bug в Xtend-компилятором который предотвращает перекрестное сближение с более низкой версией JDK, чем тот, который находится в пути к классам проекта.

Пример:

#[ 42, 43 ].forEach[ println(it) ] 

Если проект, если настроено для Java-8 классов в классов, генерируемый Java-код будет автоматически использовать (метод Java-8 API в forEach по умолчанию из Iterable, Consumer, ...)

Это из Независимой каких-либо настроек источника/целевого уровня.

0

Я не много деталей на поставленный выше вопрос, но при условии, если проект Maven на основе, то вы можете ориентировать компиляцию в pom.xml

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<version>3.5.1</version> 
<configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
</configuration> 
</plugin>