Используйте скомпилированные скрипты Groovy с плагином GMavenPlus
я пытаюсь использовать
GMavenPlus Plugin
запустить некоторые
Groovy
сценарии из
Maven
которые были скомпилированы и упакованы в файл .
Скрипт очень простой:
package foo.bar.scripts
import groovy.transform.Field
@Field
private static final String JAVA_VERSION_PROPERTY_NAME = 'java.version'
@Field
private static final String MAVEN_COMPILER_RELEASE_PROPERTY_NAME = 'maven.compiler.release'
def javaVersion = project.properties[JAVA_VERSION_PROPERTY_NAME]?.trim()
if(javaVersion?.isInteger() && javaVersion.toInteger() >= 9) {
project.properties[MAVEN_COMPILER_RELEASE_PROPERTY_NAME] = javaVersion
}
который затем я вызываю с помощью:
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>scripts</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>adjust-compiler-settings</id>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<scripts>
<script>foo.bar.scripts.AdjustCompilerSettings.main()</script>
</scripts>
</configuration>
</execution>
</executions>
</plugin>
Согласно документации ,
project
переменная должна быть доступна по умолчанию, и это действительно так, если я определю встроенный скрипт, а не выбираю его из
jar
. У меня есть способ передать такой объект?
2 ответа
Я не нашел решения проблемы, но нашел (вроде) обходной путь. То есть упаковать исходники Groovy как
jar
, опубликуйте их, а затем заставьте Maven загрузить их (с
maven-dependency-plugin
) и пусть
gmavenplus-plugin
ссылаться на такие источники.
Не самое красивое решение, но оно работает :)
На основании данной вещи:
<profile>
<id>javac-release</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<properties>
<maven.compiler.release>8</maven.compiler.release>
</properties>
</profile>