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

Refuse to load a plugin if dependencies are disabled or outdated

    XMLWordPrintable

Details

    Description

      According to jglick, Jenkins lets a plugin start even if some of its dependencies are missing.

      Since missing dependencies might only get much later (for example during builds), it's better to let those plugins fail earlier than later.

      Combined with JENKINS-21485, this will make Jenkins boot more reliable and help administrators catch problems more quickly.

      Attachments

        Issue Links

          Activity

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/d57db1b1f2e30917c337eabdc0c204a832fb8d0a
            Log:
            JENKINS-21486 Fix plugin dependencies resolution

            • Check that dependencies are enabled. A disabled optional dependency
              will not prevent a plugin from loading.
            • Check versions of dependencies declared by a plugin before loading it.
              If any dependency (even optional) is older than what is required,
              then the plugin isn't loaded.

            This should prevent use cases where a plugin is loaded but one of its
            dependencies is too old so that :

            • its @Extension annotated classes cannot be loaded, causing the full
              Jenkins to blow up with crapload of exceptions which are tedious to
              investigate to understand the root cause.
            • NoSuchMethodError and the likes at runtime even though boot has
              completed.

            Version check (for setups where version list is manually crafted but yet
            works) can be disabled by starting Jenkins with

            -Dhudson.PluginWrapper.dependenciesVersionCheck.enabled=true

            Minor fixes done while implementing this change :

            • Fix version parsing in PluginWrapper.Dependency
            • Dynamic plugin load didn't check for disabled flag
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/d57db1b1f2e30917c337eabdc0c204a832fb8d0a Log: JENKINS-21486 Fix plugin dependencies resolution Check that dependencies are enabled. A disabled optional dependency will not prevent a plugin from loading. Check versions of dependencies declared by a plugin before loading it. If any dependency (even optional) is older than what is required, then the plugin isn't loaded. This should prevent use cases where a plugin is loaded but one of its dependencies is too old so that : its @Extension annotated classes cannot be loaded, causing the full Jenkins to blow up with crapload of exceptions which are tedious to investigate to understand the root cause. NoSuchMethodError and the likes at runtime even though boot has completed. Version check (for setups where version list is manually crafted but yet works) can be disabled by starting Jenkins with -Dhudson.PluginWrapper.dependenciesVersionCheck.enabled=true Minor fixes done while implementing this change : Fix version parsing in PluginWrapper.Dependency Dynamic plugin load didn't check for disabled flag

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/57e73a3575d4e1fb332e6e41afd282bdecf3d473
            Log:
            JENKINS-21486 Verify core version

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/57e73a3575d4e1fb332e6e41afd282bdecf3d473 Log: JENKINS-21486 Verify core version

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/91e8400ea1ced342c5f11a6499c91beee56542ba
            Log:
            JENKINS-21486 Check Jenkins version if the flag is set

            And don't fail if no version can be found.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/91e8400ea1ced342c5f11a6499c91beee56542ba Log: JENKINS-21486 Check Jenkins version if the flag is set And don't fail if no version can be found.

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/f4e9cb4af4707a07258bd6332416acffd75d443e
            Log:
            JENKINS-21486 Reduce visibility of flag to private

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/f4e9cb4af4707a07258bd6332416acffd75d443e Log: JENKINS-21486 Reduce visibility of flag to private

            Code changed in jenkins
            User: Jesse Glick
            Path:
            changelog.html
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/fa39668b814a6c51e7c460f529692b149e835fc0
            Log:
            [FIXED JENKINS-21486] Merged #2172: enforce plugin dependencies.

            Compare: https://github.com/jenkinsci/jenkins/compare/be9bc0dba552...fa39668b814a

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/fa39668b814a6c51e7c460f529692b149e835fc0 Log: [FIXED JENKINS-21486] Merged #2172: enforce plugin dependencies. Compare: https://github.com/jenkinsci/jenkins/compare/be9bc0dba552...fa39668b814a
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #4543
            JENKINS-21486 Fix plugin dependencies resolution (Revision d57db1b1f2e30917c337eabdc0c204a832fb8d0a)
            JENKINS-21486 Verify core version (Revision 57e73a3575d4e1fb332e6e41afd282bdecf3d473)
            JENKINS-21486 Check Jenkins version if the flag is set (Revision 91e8400ea1ced342c5f11a6499c91beee56542ba)
            JENKINS-21486 Reduce visibility of flag to private (Revision f4e9cb4af4707a07258bd6332416acffd75d443e)

            Result = SUCCESS
            vincent latombe : d57db1b1f2e30917c337eabdc0c204a832fb8d0a
            Files :

            • test/src/test/java/hudson/PluginManagerUtil.java
            • core/src/main/java/hudson/PluginManager.java
            • core/src/main/java/hudson/PluginWrapper.java
            • test/src/test/java/hudson/PluginManagerTest.java
            • test/src/test/java/hudson/PluginWrapperTest.java
            • test/src/test/resources/plugins/depender-0.0.2.hpi
            • test/src/test/resources/plugins/dependee-0.0.2.hpi
            • test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi

            vincent latombe : 57e73a3575d4e1fb332e6e41afd282bdecf3d473
            Files :

            • core/src/main/java/hudson/PluginWrapper.java

            vincent latombe : 91e8400ea1ced342c5f11a6499c91beee56542ba
            Files :

            • core/src/main/java/hudson/PluginWrapper.java

            vincent latombe : f4e9cb4af4707a07258bd6332416acffd75d443e
            Files :

            • core/src/main/java/hudson/PluginWrapper.java
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #4543 JENKINS-21486 Fix plugin dependencies resolution (Revision d57db1b1f2e30917c337eabdc0c204a832fb8d0a) JENKINS-21486 Verify core version (Revision 57e73a3575d4e1fb332e6e41afd282bdecf3d473) JENKINS-21486 Check Jenkins version if the flag is set (Revision 91e8400ea1ced342c5f11a6499c91beee56542ba) JENKINS-21486 Reduce visibility of flag to private (Revision f4e9cb4af4707a07258bd6332416acffd75d443e) Result = SUCCESS vincent latombe : d57db1b1f2e30917c337eabdc0c204a832fb8d0a Files : test/src/test/java/hudson/PluginManagerUtil.java core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi vincent latombe : 57e73a3575d4e1fb332e6e41afd282bdecf3d473 Files : core/src/main/java/hudson/PluginWrapper.java vincent latombe : 91e8400ea1ced342c5f11a6499c91beee56542ba Files : core/src/main/java/hudson/PluginWrapper.java vincent latombe : f4e9cb4af4707a07258bd6332416acffd75d443e Files : core/src/main/java/hudson/PluginWrapper.java

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/5ebf6b8bde83543a10dc21ef0dfd74872f20421e
            Log:
            JENKINS-21486 Follow-up

            Display of shortName of disabled plugin is enough. Fix copy-paste error
            in the message for disabled dependencies

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/5ebf6b8bde83543a10dc21ef0dfd74872f20421e Log: JENKINS-21486 Follow-up Display of shortName of disabled plugin is enough. Fix copy-paste error in the message for disabled dependencies

            Code changed in jenkins
            User: Daniel Beck
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/0846358bf62730a00cfed412b9e8bc0dc7cc1f8a
            Log:
            Merge pull request #2228 from Vlatombe/JENKINS-21486-follow-up

            JENKINS-21486 Follow-up

            Compare: https://github.com/jenkinsci/jenkins/compare/2c9adc9965e2...0846358bf627

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/0846358bf62730a00cfed412b9e8bc0dc7cc1f8a Log: Merge pull request #2228 from Vlatombe/ JENKINS-21486 -follow-up JENKINS-21486 Follow-up Compare: https://github.com/jenkinsci/jenkins/compare/2c9adc9965e2...0846358bf627
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #4548
            JENKINS-21486 Follow-up (Revision 5ebf6b8bde83543a10dc21ef0dfd74872f20421e)

            Result = SUCCESS
            vincent latombe : 5ebf6b8bde83543a10dc21ef0dfd74872f20421e
            Files :

            • core/src/main/java/hudson/PluginWrapper.java
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #4548 JENKINS-21486 Follow-up (Revision 5ebf6b8bde83543a10dc21ef0dfd74872f20421e) Result = SUCCESS vincent latombe : 5ebf6b8bde83543a10dc21ef0dfd74872f20421e Files : core/src/main/java/hudson/PluginWrapper.java

            Code changed in jenkins
            User: Daniel Beck
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/4d0143b8d2be4888d889de44cbc8eccb8776bd41
            Log:
            Revert "Merge pull request #2228 from Vlatombe/JENKINS-21486-follow-up"

            This reverts commit 0846358bf62730a00cfed412b9e8bc0dc7cc1f8a, reversing
            changes made to 2c9adc9965e2fb1ebb4402e4f7307a5d8eae1912.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/4d0143b8d2be4888d889de44cbc8eccb8776bd41 Log: Revert "Merge pull request #2228 from Vlatombe/ JENKINS-21486 -follow-up" This reverts commit 0846358bf62730a00cfed412b9e8bc0dc7cc1f8a, reversing changes made to 2c9adc9965e2fb1ebb4402e4f7307a5d8eae1912.

            Code changed in jenkins
            User: Daniel Beck
            Path:
            changelog.html
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/70ee2012e901214e98c5c24ccf42c8a3af2b7647
            Log:
            Revert "[FIXED JENKINS-21486] Merged #2172: enforce plugin dependencies."

            This reverts commit fa39668b814a6c51e7c460f529692b149e835fc0, reversing
            changes made to be9bc0dba552e271b47102292fc9f585afaaf212.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: changelog.html core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/70ee2012e901214e98c5c24ccf42c8a3af2b7647 Log: Revert " [FIXED JENKINS-21486] Merged #2172: enforce plugin dependencies." This reverts commit fa39668b814a6c51e7c460f529692b149e835fc0, reversing changes made to be9bc0dba552e271b47102292fc9f585afaaf212.

            Code changed in jenkins
            User: Daniel Beck
            Path:
            changelog.html
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/1e338d3565c8c58d2556f344a7c34a3b3ab18ca3
            Log:
            Merge pull request #2236 from daniel-beck/JENKINS-34073

            JENKINS-34073 Revert fix for JENKINS-21486

            Compare: https://github.com/jenkinsci/jenkins/compare/25340e033b5d...1e338d3565c8

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: changelog.html core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/1e338d3565c8c58d2556f344a7c34a3b3ab18ca3 Log: Merge pull request #2236 from daniel-beck/ JENKINS-34073 JENKINS-34073 Revert fix for JENKINS-21486 Compare: https://github.com/jenkinsci/jenkins/compare/25340e033b5d...1e338d3565c8
            jglick Jesse Glick added a comment -

            Fix deferred.

            jglick Jesse Glick added a comment - Fix deferred.

            Code changed in jenkins
            User: Daniel Beck
            Path:
            changelog.html
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/e0828dd7c85f0b0e874823dad625ebb0a6a17cd5
            Log:
            Revert "[FIXED JENKINS-21486] Merged #2172: enforce plugin dependencies."

            This reverts commit fa39668b814a6c51e7c460f529692b149e835fc0, reversing
            changes made to be9bc0dba552e271b47102292fc9f585afaaf212.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: changelog.html core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/e0828dd7c85f0b0e874823dad625ebb0a6a17cd5 Log: Revert " [FIXED JENKINS-21486] Merged #2172: enforce plugin dependencies." This reverts commit fa39668b814a6c51e7c460f529692b149e835fc0, reversing changes made to be9bc0dba552e271b47102292fc9f585afaaf212.

            Code changed in jenkins
            User: Kohsuke Kawaguchi
            Path:
            changelog.html
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/b396deda7fd6b70557710df275d54d35d8f23cb5
            Log:
            Merge pull request #2278 from daniel-beck/1.x-JENKINS-34073

            Revert "[FIXED JENKINS-21486] Merged #2172: enforce plugin dependenci…

            Compare: https://github.com/jenkinsci/jenkins/compare/c51c7dcee272...b396deda7fd6

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/b396deda7fd6b70557710df275d54d35d8f23cb5 Log: Merge pull request #2278 from daniel-beck/1.x- JENKINS-34073 Revert " [FIXED JENKINS-21486] Merged #2172: enforce plugin dependenci… Compare: https://github.com/jenkinsci/jenkins/compare/c51c7dcee272...b396deda7fd6
            mrsolo Sree Sankara added a comment -

            Is this working? I see this crashing with the latest 2.6 Version

            mrsolo Sree Sankara added a comment - Is this working? I see this crashing with the latest 2.6 Version
            mrsolo Sree Sankara added a comment -

            I see this issue again with Jenkins 2.6 version...

            May 25, 2016 1:43:54 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
            INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@63e9f9]: org.springframework.beans.factory.support.DefaultListableBeanFactory@9ac58a
            May 25, 2016 1:43:54 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
            INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@9ac58a: defining beans [activeDirectory,authenticationManager]; root of factory hierarchy
            May 25, 2016 1:43:55 PM org.jenkinsci.main.modules.sshd.SSHD start
            INFO: Started SSHD at port 32612
            May 25, 2016 1:43:55 PM jenkins.InitReactorRunner$1 onAttained
            INFO: Completed initialization
            May 25, 2016 1:43:55 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
            INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@1f6405c: display name [Root WebApplicationContext]; startup date [Wed May 25 13:43:55 EDT 2016]; root of context hierarchy
            May 25, 2016 1:43:55 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
            INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@1f6405c]: org.springframework.beans.factory.support.DefaultListableBeanFactory@357129
            May 25, 2016 1:43:55 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
            INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@357129: defining beans [filter,legacy]; root of factory hierarchy
            May 25, 2016 1:43:55 PM hudson.WebAppMain$3 run
            INFO: Jenkins is fully up and running
            May 25, 2016 1:44:46 PM hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider resolveGroups
            WARNING: Group lookup via Active Directorys LDAP_MATCHING_RULE_IN_CHAIN extension matched users groups but took 21 seconds to run. Switching to recursive lookup for future group lookup queries
            May 25, 2016 1:45:18 PM hudson.ExpressionFactory2$JexlExpression evaluate
            WARNING: Caught exception evaluating: d.helpFile in /job/DXM-WebCQ-Dev/configure. Reason: java.lang.reflect.InvocationTargetException
            java.lang.reflect.InvocationTargetException
            at sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
            at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
            at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
            at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
            at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
            at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
            at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
            at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
            at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:58)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
            at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
            at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:46)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
            at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
            at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
            at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
            at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
            at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
            at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
            at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
            at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
            at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
            at org.eclipse.jetty.server.Server.handle(Server.java:499)
            at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
            at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
            at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
            at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
            Caused by: java.lang.NoClassDefFoundError: hudson/plugins/gradle/Gradle
            at java.lang.Class.getDeclaredMethods0(Native Method)
            at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
            at java.lang.Class.getDeclaredMethods(Unknown Source)
            at org.kohsuke.stapler.ClassDescriptor.findMethods(ClassDescriptor.java:148)
            at org.kohsuke.stapler.ClassDescriptor.<init>(ClassDescriptor.java:84)
            at org.kohsuke.stapler.MetaClass.buildDispatchers(MetaClass.java:106)
            at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:94)
            at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:203)
            at org.kohsuke.stapler.jelly.groovy.GroovyFacet.createRequestDispatcher(GroovyFacet.java:106)
            at org.kohsuke.stapler.RequestImpl.getView(RequestImpl.java:257)
            at org.kohsuke.stapler.RequestImpl.getView(RequestImpl.java:252)
            at hudson.model.Descriptor.getHelpFile(Descriptor.java:742)
            at hudson.model.Descriptor.getHelpFile(Descriptor.java:724)
            at hudson.model.Descriptor.getHelpFile(Descriptor.java:713)
            ... 150 more
            Caused by: java.lang.ClassNotFoundException: hudson.plugins.gradle.Gradle
            at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376)
            at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)
            at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1079)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 164 more

            mrsolo Sree Sankara added a comment - I see this issue again with Jenkins 2.6 version... May 25, 2016 1:43:54 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@63e9f9] : org.springframework.beans.factory.support.DefaultListableBeanFactory@9ac58a May 25, 2016 1:43:54 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@9ac58a: defining beans [activeDirectory,authenticationManager] ; root of factory hierarchy May 25, 2016 1:43:55 PM org.jenkinsci.main.modules.sshd.SSHD start INFO: Started SSHD at port 32612 May 25, 2016 1:43:55 PM jenkins.InitReactorRunner$1 onAttained INFO: Completed initialization May 25, 2016 1:43:55 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@1f6405c: display name [Root WebApplicationContext] ; startup date [Wed May 25 13:43:55 EDT 2016] ; root of context hierarchy May 25, 2016 1:43:55 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@1f6405c] : org.springframework.beans.factory.support.DefaultListableBeanFactory@357129 May 25, 2016 1:43:55 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@357129: defining beans [filter,legacy] ; root of factory hierarchy May 25, 2016 1:43:55 PM hudson.WebAppMain$3 run INFO: Jenkins is fully up and running May 25, 2016 1:44:46 PM hudson.plugins.active_directory.ActiveDirectoryUnixAuthenticationProvider resolveGroups WARNING: Group lookup via Active Directorys LDAP_MATCHING_RULE_IN_CHAIN extension matched users groups but took 21 seconds to run. Switching to recursive lookup for future group lookup queries May 25, 2016 1:45:18 PM hudson.ExpressionFactory2$JexlExpression evaluate WARNING: Caught exception evaluating: d.helpFile in /job/DXM-WebCQ-Dev/configure. Reason: java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314) at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185) at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51) at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80) at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:58) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:46) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53) at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: hudson/plugins/gradle/Gradle at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getDeclaredMethods(Unknown Source) at org.kohsuke.stapler.ClassDescriptor.findMethods(ClassDescriptor.java:148) at org.kohsuke.stapler.ClassDescriptor.<init>(ClassDescriptor.java:84) at org.kohsuke.stapler.MetaClass.buildDispatchers(MetaClass.java:106) at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:94) at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:203) at org.kohsuke.stapler.jelly.groovy.GroovyFacet.createRequestDispatcher(GroovyFacet.java:106) at org.kohsuke.stapler.RequestImpl.getView(RequestImpl.java:257) at org.kohsuke.stapler.RequestImpl.getView(RequestImpl.java:252) at hudson.model.Descriptor.getHelpFile(Descriptor.java:742) at hudson.model.Descriptor.getHelpFile(Descriptor.java:724) at hudson.model.Descriptor.getHelpFile(Descriptor.java:713) ... 150 more Caused by: java.lang.ClassNotFoundException: hudson.plugins.gradle.Gradle at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1079) at java.lang.ClassLoader.loadClass(Unknown Source) ... 164 more
            danielbeck Daniel Beck added a comment -

            This wasn't resolved, the stupid bot just resolved it again due to the 'Revert [FIXED JENKINS-21486]" commit message.

            /me sighs.

            danielbeck Daniel Beck added a comment - This wasn't resolved, the stupid bot just resolved it again due to the 'Revert [FIXED JENKINS-21486] " commit message. /me sighs.
            mrsolo Sree Sankara added a comment -

            updating it to critical as this breaking jenkins configuration completely. hope this is fine.

            mrsolo Sree Sankara added a comment - updating it to critical as this breaking jenkins configuration completely. hope this is fine.
            danielbeck Daniel Beck added a comment -

            mrsolo Please note this is merely a robustness improvement. You're likely just facing https://www.jfrog.com/jira/browse/HAP-699 which is an Artifactory Plugin bug. Install Gradle Plugin and it resolves itself.

            danielbeck Daniel Beck added a comment - mrsolo Please note this is merely a robustness improvement. You're likely just facing https://www.jfrog.com/jira/browse/HAP-699 which is an Artifactory Plugin bug. Install Gradle Plugin and it resolves itself.

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/43ddbdfc1cd651e0430289766637a11717494e88
            Log:
            JENKINS-21486 Fix plugin dependencies resolution

            • Check that dependencies are enabled. A disabled optional dependency
              will not prevent a plugin from loading.
            • Check versions of dependencies declared by a plugin before loading it.
              If any dependency (even optional) is older than what is required,
              then the plugin isn't loaded.

            This should prevent use cases where a plugin is loaded but one of its
            dependencies is too old so that :

            • its @Extension annotated classes cannot be loaded, causing the full
              Jenkins to blow up with crapload of exceptions which are tedious to
              investigate to understand the root cause.
            • NoSuchMethodError and the likes at runtime even though boot has
              completed.

            Version check (for setups where version list is manually crafted but yet
            works) can be disabled by starting Jenkins with

            -Dhudson.PluginWrapper.dependenciesVersionCheck.enabled=true

            Minor fixes done while implementing this change :

            • Fix version parsing in PluginWrapper.Dependency
            • Dynamic plugin load didn't check for disabled flag
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/43ddbdfc1cd651e0430289766637a11717494e88 Log: JENKINS-21486 Fix plugin dependencies resolution Check that dependencies are enabled. A disabled optional dependency will not prevent a plugin from loading. Check versions of dependencies declared by a plugin before loading it. If any dependency (even optional) is older than what is required, then the plugin isn't loaded. This should prevent use cases where a plugin is loaded but one of its dependencies is too old so that : its @Extension annotated classes cannot be loaded, causing the full Jenkins to blow up with crapload of exceptions which are tedious to investigate to understand the root cause. NoSuchMethodError and the likes at runtime even though boot has completed. Version check (for setups where version list is manually crafted but yet works) can be disabled by starting Jenkins with -Dhudson.PluginWrapper.dependenciesVersionCheck.enabled=true Minor fixes done while implementing this change : Fix version parsing in PluginWrapper.Dependency Dynamic plugin load didn't check for disabled flag

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            http://jenkins-ci.org/commit/jenkins/646969b690797bb289a558104109ec1fc92b38cf
            Log:
            JENKINS-21486 Refactoring

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java http://jenkins-ci.org/commit/jenkins/646969b690797bb289a558104109ec1fc92b38cf Log: JENKINS-21486 Refactoring

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            core/src/main/resources/hudson/Messages.properties
            core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly
            http://jenkins-ci.org/commit/jenkins/b8f26b34a29ab3e8d80e8c7be4df2232cee0169e
            Log:
            JENKINS-21486 Simplify dependency errors model and serve consistent
            messages between console and administrative monitor

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java core/src/main/resources/hudson/Messages.properties core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly http://jenkins-ci.org/commit/jenkins/b8f26b34a29ab3e8d80e8c7be4df2232cee0169e Log: JENKINS-21486 Simplify dependency errors model and serve consistent messages between console and administrative monitor

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            core/src/main/resources/hudson/Messages.properties
            http://jenkins-ci.org/commit/jenkins/99fa5f7a49ae06063c5306de877e1d5af3a56464
            Log:
            JENKINS-21486 Fix :ant from daniel and separate failed plugin from
            missing

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java core/src/main/resources/hudson/Messages.properties http://jenkins-ci.org/commit/jenkins/99fa5f7a49ae06063c5306de877e1d5af3a56464 Log: JENKINS-21486 Fix :ant from daniel and separate failed plugin from missing

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginWrapper.java
            core/src/main/resources/hudson/Messages.properties
            core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly
            http://jenkins-ci.org/commit/jenkins/6bf02d514d80e806f108290fbea06ac6f6064798
            Log:
            JENKINS-21486 Fix up messages and show plugin version

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginWrapper.java core/src/main/resources/hudson/Messages.properties core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly http://jenkins-ci.org/commit/jenkins/6bf02d514d80e806f108290fbea06ac6f6064798 Log: JENKINS-21486 Fix up messages and show plugin version

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginManager.java
            core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly
            http://jenkins-ci.org/commit/jenkins/d8f3bfc8ed0f88e5bff757c0eec921d6c135d5b4
            Log:
            JENKINS-21486 Cycle monitor should display plugin long name and
            version

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginManager.java core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly http://jenkins-ci.org/commit/jenkins/d8f3bfc8ed0f88e5bff757c0eec921d6c135d5b4 Log: JENKINS-21486 Cycle monitor should display plugin long name and version

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            core/src/main/java/hudson/PluginManager.java
            http://jenkins-ci.org/commit/jenkins/8e3c9dadc1b09406ab6e77af33518ee3168470d4
            Log:
            JENKINS-21486 Mention both long name, short name and version in console

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: core/src/main/java/hudson/PluginManager.java http://jenkins-ci.org/commit/jenkins/8e3c9dadc1b09406ab6e77af33518ee3168470d4 Log: JENKINS-21486 Mention both long name, short name and version in console

            Code changed in jenkins
            User: Vincent Latombe
            Path:
            test/src/test/java/hudson/model/UsageStatisticsTest.java
            http://jenkins-ci.org/commit/jenkins/dff8e806b9466652a351dd7fb7f742b6698140db
            Log:
            JENKINS-21486 Only consider plugins detached before the current
            version

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: test/src/test/java/hudson/model/UsageStatisticsTest.java http://jenkins-ci.org/commit/jenkins/dff8e806b9466652a351dd7fb7f742b6698140db Log: JENKINS-21486 Only consider plugins detached before the current version

            Code changed in jenkins
            User: Daniel Beck
            Path:
            core/src/main/java/hudson/PluginManager.java
            core/src/main/java/hudson/PluginWrapper.java
            core/src/main/resources/hudson/Messages.properties
            core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly
            core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly
            test/src/test/java/hudson/PluginManagerTest.java
            test/src/test/java/hudson/PluginManagerUtil.java
            test/src/test/java/hudson/PluginWrapperTest.java
            test/src/test/java/hudson/model/UsageStatisticsTest.java
            test/src/test/resources/plugins/dependee-0.0.2.hpi
            test/src/test/resources/plugins/depender-0.0.2.hpi
            test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi
            http://jenkins-ci.org/commit/jenkins/b27b15025748b37b018351256d2bc1d21e1b460a
            Log:
            Merge pull request #2487 from Vlatombe/JENKINS-21486

            JENKINS-21486 Fix plugin dependencies resolution, second round.

            Compare: https://github.com/jenkinsci/jenkins/compare/86e14ddffc5e...b27b15025748

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/PluginWrapper.java core/src/main/resources/hudson/Messages.properties core/src/main/resources/hudson/PluginManager/PluginCycleDependenciesMonitor/message.jelly core/src/main/resources/hudson/PluginWrapper/PluginWrapperAdministrativeMonitor/message.jelly test/src/test/java/hudson/PluginManagerTest.java test/src/test/java/hudson/PluginManagerUtil.java test/src/test/java/hudson/PluginWrapperTest.java test/src/test/java/hudson/model/UsageStatisticsTest.java test/src/test/resources/plugins/dependee-0.0.2.hpi test/src/test/resources/plugins/depender-0.0.2.hpi test/src/test/resources/plugins/mandatory-depender-0.0.2.hpi http://jenkins-ci.org/commit/jenkins/b27b15025748b37b018351256d2bc1d21e1b460a Log: Merge pull request #2487 from Vlatombe/ JENKINS-21486 JENKINS-21486 Fix plugin dependencies resolution, second round. Compare: https://github.com/jenkinsci/jenkins/compare/86e14ddffc5e...b27b15025748
            teilo James Nord added a comment -

            This fix seems to cause a regression when using optional dependencies and the variant plugin.
            previously when tagged with OptionalExtension you could use a class that was only in a specific version of a plugin and then the code that depended on the "newer" plugin than was installed would not activate.

            Whilst this is ok for the main running of Jenkins - it causes a massive headache when running tests and depending on a version of a plugin that is using newer optional dependencies than provided by Jenkins (ie previously bundled).

            teilo James Nord added a comment - This fix seems to cause a regression when using optional dependencies and the variant plugin. previously when tagged with OptionalExtension you could use a class that was only in a specific version of a plugin and then the code that depended on the "newer" plugin than was installed would not activate. Whilst this is ok for the main running of Jenkins - it causes a massive headache when running tests and depending on a version of a plugin that is using newer optional dependencies than provided by Jenkins (ie previously bundled).
            danielbeck Daniel Beck added a comment -

            teilo Does this apply to (at)Extension(optional = true) the same way?

            danielbeck Daniel Beck added a comment - teilo Does this apply to (at)Extension(optional = true) the same way?

            teilo see this thread for the full background of the implementation regarding dealing with obsolete optional dependencies.

            vlatombe Vincent Latombe added a comment - teilo see this thread for the full background of the implementation regarding dealing with obsolete optional dependencies.
            teilo James Nord added a comment -

            danielbeck yes - but the (at)Extension(optional = true) has no way to infer a version.
            (infact I can forsee a version of the Variant plugin that allows to specify a specific version of a plugin.)

            Mainly a headache at the moment due to what appears to be a bug in JenkinsRule (or the hpi plugin) and not loading the optional dependencies correctly for dependant plugins. (e.g. something like JENKINS-20412) - but to be investigated and filed separately.

            teilo James Nord added a comment - danielbeck yes - but the (at)Extension(optional = true) has no way to infer a version. (infact I can forsee a version of the Variant plugin that allows to specify a specific version of a plugin.) Mainly a headache at the moment due to what appears to be a bug in JenkinsRule (or the hpi plugin) and not loading the optional dependencies correctly for dependant plugins. (e.g. something like JENKINS-20412 ) - but to be investigated and filed separately.
            jglick Jesse Glick added a comment -

            JenkinsRule (or the hpi plugin) and not loading the optional dependencies correctly for dependant plugins

            I think all you are seeing is that Maven does not traverse transitive dependencies past <optional>true</optional>.

            Anyway I am not sure I am following what issue you are seeing.

            newer optional dependencies than provided by Jenkins (ie previously bundled)

            Are you referring to split plugins, à la ClassicPluginStrategy.DETACHED_LIST? Or what? It is up to the person defining tests to ensure that the plugins available in Maven’s test classpath are mutually compatible; if something is too old, you are obliged to either add <exclusions> for inappropriate dependency trails, or add explicit dependencies on a newer version. Now we may want to provide a friendlier system in the future, but for now that is how it is.

            jglick Jesse Glick added a comment - JenkinsRule (or the hpi plugin) and not loading the optional dependencies correctly for dependant plugins I think all you are seeing is that Maven does not traverse transitive dependencies past <optional>true</optional> . Anyway I am not sure I am following what issue you are seeing. newer optional dependencies than provided by Jenkins (ie previously bundled) Are you referring to split plugins, à la ClassicPluginStrategy.DETACHED_LIST ? Or what? It is up to the person defining tests to ensure that the plugins available in Maven’s test classpath are mutually compatible; if something is too old, you are obliged to either add <exclusions> for inappropriate dependency trails, or add explicit dependencies on a newer version. Now we may want to provide a friendlier system in the future, but for now that is how it is.

            People

              vlatombe Vincent Latombe
              kohsuke Kohsuke Kawaguchi
              Votes:
              6 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: