gradle tricks

Generate Runner shell script

add in the build.gradle


ext.generateFile ={ className ->

    println "Generating runner script v1 for "+className;
    new File(projectDir, "${className}_Runner.sh").text = """
#!/usr/bin/env bash
#classpath
cpath=${sourceSets.main.runtimeClasspath.asPath}
#logFile
logfile=${className}_run.log

#classToRun
runclass=${className}

#Running command line
nohup java -Xms1g -Xmx15g -XX:MaxMetaspaceSize=13g -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp \${cpath} \${runclass} > \${logfile} &


"""

}

task generateAllScripts() {
    doLast {


        def classLists = [
                "Parrot",
                "Cockatiel",
                "Pigeon"
                     ] as String[];

        for(int i=0;i<classLists.length;i++)
        {
            println(classLists[i])
            generateFile(classLists[i]);
        }


    }
}

Change source set

Add below to build.gradle

sourceSets {
    main.java.srcDirs = ['chalba']
    main.resources.srcDirs = ['chalba/resources']
}

OR

sourceSets {
    main {
        java {
            srcDirs = [] // don't compile Java code twice
        }
        groovy {
            srcDirs = [ 'src/main/groovy', 'src/main/java' ]
        }
    }
}

building fat jar

jar {

    manifest {
        attributes "Main-Class": "skd.HelloPlugin"
    }
    zip64 = true
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

Building distribution

plugins {
    id 'java'
    id 'application'
    id 'groovy'
}

application {
    mainClassName = 'skd.TrackApe'
    applicationName = 'trackape'
}

sourceCompatibility = 1.8

Include jars from dir

plugins {
    id 'java-library' //only for gradle > 7
    id 'java' // comment this gradle > 7
}


dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])
    
    //gradle > 7
    implementation fileTree(dir: "/home/sapan/tools/ldr/ldr/lib/extlib", includes: ['*.jar'])

}