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

Tuesday, 17 January 2017

Thursday, 12 January 2017

Creating maven repository from Gradle dependencies (upload on local artifactory)

1)      Take back-up of $USER_HOME/.m2/repository  folder and perform 'gradle install'
>> gradle install

2)      ‘gradle install’ will build file ‘build/poms/pom-default.xml’ 
        Note: Skip the gradle install step, if you already have 'pom' file.

3)      To download the all the dependencies with the following  Maven command using ‘pom-default.xml’.  (Internet proxy settings must be correctly set in $USER_HOME/.m2/settings.xml )
>> mvn dependency:copy-dependencies -Dmdep.copyPom=true -Dmdep.useRepositoryLayout=true -Dmdep.addParentPoms=true
Note: Need maven-dependency-plugin:2.9 or above for “addParentPoms” to work.

4)      The entire dependency files will be downloaded in $USER_HOME/.m2/repository, which can be directly uploaded into the artifactory.


    

Monday, 9 January 2017

Parameter substitution in Linux shell



 
Following the  table of parameter substitution in shell based on if parameter is set / empty (‘null’) / or unset:

+--------------------+----------------------+-----------------+-----------------+
|                    |         Set          |   Empty('null') |      Unset      |
+--------------------+----------------------+-----------------+-----------------+
| ${parameter:-word} | substitute parameter | substitute word | substitute word |
| ${parameter-word}  | substitute parameter | substitute null | substitute word |
| ${parameter:=word} | substitute parameter | assign word     | assign word     |
| ${parameter=word}  | substitute parameter | substitute null | assign word     |
| ${parameter:?word} | substitute parameter | error, exit     | error, exit     |
| ${parameter?word}  | substitute parameter | substitute null | error, exit     |
| ${parameter:+word} | substitute word      | substitute null | substitute null |
| ${parameter+word}  | substitute word      | substitute word | substitute null |
+--------------------+----------------------+-----------------+-----------------+


${parameter-substitute_value} --> Use substitute only if parameter is 'not set' 
${parameter:-substitute_value} --> Use substitute when parameter is 'not set' and also when parameter is set but empty ('null')


Total Pageviews

Popular Posts