将已编译的 Groovy 脚本与 GMavenPlus 插件一起使用
Use compiled Groovy scripts with GMavenPlus plugin
我正在尝试使用 GMavenPlus Plugin
到 运行 来自 Maven
的一些 Groovy
脚本,这些脚本已被编译并打包到 jar
中。
脚本非常简单:
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>
根据 documentation,project
变量应该默认可用,如果我定义内联脚本而不是从 jar
中选择它,这确实是正确的。
我有办法让这样的物体通过吗?
基于给定的东西:
<profile>
<id>javac-release</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<properties>
<maven.compiler.release>8</maven.compiler.release>
</properties>
</profile>
我没有找到问题的解决方案,但我找到了(某种程度上)解决方法。那就是将 Groovy 源打包为 jar
,发布它们然后让 Maven 下载它们(使用 maven-dependency-plugin
)并让 gmavenplus-plugin
调用这些源。
不是最好的解决方案,但它有效:)
我正在尝试使用 GMavenPlus Plugin
到 运行 来自 Maven
的一些 Groovy
脚本,这些脚本已被编译并打包到 jar
中。
脚本非常简单:
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>
根据 documentation,project
变量应该默认可用,如果我定义内联脚本而不是从 jar
中选择它,这确实是正确的。
我有办法让这样的物体通过吗?
基于给定的东西:
<profile>
<id>javac-release</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<properties>
<maven.compiler.release>8</maven.compiler.release>
</properties>
</profile>
我没有找到问题的解决方案,但我找到了(某种程度上)解决方法。那就是将 Groovy 源打包为 jar
,发布它们然后让 Maven 下载它们(使用 maven-dependency-plugin
)并让 gmavenplus-plugin
调用这些源。
不是最好的解决方案,但它有效:)