Uploaded image for project: 'Maven Antrun Plugin'
  1. Maven Antrun Plugin
  2. MANTRUN-200

Scriptdef tasks fail to load when running on Java9

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Done
    • 1.8
    • None
    • None

    Description

      I have a Maven project using maven-antrun-plugin:

      <?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>
      

      The Ant build file uses a script:

      <?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>
      

      On Java 8 it works, but on Java 9 (9-ea+162) it can't find the script engine:

      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
      

      I have attached a debugger and I saw that the ScriptEngineManager used by JavaxScriptRunner doesn't have any script engines, because the service loader it uses doesn't find any ScriptEngineFactory implementations. I have tried --add-modules jdk.scripting.nashorn and --add-opens jdk.scripting.nashorn/jdk.nashorn.api.scripting=ALL-UNNAMED, but neither helped.

      Attachments

        Issue Links

          Activity

            People

              rfscholte Robert Scholte
              dan.berindei Dan Berindei
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: