Sample gradle file


Following details are part of previous blog
http://www.scmtechblog.net/2015/12/how-to-migrate-parent-pom-from-maven-to.html

Here is the sample of base gradle file which can be acted as super pom for your project.
There are 2 profiles we have enabled whitebox-analysis and Coverage-analysis which does complete checks and only jacoco respectively.



// File: base.gradle
allprojects {
 afterEvaluate { project ->

        if (project.hasProperty("whitebox-analysis")) {

   project.apply plugin: 'java'
   project.apply plugin: 'findbugs'
   project.apply plugin: 'pmd'
   project.apply plugin: 'checkstyle'
   project.apply plugin: "jacoco"
//      project.apply plugin: "sonar-runner"

   findbugs {
  ignoreFailures = true
  effort = "max"
  reportLevel = "high"
   }

   pmd {
  ignoreFailures = true
  ruleSets = ["basic"]
   }

   checkstyle {
  ignoreFailures = true
  configFile = file("/home/jenkins/scripts/checks.xml")
   }
   


   jacoco {
  toolVersion = "0.7.1.201405082137" 
   }

   jacocoTestReport {
  description = "Generate Jacoco coverage reports after running tests."
  sourceDirectories = files('src/java')
  classDirectories = files('build/classes/main')
    reports {
   xml.enabled true
   csv.enabled false
   html.enabled true
        }
   }

   check.dependsOn checkstyleMain, pmdMain, findbugsMain, jacocoTestReport
   jacocoTestReport.dependsOn test

 } 

       if (project.hasProperty("coverage-analysis")) {

          project.apply plugin: 'java'
          project.apply plugin: "jacoco"
          project.apply plugin: 'maven'

          jacoco {
                toolVersion = "0.7.1.201405082137"
          }

          jacocoTestReport {
                description = "Generate Jacoco coverage reports after running tests."
                sourceDirectories = files('src/java')
                classDirectories = files('build/classes/main')
                  reports {
                        xml.enabled true
                        csv.enabled false
                        html.enabled true
                  }
          }

          check.dependsOn jacocoTestReport
          jacocoTestReport.dependsOn test

 }

        repositories {
            maven {
                name "central"
                url "<give your URL>"
            }
            maven {
                name "central2"
                url "<give your URL>"
            }
            maven {
                name "release-local"
                url "<give your URL>"
            }
            maven {
                name "snapshot-local"
                url "<give your URL>"
            }
            maven {
                name "plugin-release"
                url "<give your URL>"
            }
            maven {
                name "plugin-snapshot"
                url "<give your URL>"
            }
            mavenLocal()

        }
}
}

Here is One more gradle file as super pom which takes care of uploading the artifacts to the repository. You can call both init script with -I options.
initscript {
        repositories {
                mavenCentral()
                maven { url "<Your mavne URL>"}
        }

}

allprojects {
 afterEvaluate { project ->
   project.apply plugin: 'maven'
   uploadArchives {
  repositories {
    mavenDeployer {
   pom.packaging = project.packaging
   pom.groupId = project.group
   pom.version = project.version
   pom.artifactId = project.artifactid
   if(project.version.endsWith('-SNAPSHOT')) {
     repository(url: '<Your snapshot Maven URL>') {
       authentication(userName: RepoUsernameProp, password: repoPasswordProp);
     }
   }
   else {
     repository(url: '<Your Release Maven URL>') {
                            authentication(userName: RepoUsernameProp, password: repoPasswordProp);
                          }
                        }
    }
  }
   }
 }
}
You can call these scripts like following.
./gradle clean disk-Pwhitebox-analysis check
-I /home/releasebot/jenkins/scripts/gradle/base.gradle 
-I /home/releasebot/jenkins/scripts/gradle/publish.gradle

Popular posts from this blog

Manage Docker images on local disk

Gradle or Maven - A Dilemma

Code Review - Write your code right