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

Ivy plugin cannot handle custom latest strategies and conflict managers

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      My company uses a different versioning notation, e.g. R1A01 instead of 1.0.1-1. This has resulted in a custom latest strategy which I add to each project as follows:

      <dependencies>
      <dependency org="com.bla.bla" name="ftf" rev="R1A01" conf="test-compile->api;test-runtime->runtime"/>
      <conflict org="com.bla.bla.*" manager="latest-product-revision-conflict-manager"/>
      </dependencies>

      This works fine outside Hudson of course but when running the build in Hudson, I get the following exception:

      ERROR: Failed to parse ivy.xml files
      java.io.IOException: Unable to parse ivy descriptors
      at hudson.ivy.IvyModuleSetBuild$RunnerImpl.parseIvyDescriptorFiles(IvyModuleSetBuild.java:532)
      at hudson.ivy.IvyModuleSetBuild$RunnerImpl.doRun(IvyModuleSetBuild.java:368)
      at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:416)
      at hudson.model.Run.run(Run.java:1244)
      at hudson.ivy.IvyModuleSetBuild.run(IvyModuleSetBuild.java:283)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:122)
      Caused by: java.lang.NullPointerException
      at org.apache.ivy.core.sort.CollectionOfModulesToSort.addToModulesByModuleId(CollectionOfModulesToSort.java:71)
      at org.apache.ivy.core.sort.CollectionOfModulesToSort.<init>(CollectionOfModulesToSort.java:66)
      at org.apache.ivy.core.sort.ModuleDescriptorSorter.<init>(ModuleDescriptorSorter.java:51)
      at org.apache.ivy.core.sort.SortEngine.sortModuleDescriptors(SortEngine.java:99)
      at org.apache.ivy.Ivy.sortModuleDescriptors(Ivy.java:639)
      at hudson.ivy.IvyModuleSetBuild$IvyXmlParser.call(IvyModuleSetBuild.java:798)
      at hudson.ivy.IvyModuleSetBuild$IvyXmlParser.call(IvyModuleSetBuild.java:744)
      at hudson.remoting.UserRequest.perform(UserRequest.java:114)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:270)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)

      which is understandable as the embedded Ivy has no notion of our custom conflict manager/latest strategy.

      Is there any way to make the plugin to disregard this configuration line as it has no impact on the plugin itself or make it work in some other way? I have seen that Ivy configurations can be defined on main Hudson configuration page but I do not understand how they can be used from a project/job (Ivy project type).

        Attachments

          Activity

          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in hudson
          User: : tbingaman
          Path:
          trunk/hudson/plugins/ivy/src/main/java/hudson/ivy/IvyModuleSet.java
          trunk/hudson/plugins/ivy/src/main/java/hudson/ivy/IvyModuleSetBuild.java
          trunk/hudson/plugins/ivy/src/main/resources/hudson/ivy/IvyModuleSet/configure-entries.jelly
          trunk/hudson/plugins/ivy/src/main/resources/hudson/ivy/IvyModuleSet/help-ivySettingsFile.html
          trunk/hudson/plugins/ivy/src/main/resources/hudson/ivy/Messages.properties
          http://jenkins-ci.org/commit/30898
          Log:
          [FIXED JENKINS-6468] Added an option to specify an ivy settings file for Ivy Projects

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in hudson User: : tbingaman Path: trunk/hudson/plugins/ivy/src/main/java/hudson/ivy/IvyModuleSet.java trunk/hudson/plugins/ivy/src/main/java/hudson/ivy/IvyModuleSetBuild.java trunk/hudson/plugins/ivy/src/main/resources/hudson/ivy/IvyModuleSet/configure-entries.jelly trunk/hudson/plugins/ivy/src/main/resources/hudson/ivy/IvyModuleSet/help-ivySettingsFile.html trunk/hudson/plugins/ivy/src/main/resources/hudson/ivy/Messages.properties http://jenkins-ci.org/commit/30898 Log: [FIXED JENKINS-6468] Added an option to specify an ivy settings file for Ivy Projects
          Hide
          tbingaman Timothy Bingaman added a comment -

          Available in version 1.7 (should show up on the update site tomorrow hopefully)

          Show
          tbingaman Timothy Bingaman added a comment - Available in version 1.7 (should show up on the update site tomorrow hopefully)
          Hide
          bloomper bloomper added a comment -

          Sorry for not getting back until now.

          I think I have a problem but have not been able to fully investigate it (our environment is not doing too well at the moment so it has been difficult to test). As we have not only custom latest strategies but also our own implementations, where should I put our JAR file so that the plugin has access to it at build time? We are using slaves if that makes any difference.

          Show
          bloomper bloomper added a comment - Sorry for not getting back until now. I think I have a problem but have not been able to fully investigate it (our environment is not doing too well at the moment so it has been difficult to test). As we have not only custom latest strategies but also our own implementations, where should I put our JAR file so that the plugin has access to it at build time? We are using slaves if that makes any difference.
          Hide
          bloomper bloomper added a comment -

          Never mind. Once our environment was working again, I just placed our JAR file in <hudson home>/plugins/ivy/WEB-INF/lib and it worked.

          Show
          bloomper bloomper added a comment - Never mind. Once our environment was working again, I just placed our JAR file in <hudson home>/plugins/ivy/WEB-INF/lib and it worked.
          Hide
          tbingaman Timothy Bingaman added a comment -

          Sweet, glad to hear it's working. I can't really think of any better way to load up your custom classes than what you've done. You'll just have to remember to replace your jar every time you update the Ivy plugin. Not ideal, but workable I guess.

          Show
          tbingaman Timothy Bingaman added a comment - Sweet, glad to hear it's working. I can't really think of any better way to load up your custom classes than what you've done. You'll just have to remember to replace your jar every time you update the Ivy plugin. Not ideal, but workable I guess.

            People

            Assignee:
            tbingaman Timothy Bingaman
            Reporter:
            bloomper bloomper
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: