Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-4988

Maven 3 support in maven-plugin


    • Icon: New Feature New Feature
    • Resolution: Fixed
    • Icon: Major Major
    • maven-plugin
    • None

      Hudson maven-plugin doesn't work with Maven 3 on Linux. On Linux Hudson builds its own Java command line and does some additional magic to launch Maven. On Windows it works fine because mvn.bat is used instead.

      The mechanism on Linux fails for two reasons:

      1. classworlds-*.jar was upgraded to plexus-classworlds-2.2.2 with Maven 3, so the classpath is wrong.

      2. plexus-classworlds-2.2.2 is not fully backward compatible. After renaming the jar to classworlds-2.2.2.jar the error is:

      $ /opt/java/x86_64/jdk1.6.0_16/bin/java -Xmx768m -XX:MaxPermSize=256m -cp /home/hudson/plugins/maven-plugin/WEB-INF/lib/maven-agent-1.335.jar:/opt/maven/3.0-alpha-5/boot/classworlds-2.2.2.jar hudson.maven.agent.Main /opt/maven/3.0-alpha-5 /usr/share/tomcat5/webapps/hudson/WEB-INF/lib/remoting-1.335.jar /home/hudson/plugins/maven-plugin/WEB-INF/lib/maven-interceptor-1.335.jar 32917
      Exception in thread "main" java.lang.NoSuchMethodError: org.codehaus.classworlds.Launcher.getWorld()Lorg/codehaus/classworlds/ClassWorld;
      at hudson.maven.agent.Main.main(Main.java:115)
      at hudson.maven.agent.Main.main(Main.java:62)
      ERROR: Failed to launch Maven. Exit code = 1
      Skipping sonar analysis due to bad build status FAILURE
      Finished: FAILURE

      Reason for the above error is that getWorld() returns a different type in 2.2.2 which isn't assignable to the type returned in 1.x.

      A general question: Why does Hudson use different mechanisms for launching Maven on Windows and Linux?

      Tested with 1.335

            olamy Olivier Lamy
            zlosch zlosch
            155 Vote for this issue
            138 Start watching this issue