Функция предварительного просмотра Groovyc и Java 12

Я пытаюсь скомпилировать проект, в котором есть тесты, написанные на groovy. В проекте есть --enable-preview для Java 12.

Я использую gmavenplus-plugin для этого:

        <plugin>                                                            
            <groupId>org.codehaus.gmavenplus</groupId>                      
            <artifactId>gmavenplus-plugin</artifactId>                      
            <version>1.6.3</version>                                        
            <configuration>                                                 
                <targetBytecode>${java.version}</targetBytecode>            
                <testSources>                                               
                    <testSource>                                            
                        <directory>${testSourceDirectory}</directory>       
                        <includes>                                          
                            <include>**/*.groovy</include>                  
                        </includes>                                         
                    </testSource>                                           
                </testSources>                                              
            </configuration>                                                
            <executions>                                                    
                <execution>                                                 
                    <goals>                                                 
                        <goal>compileTests</goal>                                                                                                                                                                
                    </goals>                                                
                </execution>                                                
            </executions>                                                   
        </plugin>   

У меня есть --enable-preview для компилятора maven и surefire/failsafe (с использованием argLine). Все работает, если я отключу заводной плагин (и тесты).

Но когда я включаю его, он терпит неудачу с:

Failed to execute goal org.codehaus.gmavenplus:gmavenplus-plugin:1.6.3:compileTests (default) on project apikey-manager-api: Error occurred while calling a method on a Groovy class from classpath.: InvocationTargetException: Preview features are not enabled for com/acme/config/EndToEndTest (class file version 56.65535). Try running with '--enable-preview' -> [Help 1]

Я не вижу никаких параметров, которые я мог бы передать этому плагину, чтобы включить функции предварительного просмотра. Он использует javac? Или такая опция должна быть в groovyc?


person Krzysztof Krasoń    schedule 25.03.2019    source источник
comment
Похоже, компиляция работает, но затем запуск теста происходит без установки --enable-preview. Если вы можете проверить скомпилированные файлы .class из теста с помощью javap -v <class>, вы можете проверить, что версия дополнительного файла класса не равна нулю, чтобы убедиться, что он был скомпилирован с --enable-preview.   -  person Jorn Vernee    schedule 25.03.2019
comment
@JornVernee К сожалению, компиляция groovy не работает, она терпит неудачу, потому что видит EndToEnd.class, который является классом Java, скомпилированным с --enable-preview, в результате чего groovyc терпит неудачу.   -  person Krzysztof Krasoń    schedule 25.03.2019
comment
О, я вижу, groovyc пытается загрузить этот класс, скомпилированный с параметром --enable-preview, а затем терпит неудачу, потому что groovyc не работает в JVM с параметром --enable-preview. Может быть, установка переменной среды JAVA_OPTS на --enable-preview будет работать? (это работает с изоляцией, используя командную строку groovy)   -  person Jorn Vernee    schedule 25.03.2019
comment
Сообщил об ошибке github.com/groovy/GMavenPlus/issues/125   -  person Krzysztof Krasoń    schedule 26.03.2019


Ответы (1)


Благодаря изменениям в Groovy (GROOVY-9073) и GMavenPlus (#125), теперь он доступен с GMavenPlus 1.7.1 с Groovy 2.5.7+/3.0.0-beta-1+.

person Keegan    schedule 06.06.2019