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

Break transitive dependencies on maven-integration-plugin

    Details

    • Epic Name:
      Break transitive dependencies on maven-integration-plugin
    • Similar Issues:

      Description

      We would like people to stop using https://wiki.jenkins.io/display/JENKINS/Maven+Project+Plugin but the user base is still growing (less quickly fortunately).

      I think one of the main contributors to this is that it is actually impossible today to not install that plugin. It's pulled in by basically the whole world.

      So for instance, even if it's not explicitly in the Jenkins 2 installation wizard list of plugins, it will always be installed transitively.

      Then, imagine a newcomer installing Jenkins for the first time for a try, using Maven and Java on a daily basis... Installed Jenkins, clicked "New Item", who is not going to click on "Maven Job"?...

      So if we ever to move forward and see the usage of this plugin decrease significantly, we need in my opinion to first work so that it is not automatically installed on every single Jenkins instance in the world...

        Attachments

          Activity

          batmat Baptiste Mathus created issue -
          batmat Baptiste Mathus made changes -
          Field Original Value New Value
          Description We would like people to stop using https://wiki.jenkins.io/display/JENKINS/Maven+Project+Plugin but the user base is still growing (less quickly fortunately).

          I think one of the main contributors to this is that it is actually *impossible* today to not install that plugin. It's pulled in by basically the whole world.

          So for instance, even if it's not explicitly in the Jenkins 2 installation wizard list of plugins, it will always be installed transitively.

          Then, imagine a newcomer installing Jenkins for the first time for a try, using Maven and Java on a daily basis... Installed Jenkins, clicked "New Item", who is *not* going to click on "Maven Job"?...
          We would like people to stop using https://wiki.jenkins.io/display/JENKINS/Maven+Project+Plugin but the user base is still growing (less quickly fortunately).

          I think one of the main contributors to this is that it is actually *impossible* today to not install that plugin. It's pulled in by basically the whole world.

          So for instance, even if it's not explicitly in the Jenkins 2 installation wizard list of plugins, it will always be installed transitively.

          Then, imagine a newcomer installing Jenkins for the first time for a try, using Maven and Java on a daily basis... Installed Jenkins, clicked "New Item", who is *not* going to click on "Maven Job"?...

          So if we ever to move forward and see the usage of this plugin decrease significantly, we need in my opinion to first work so that it is *not* automatically installed on every single Jenkins instance in the world...
          oleg_nenashev Oleg Nenashev made changes -
          Component/s maven-plugin [ 16033 ]
          Component/s _unsorted [ 19622 ]
          oleg_nenashev Oleg Nenashev made changes -
          Assignee Oleg Nenashev [ oleg_nenashev ]
          oleg_nenashev Oleg Nenashev made changes -
          Assignee Arnaud Héritier [ aheritier ]
          Hide
          oleg_nenashev Oleg Nenashev added a comment -

          Assigned to Maven Plugin Maintainers.
          IMHO Jenkins admins should be just able to enable/disable job types in the core, e.g. via https://wiki.jenkins.io/display/JENKINS/Extension+Filter+Plugin

          Show
          oleg_nenashev Oleg Nenashev added a comment - Assigned to Maven Plugin Maintainers. IMHO Jenkins admins should be just able to enable/disable job types in the core, e.g. via https://wiki.jenkins.io/display/JENKINS/Extension+Filter+Plugin
          Hide
          oleg_nenashev Oleg Nenashev added a comment -
          Show
          oleg_nenashev Oleg Nenashev added a comment - CC Nicolas De Loof
          Hide
          aheritier Arnaud Héritier added a comment -

          I'm not sure what can be done by the plugin owner cc Olivier Lamy

          Show
          aheritier Arnaud Héritier added a comment - I'm not sure what can be done by the plugin owner cc Olivier Lamy
          Hide
          oleg_nenashev Oleg Nenashev added a comment -

          I think Baptiste Mathus should provide a list of plugins to be modified for starters. Maven plugin may need some API tweaks to support detaching (like Jesse Glick did for matrix), but this EPIC is not ready for implementation. Assigning to Baptiste

          Show
          oleg_nenashev Oleg Nenashev added a comment - I think Baptiste Mathus should provide a list of plugins to be modified for starters. Maven plugin may need some API tweaks to support detaching (like Jesse Glick did for matrix), but this EPIC is not ready for implementation. Assigning to Baptiste
          oleg_nenashev Oleg Nenashev made changes -
          Assignee Arnaud Héritier [ aheritier ] Baptiste Mathus [ batmat ]
          oleg_nenashev Oleg Nenashev made changes -
          Component/s _unsorted [ 19622 ]
          batmat Baptiste Mathus made changes -
          Labels maven
          batmat Baptiste Mathus made changes -
          Component/s maven-plugin [ 16033 ]
          batmat Baptiste Mathus made changes -
          Labels maven maven maven-plugin
          oleg_nenashev Oleg Nenashev made changes -
          Component/s other [ 15490 ]
          Component/s _unsorted [ 19622 ]
          Hide
          oleg_nenashev Oleg Nenashev added a comment -

          Baptiste Mathus do you plan to work on it?

          Show
          oleg_nenashev Oleg Nenashev added a comment - Baptiste Mathus do you plan to work on it?
          batmat Baptiste Mathus made changes -
          Assignee Baptiste Mathus [ batmat ]
          batmat Baptiste Mathus made changes -
          Labels maven maven-plugin essentials maven maven-plugin
          Hide
          batmat Baptiste Mathus added a comment -

          Oleg Nenashev trying to be realistic, not on my free time, no. I would like to, but well.

          Just added essentials label though for triaging, since we might need to tackle this (or work around it using {{ExtensionFilter}}ing) to be able to only propose Pipeline items. Though possibly R. Tyler Croy already knows/implemented this for CodeValet .

          Show
          batmat Baptiste Mathus added a comment - Oleg Nenashev trying to be realistic, not on my free time, no. I would like to, but well. Just added essentials label though for triaging, since we might need to tackle this (or work around it using {{ExtensionFilter}}ing) to be able to only propose Pipeline items. Though possibly R. Tyler Croy already knows/implemented this for CodeValet .
          Hide
          oleg_nenashev Oleg Nenashev added a comment -

          Baptiste Mathus I am pretty sure it just needs something like "descriptors:h.filterDescriptors(app, TopLevelItem.all())" in the New Item dialog (https://github.com/jenkinsci/jenkins/blob/master/core/src/main/resources/hudson/model/View/newJob.jelly) and in folders. So *technically* it is easy to do so. *non-technically* see my PM

          Show
          oleg_nenashev Oleg Nenashev added a comment - Baptiste Mathus I am pretty sure it just needs something like "descriptors:h.filterDescriptors(app, TopLevelItem.all())" in the New Item dialog ( https://github.com/jenkinsci/jenkins/blob/master/core/src/main/resources/hudson/model/View/newJob.jelly ) and in folders. So * technically * it is easy to do so. * non-technically * see my PM
          Hide
          jglick Jesse Glick added a comment -

          I got some PRs merged a few months back that break the deps from analysis-core-based plugins.

          Show
          jglick Jesse Glick added a comment - I got some PRs merged a few months back that break the deps from analysis-core -based plugins.
          Hide
          batmat Baptiste Mathus added a comment -
          #!/bin/groovy
          
           def slurper = new groovy.json.JsonSlurper()
           def result = slurper.parse(new File('update-center.json'))
          
          def pluginsUsingMaven = result.plugins.findAll { plugin ->
          
            return plugin.getValue().dependencies.any { dependency ->
              dependency.name == 'maven-plugin' && dependency.optional == false
            }
          }
          
          pluginsUsingMaven.collect { it.key }.sort().each { println it }
          

          CFLint
          accelerated-build-now-plugin
          analysis-collector
          analysis-core
          android-lint
          artifactory
          build-publisher
          build-requester
          campfire
          checkstyle
          codecover
          codescanner
          collabnet-automic-deploy
          collabnet-uc4-deploy
          conditional-buildstep
          cppncss
          cpptest
          custom-job-icon
          dashboard-view
          dependency-check-jenkins-plugin
          dependencyanalyzer
          deployed-on-column
          deployer-framework
          dry
          dry-run
          email-ext-recipients-column
          emma
          findbugs
          gitflow
          hp-application-automation-tools-plugin
          humbug
          javancss
          jenkins-multijob-plugin
          job-direct-mail
          m2release
          mail-watcher-plugin
          mantis
          maven-dependency-update-trigger
          maven-info
          maven-invoker-plugin
          maven-release-cascade
          maven-repo-cleaner
          metadata
          php
          pipeline-dependency-walker
          pmd
          promoted-builds
          publish-to-bitbucket
          release
          repository
          s3
          saltstack
          sauce-ondemand
          selenium-builder
          semantic-versioning-plugin
          shared-objects
          sonargraph-plugin
          sumologic-publisher
          tasks
          testabilityexplorer
          unleash
          vectorcast-coverage
          vectorcast-execution
          violation-columns
          violations
          warnings
          weblogic-deployer-plugin
          weibo
          whitesource
          xcp-ci

          Show
          batmat Baptiste Mathus added a comment - #!/bin/groovy def slurper = new groovy.json.JsonSlurper() def result = slurper.parse(new File('update-center.json')) def pluginsUsingMaven = result.plugins.findAll { plugin -> return plugin.getValue().dependencies.any { dependency -> dependency.name == 'maven-plugin' && dependency.optional == false } } pluginsUsingMaven.collect { it.key }.sort().each { println it } CFLint accelerated-build-now-plugin analysis-collector analysis-core android-lint artifactory build-publisher build-requester campfire checkstyle codecover codescanner collabnet-automic-deploy collabnet-uc4-deploy conditional-buildstep cppncss cpptest custom-job-icon dashboard-view dependency-check-jenkins-plugin dependencyanalyzer deployed-on-column deployer-framework dry dry-run email-ext-recipients-column emma findbugs gitflow hp-application-automation-tools-plugin humbug javancss jenkins-multijob-plugin job-direct-mail m2release mail-watcher-plugin mantis maven-dependency-update-trigger maven-info maven-invoker-plugin maven-release-cascade maven-repo-cleaner metadata php pipeline-dependency-walker pmd promoted-builds publish-to-bitbucket release repository s3 saltstack sauce-ondemand selenium-builder semantic-versioning-plugin shared-objects sonargraph-plugin sumologic-publisher tasks testabilityexplorer unleash vectorcast-coverage vectorcast-execution violation-columns violations warnings weblogic-deployer-plugin weibo whitesource xcp-ci
          Hide
          batmat Baptiste Mathus added a comment -

          So, status update: it did improve indeed. I just installed the suggested plugins on a fresh jenkins/jenkins:latest and didn't get maven-plugin installed. Same for latest LTS (2.107.2).

          Show
          batmat Baptiste Mathus added a comment - So, status update: it did improve indeed. I just installed the suggested plugins on a fresh jenkins/jenkins:latest and didn't get maven-plugin installed. Same for latest LTS (2.107.2).
          Hide
          batmat Baptiste Mathus added a comment -

          Situation improved. I will likely now just file targeted JIRAs against plugins still pulling this plugin in, if any.

          \o/

          Show
          batmat Baptiste Mathus added a comment - Situation improved. I will likely now just file targeted JIRAs against plugins still pulling this plugin in, if any. \o/
          batmat Baptiste Mathus made changes -
          Status Open [ 1 ] Closed [ 6 ]
          Resolution Fixed [ 1 ]
          batmat Baptiste Mathus made changes -
          Labels essentials maven maven-plugin essentials evergreen maven maven-plugin
          batmat Baptiste Mathus made changes -
          Labels essentials evergreen maven maven-plugin evergreen maven maven-plugin

            People

            • Assignee:
              Unassigned
              Reporter:
              batmat Baptiste Mathus
            • Votes:
              2 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: