Tuesday, 31 January 2017

Gradle MavenPublication : generating POM having dependencies


Maven publishing: The publication doesn't know about dependencies, so generating dependencies will have to done manually. In our case we wanted to generate dependencies in below format:





Following Groovy code used to generate the dependencies :

        project.publishing {
                publications {
                      // specify the artifacts to publish
                      artifact source: ............................
                      .....................................................
                      .....................................................
                      pom.withXml {
                            def dependenciesNode = asNode().appendNode('dependencies')

            // We only wanted to publish 'compile' dependencies, can publish 
            // all dependencies if needed to be
                            project.configurations.compile.allDependencies.each { ModuleDependency dp ->
                            dp.artifacts.each { artifact ->
                                  def dependencyNode = dependenciesNode.appendNode('dependency')
                                  dependencyNode.appendNode('groupId', dp.group)
                                  dependencyNode.appendNode('artifactId', dp.name)
                                  dependencyNode.appendNode('version', dp.version)
                                  dependencyNode.appendNode('type',  artifact.type)
                                  dependencyNode.appendNode('classifier',  artifact.classifier)
                                  // for exclusions
                                  def exclusions = dependencyNode.appendNode('exclusions')
                                  dp.excludeRules.each { ExcludeRule ex ->
                                          def exclusion = exclusions.appendNode('exclusion')
                                          exclusion.appendNode('groupId', ex.group)
                                          exclusion.appendNode('artifactId', ex.module)
                                    }
                              }
                         }
                    }
               }

No comments:

Post a Comment

Total Pageviews

Popular Posts