将已编译的 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>

根据 documentationproject 变量应该默认可用,如果我定义内联脚本而不是从 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 调用这些源。

不是最好的解决方案,但它有效:)