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

Jenkins can't load extension ContextExtensionPoint if dependency is optional

      As in tutorial:
      https://github.com/jenkinsci/job-dsl-plugin/wiki/Extending-the-DSL

      extend:

      @Extension(optional = true)
      public class AquaPluginJobDslExtension extends ContextExtensionPoint {
      
          @DslExtensionMethod(context = StepContext.class)
          public Object aqua(Runnable closure) {
              AquaContext context = new AquaContext();
              executeInContext(closure, context);
      
              return new AquaPluginBuilder(
                      context.getPacks(),
                      context.getRunType(),
                      context.getLogLevel().getName(),
                      context.getTimeout(),
                      context.getUnits().name(),
                      context.getDelayPollSec()
              );
          }
      }
      

      with dependency:

      <dependency>
                  <groupId>org.jenkins-ci.plugins</groupId>
                  <artifactId>job-dsl</artifactId>
                  <version>1.34</version>
                  <optional>true</optional>
      </dependency>
      

      Then with job-dsl 34 installed do in jenkins script console:

      import javaposse.jobdsl.plugin.ContextExtensionPoint;
      
      Jenkins.instance.refreshExtensions();
      println(Jenkins.instance.getExtensionList(ContextExtensionPoint.class))
      

      prints "[]"

      With dependency <optional>false</optional>

      it prints:
      [com.example.dsl.AquaPluginJobDslExtension@2ee05de3]

      Okay,
      do the same with token macro plugin:

       <dependency>
                  <groupId>org.jenkins-ci.plugins</groupId>
                  <artifactId>token-macro</artifactId>
                  <version>1.10</version>
                  <optional>true</optional>
              </dependency>
      
      @Extension(optional = true)
      public class TokenMExt extends DataBoundTokenMacro {
          @Override
          public String evaluate(AbstractBuild<?, ?> abstractBuild, TaskListener taskListener, String s) throws MacroEvaluationException, IOException, InterruptedException {
              return null;
          }
      
          @Override
          public boolean acceptsMacroName(String s) {
              return false;
          }
      }
      

      in console:

      import org.jenkinsci.plugins.tokenmacro.DataBoundTokenMacro;
      
      println(Jenkins.getInstance().getExtensionList(DataBoundTokenMacro.class))
      

      prints:
      [..., org.jenkinsci.plugins.tokenmacro.impl.PropertyFromFileMacro@11786964, com.example.dsl.TokenMExt@13a9b76f]

          [JENKINS-28408] Jenkins can't load extension ContextExtensionPoint if dependency is optional

          I use maven-hpi-plugin:1.106 (same with latest 1.113)
          If i add token macro as optional dep, then in manifest i see

          Plugin-Dependencies: token-macro:1.10;resolution:=optional

          And if i add job-dsl-plugin as optional, no any tag

          Plugin-Dependencies

          in manifest

          Kirill Merkushev added a comment - I use maven-hpi-plugin:1.106 (same with latest 1.113) If i add token macro as optional dep, then in manifest i see Plugin-Dependencies: token-macro:1.10;resolution:=optional And if i add job-dsl-plugin as optional, no any tag Plugin-Dependencies in manifest

          What about JENKINS-28305 ?

          Kirill Merkushev added a comment - What about JENKINS-28305 ?

          wolfs: I will open a pull request for the maven-hpi-plugin, but to get this fixed sooner, I will also fix (AKA add a workaround) to the gradle-jpi-plugin.

          lanwen: No problem, the new pull request will deal with the problem.

          Daniel Spilker added a comment - wolfs : I will open a pull request for the maven-hpi-plugin, but to get this fixed sooner, I will also fix (AKA add a workaround) to the gradle-jpi-plugin. lanwen : No problem, the new pull request will deal with the problem.

          Daniel Spilker added a comment - Fix for the maven-hpi-plugin: https://github.com/jenkinsci/maven-hpi-plugin/pull/17

          Code changed in jenkins
          User: Daniel Spilker
          Path:
          CHANGELOG.md
          config/codenarc/rules-test.groovy
          src/main/groovy/org/jenkinsci/gradle/plugins/jpi/Jpi.groovy
          src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy
          src/test/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPluginSpec.groovy
          src/test/resources/org/jenkinsci/gradle/plugins/jpi/bitbucket-pom.xml
          src/test/resources/org/jenkinsci/gradle/plugins/jpi/compile-dependencies-pom.xml
          src/test/resources/org/jenkinsci/gradle/plugins/jpi/complex-pom.xml
          src/test/resources/org/jenkinsci/gradle/plugins/jpi/minimal-pom.xml
          src/test/resources/org/jenkinsci/gradle/plugins/jpi/optional-plugin-dependencies-pom.xml
          src/test/resources/org/jenkinsci/gradle/plugins/jpi/plugin-dependencies-pom.xml
          http://jenkins-ci.org/commit/gradle-jpi-plugin/9cafa9f31c9e1807532f29caaba53a7e746f198e
          Log:
          Merge pull request #53 from daspilker/JENKINS-28408

          JENKINS-28408 allow JPI/HPI file extension and packaging type to be configured

          Compare: https://github.com/jenkinsci/gradle-jpi-plugin/compare/5b72ac473142...9cafa9f31c9e

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Spilker Path: CHANGELOG.md config/codenarc/rules-test.groovy src/main/groovy/org/jenkinsci/gradle/plugins/jpi/Jpi.groovy src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy src/test/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPluginSpec.groovy src/test/resources/org/jenkinsci/gradle/plugins/jpi/bitbucket-pom.xml src/test/resources/org/jenkinsci/gradle/plugins/jpi/compile-dependencies-pom.xml src/test/resources/org/jenkinsci/gradle/plugins/jpi/complex-pom.xml src/test/resources/org/jenkinsci/gradle/plugins/jpi/minimal-pom.xml src/test/resources/org/jenkinsci/gradle/plugins/jpi/optional-plugin-dependencies-pom.xml src/test/resources/org/jenkinsci/gradle/plugins/jpi/plugin-dependencies-pom.xml http://jenkins-ci.org/commit/gradle-jpi-plugin/9cafa9f31c9e1807532f29caaba53a7e746f198e Log: Merge pull request #53 from daspilker/ JENKINS-28408 JENKINS-28408 allow JPI/HPI file extension and packaging type to be configured Compare: https://github.com/jenkinsci/gradle-jpi-plugin/compare/5b72ac473142...9cafa9f31c9e

          Will be fixed in job-dsl-plugin 1.35 and is fixed in gradle-jpi-plugin 0.12.0.

          Daniel Spilker added a comment - Will be fixed in job-dsl-plugin 1.35 and is fixed in gradle-jpi-plugin 0.12.0.

          Code changed in jenkins
          User: Daniel Spilker
          Path:
          src/main/java/org/jenkinsci/maven/plugins/hpi/MavenArtifact.java
          http://jenkins-ci.org/commit/maven-hpi-plugin/28e8336c762d5032140ea38c5d127c9394279937
          Log:
          fixed support for jpi packaging type

          JENKINS-28408

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Spilker Path: src/main/java/org/jenkinsci/maven/plugins/hpi/MavenArtifact.java http://jenkins-ci.org/commit/maven-hpi-plugin/28e8336c762d5032140ea38c5d127c9394279937 Log: fixed support for jpi packaging type JENKINS-28408

          Code changed in jenkins
          User: Vincent Latombe
          Path:
          src/main/java/org/jenkinsci/maven/plugins/hpi/MavenArtifact.java
          http://jenkins-ci.org/commit/maven-hpi-plugin/78247d32be9841ccfd165bc7bbb7d2566bc9f994
          Log:
          Merge pull request #17 from daspilker/JENKINS-28408

          JENKINS-28408 fixed support for jpi packaging type

          Compare: https://github.com/jenkinsci/maven-hpi-plugin/compare/b2d139e78da6...78247d32be98

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Vincent Latombe Path: src/main/java/org/jenkinsci/maven/plugins/hpi/MavenArtifact.java http://jenkins-ci.org/commit/maven-hpi-plugin/78247d32be9841ccfd165bc7bbb7d2566bc9f994 Log: Merge pull request #17 from daspilker/ JENKINS-28408 JENKINS-28408 fixed support for jpi packaging type Compare: https://github.com/jenkinsci/maven-hpi-plugin/compare/b2d139e78da6...78247d32be98

          This has been fixed in maven-hpi-plugin 1.14.

          Daniel Spilker added a comment - This has been fixed in maven-hpi-plugin 1.14.

          Ah, typo. It has been fixed in maven-hpi-plugin 1.114.

          Daniel Spilker added a comment - Ah, typo. It has been fixed in maven-hpi-plugin 1.114.

            daspilker Daniel Spilker
            lanwen Kirill Merkushev
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: