In NixOS , nix-shell -p gradle
is enough.
A gradle script handle two things:
gradle -q hello
:
Copy // build.gradle
task hello {
doLast {
println "tutorialspoint [${project}]"
println "[${path}]"
println "[${projectDir}]"
println "[${buildDir}]"
}
}
task upper {
doLast {
String expString = 'TUTORIALS point'
println "Original: " + expString
println "Upper case: " + expString.toUpperCase()
}
}
// Take note it is plural tasks
tasks.create(name: 'abc') {
doLast {
println("*** abc ***")
}
}
Task phases:
execution phase (doFirst, doLast)
---------------------------------------------------------------------------------------------------------------
Sample ok build.gradle
:
Copy apply plugin: 'java'
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.12.2'
compile group: 'com.google.zxing', name: 'core', version: '3.4.0'
compile group: 'com.google.zxing', name: 'javase', version: '3.4.0'
compile group: 'net.java.dev.jna', name: 'jna', version: '5.5.0'
compile group: 'com.goterl.lazycode', name: 'lazysodium-java', version: '4.2.5'
compile group: 'co.libly', name: 'resource-loader', version: '1.3.7'
compile group: 'at.favre.lib', name: 'bytes', version: '1.3.0'
}
task AAA {
println("-- AAA --")
doLast {
println("** AAA **")
}
}
Copy mkdir -p src/main/java
touch src/main/java/App.java
gradle build
Without any java source file, gradle build
won't download the jars.
How to reference a local jar within build.gradle
:
Copy apply plugin: 'java'
repositories {
mavenCentral()
google()
jcenter()
flatDir {
dirs rootDir.absolutePath + '/projectA/src/main/java/proto'
}
}
dependencies {
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.12.2'
compile group: 'com.google.zxing', name: 'core', version: '3.4.0'
compile group: 'com.google.zxing', name: 'javase', version: '3.4.0'
compile group: 'net.java.dev.jna', name: 'jna', version: '5.5.0'
compile group: 'com.goterl.lazycode', name: 'lazysodium-java', version: '4.2.5'
compile group: 'co.libly', name: 'resource-loader', version: '1.3.7'
compile group: 'at.favre.lib', name: 'bytes', version: '1.3.0'
// either of these 3 works!
//compile name: 'card_access.proto'
//compile fileTree(dir: idpass_proto, include: '*.jar')
implementation files('src/main/java/proto/card_access.proto.jar')
}
To create gradle wrapper:
gradle wrapper --gradle-version 5.6.1
These two are the same:
Copy dependencies {
/* THIS
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.12.2'
compile group: 'com.google.zxing', name: 'core', version: '3.4.0'
compile group: 'com.google.zxing', name: 'javase', version: '3.4.0'
compile group: 'net.java.dev.jna', name: 'jna', version: '5.5.0'
compile group: 'com.goterl.lazycode', name: 'lazysodium-java', version: '4.2.5'
compile group: 'co.libly', name: 'resource-loader', version: '1.3.7'
compile group: 'at.favre.lib', name: 'bytes', version: '1.3.0'
*/
// or THIS
implementation 'com.google.protobuf:protobuf-java:3.12.2'
implementation 'com.google.zxing:core:3.4.0'
implementation 'com.google.zxing:javase:3.4.0'
implementation 'net.java.dev.jna:jna:5.5.0'
implementation 'com.goterl.lazycode:lazysodium-java:4.2.5'
implementation 'co.libly:resource-loader:1.3.7'
implementation 'at.favre.lib:bytes:1.3.0'
}
Gradle File API
Copy task copyPoems(type: Copy) {
from 'text-files'
into 'build/poems'
}
task copyjar(type: Copy) {
from 'text-files/test.jpg'
into 'c:/Users/63927/cooljars'
}
Control Name of Jar in Gradle
In build.gradle
Copy task buildjar(type: Jar) {
archiveBaseName = 'desired-name-here'
}
But you have to invoke the task manually such as: gradle buildjar
for the task to run.
Know, that this can also be controlled in settings.gradle
as:
Copy rootProject.name = 'desired-name-here'