Saat pertama kali menggunakan Gradle, saya cukup kerepotan mempelajari tool ini karena dokumentasinya lebih mirip dengan manual. Tantangan yang pertama saya peroleh adalah menggunakan repository maven di komputer saya karena kadang kala software yang saya kembangkan berupa API (Application Programming Interface). Keinginan saya sederhana:
Membaca manual Gradle cukup merepotkan untuk hal sederhana tersebut, jadi saya akan uraikan cara sederhana untuk keperluan tersebut. Pada dasarnya ada 3 file yang akan banyak digunakan:
build.gradle di proyek pustaka API
Perhatikan, plugin yang digunakan adalah 'maven'. Perhatikan juga di bagian bawah mulai dari bagian untuk mengkonfigurasi POM.
gradle.properties
Berisi properties dari proyek. Isinya adalah sebagai berikut:
Perhatikan, tidak boleh menggunakan tanda petik string untuk value karena akan menyebabkan error di task javadoc:
Error ini seringkali membingungkan karena tidak jelas, jadi jika menemui error seperti itu, periksa gradle.properties.
Setelah itu, task "install" ($ gradle install) akan mem-build API, menghasilkan .jar, menghasilkan .jar untuk javadoc dan sources, kemudian mem-push semua .jar ke repo lokal seperti berikut ini:
build.gradle di proyek yang akan menggunakan .jar
Sederhana saja, jika sudah di-push, tinggal cantumkan mavenLocal() di repositories dan deklarasikan dependency compile untuk .jar tersebut. Berikut ini adalah contohnya:
That's all there is to say. :)
- Develop pustaka (API)
- Kompilasi dan build API dalam format .jar
- Push .jar ke repositori lokal maven (API, Javadoc, dan source code)
- API (.jar) di repositori lokal tersebut siap digunakan untuk pengembangan software berikutnya
Membaca manual Gradle cukup merepotkan untuk hal sederhana tersebut, jadi saya akan uraikan cara sederhana untuk keperluan tersebut. Pada dasarnya ada 3 file yang akan banyak digunakan:
- build.gradle di proyek pustaka API
- gradle.properties untuk berbagai properties yang diperlukan di proyek pustaka API
- build.gradle di proyek yang akan menggunakan file .jar tersebut
build.gradle di proyek pustaka API
Perhatikan, plugin yang digunakan adalah 'maven'. Perhatikan juga di bagian bawah mulai dari bagian untuk mengkonfigurasi POM.
apply plugin: 'java'
apply plugin: 'maven'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
// definisi URL utk repo lainnya ...
}
dependencies {
// contoh dependency untuk compile
compile group: 'com.bigdata', name: 'bigdata', version: '1.3.0'
// dependency untuk test
testCompile group: 'junit', name: 'junit', version: '4.10'
}
test {
/* Configure which tests are included
include 'org/foo/**'
exclude 'org/boo/**'
*/
maxParallelForks = 5
maxHeapSize = '1024m'
}
// bagian ini ke bawah yang penting untuk mengkonfigurasi POM
configure(install.repositories.mavenInstaller) {
pom.project {
groupId 'name.bpdp'
artifactId 'turgo'
inceptionYear '2014'
packaging 'jar'
licenses {
license {
name 'Eclipse Public License (Version 1.0)'
url 'http://www.eclipse.org/legal/epl-v10.html'
distribution 'repo'
}
}
}
}
// untuk sources.jar
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
// untuk javadoc.jar
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
// artifacts yang di-push selain .jar API
artifacts {
archives sourcesJar
archives javadocJar
}
gradle.properties
Berisi properties dari proyek. Isinya adalah sebagai berikut:
version=0.0.1 group=name.bpdp.turgo
Perhatikan, tidak boleh menggunakan tanda petik string untuk value karena akan menyebabkan error di task javadoc:
Illegal package name: "0.0.1" Illegal package name: " API"
Error ini seringkali membingungkan karena tidak jelas, jadi jika menemui error seperti itu, periksa gradle.properties.
Setelah itu, task "install" ($ gradle install) akan mem-build API, menghasilkan .jar, menghasilkan .jar untuk javadoc dan sources, kemudian mem-push semua .jar ke repo lokal seperti berikut ini:
build.gradle di proyek yang akan menggunakan .jar
Sederhana saja, jika sudah di-push, tinggal cantumkan mavenLocal() di repositories dan deklarasikan dependency compile untuk .jar tersebut. Berikut ini adalah contohnya:
pply plugin: 'java'
apply plugin: 'application'
sourceCompatibility = 1.8
version = '1.0'
mainClassName = 'turgo.examples.hello.HelloTurgo'
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
dependencies {
compile group: 'name.bpdp', name: 'turgo', version: '0.0.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
That's all there is to say. :)
Gradle Untuk Mengelola Repo Lokal Maven