gpt4 book ai didi

maven - 从 maven-antrun-plugin 运行的 Ant 在 Java 9 上找不到脚本引擎

转载 作者:行者123 更新时间:2023-12-02 02:40:13 27 4
gpt4 key购买 nike

我有一个使用 Ant 构建文件的 Maven 项目:

<?xml version='1.0' encoding='UTF-8'?>
<project>
<modelVersion>4.0.0</modelVersion>
<artifactId>my-test-app</artifactId>
<groupId>my-test-group</groupId>
<version>1.0-SNAPSHOT</version>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<configuration>
<target>
<ant antfile="build.xml" inheritRefs="true">
<target name="all"/>
</ant>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

Ant 构建文件使用脚本:

<?xml version='1.0' encoding='UTF-8'?>
<project name="scriptdef-test-build">
<scriptdef name="test-script" language="javascript">
<![CDATA[
var System = Java.type('java.lang.System');
System.out.println("Working!");
]]>
</scriptdef>
<target name="all">
<test-script/>
</target>
</project>

在 Java 8 上它可以工作,但在 Java 9 (9-ea+162) 上它找不到脚本引擎:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (compile) on project my-test-app: An Ant BuildException has occured: The following error occurred while executing this line:
/home/dan/scriptdef-test/build.xml:10: Unable to create javax script engine for javascript
around Ant part ...<ant antfile="build.xml" inheritRefs="true">... @ 4:47 in /home/dan/scriptdef-test/target/antrun/build-main.xml
...
Caused by: /home/dan/scriptdef-test/build.xml:10: Unable to create javax script engine for javascript
at org.apache.tools.ant.util.optional.JavaxScriptRunner.evaluateScript(JavaxScriptRunner.java:84)
at org.apache.tools.ant.util.optional.JavaxScriptRunner.executeScript(JavaxScriptRunner.java:67)
at org.apache.tools.ant.taskdefs.optional.script.ScriptDef.executeScript(ScriptDef.java:350)
at org.apache.tools.ant.taskdefs.optional.script.ScriptDefBase.execute(ScriptDefBase.java:50)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:547)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
... 34 more

我附加了一个调试器,我发现 JavaxScriptRunner 使用的 ScriptEngineManager 没有任何脚本引擎,因为它使用的服务加载器找不到任何脚本引擎ScriptEngineFactory 实现。如何让服务加载器工作?

更新:我还为此创建了一个问题:https://issues.apache.org/jira/browse/MANTRUN-200

最佳答案

我的解决方法是将脚本更改为 Groovy,但我收到了有关此问题的通知,并返回查看问题是否已解决。它尚未修复,但评论引导我找到了一个可行的解决方案:

<?xml version='1.0' encoding='UTF-8'?>
<project name="scriptdef-test-build">
<scriptdef name="test-javascript" language="javascript"
classpath="${plugin_classpath}">
<![CDATA[
var System = Java.type('java.lang.System');
System.out.println("Working from Javascript!");
]]>
</scriptdef>

<target name="all">
<property name="plugin_classpath" refid="maven.plugin.classpath"/>
<test-groovy/>
<test-javascript/>
</target>
</project>

关于maven - 从 maven-antrun-plugin 运行的 Ant 在 Java 9 上找不到脚本引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com