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

Break transitive dependencies on maven-integration-plugin

    • Break transitive dependencies on maven-integration-plugin

      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...

          [JENKINS-46684] Break transitive dependencies on maven-integration-plugin

          Oleg Nenashev added a comment -

          Oleg Nenashev added a comment - CC ndeloof

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

          Arnaud Héritier added a comment - I'm not sure what can be done by the plugin owner cc olamy

          Oleg Nenashev added a comment -

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

          Oleg Nenashev added a comment - I think batmat should provide a list of plugins to be modified for starters. Maven plugin may need some API tweaks to support detaching (like jglick did for matrix), but this EPIC is not ready for implementation. Assigning to Baptiste

          Oleg Nenashev added a comment -

          batmat do you plan to work on it?

          Oleg Nenashev added a comment - batmat do you plan to work on it?

          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 rtyler already knows/implemented this for CodeValet .

          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 rtyler already knows/implemented this for CodeValet .

          Oleg Nenashev added a comment -

          batmat 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

          Oleg Nenashev added a comment - batmat 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

          Jesse Glick added a comment -

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

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

          #!/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

          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

          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).

          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).

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

          \o/

          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/

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

              Created:
              Updated:
              Resolved: