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


Thursday, 8 December 2016

Adding environment from external/workspace file into the Jenkins pipeline



// Reading workspace inside pipeline script file using 'readProperties or readFile', 

def props = readProperties file: 'tempFiles/env.properties'

// Adding environment into the Jenkins:
props.each { name, val ->
   println "Exporting to Jenkins environment: " + name + "="  + val
   env."$name" = "$val"
}

Wednesday, 31 August 2016

Steganography - hiding data within JPG file

The data file must be a ZIP file ('data.zip') and image.jpeg is a image file.

# The data file must be a ZIP file ('data.zip') and 'image.jpeg' is a image file.
>> cat image.jpeg data.zip  > test.jpg

To see the content of jpg having image + data file
>> unzip -t test.jpg


To extract content from jpg having image + data file

>> unzip test.jpg

Wednesday, 28 October 2015

Defrag MYSQL database

Over a period of time, "mysql" tables usually get fragmented. It degrades the performance of "mysql-server" significantly.

You may also find it worth your while to defragment your database tables regularly if you are using VARCHAR fields: these variable-length columns are particularly prone to fragmentation.

To defragment tables manually from command-line using mysqlcheck
Run the following command by replacing USER & PASS values:

mysqlcheck -Aos -u <user> -p <password>

Total Pageviews

Popular Posts