
Gradle - Phá vỡ thế độc tôn
Với thế giới lập trình thì việc ra đời của #Gradle là điều tất yếu, và kẻ sinh sau thường là kẻ xuất chúng và khôn ngoan hơn. Gradle đã thừa kế tất cả các tính năng của #Maven, tự tạo dấu ấn riêng cho mình bằng quả tạo custom task và đặc biệt sau này #Android #Studio và #Intellij đã đưa #Gradle trở thành công cụ “native” cho #Kotlin thì gradle ngày càng trở nên bá đạo.
Tạo project với IntelliJ
Giả sử chúng ta cần tạo một dự án có tên crm
(Customer Relationship Management) để quản khách hàng cho công ty.
Bước 1. Mở IntelliJ và chọn File -> New -> Project, chúng ta sẽ có popup:

Bước 2. Click next và chúng ta có:

Điền các thông tin như sau:
Name: crm
Location: workspace-java/crm
GroupId: com.tvd12
ArtifactId: crm
Version: 1.0.0
Click Finish
và chúng ta sẽ có dự án được khởi tạo trên IntelliJ như thế này:
Tạo các module cho project
Thông thường, trong một dự án chúng ta sẽ thường có rất nhiều module khác nhau để common code hoặc đại diện cho các service sẽ được triển khai. Giả sử dự án crm
của chúng ta sẽ bao gồm các service:
- Sales: dành cho đội sale
- Marketing: dành cho phòng marketing
- Report: là nơi xử lý các báo cáo hàng ngày hàng tuần, hàng tháng
- Customer service: là phòng dịch vụ và chăm sóc khách hàng
Sơ đồ thiết kế module của chúng ta sẽ thế này:

Bây giờ, chúng ta sẽ thay đổi crm
project như sau.
Đầu tiên, xoá thư mục src
của project và chúng ta sẽ có:
Bước 2. Mở file build.gradle
và thay thế toàn bộ nội dung với:
plugins {
id 'java'
id 'idea'
}
allprojects {
group 'com.tvd12.crm'
version '1.0.0'
repositories {
mavenCentral()
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
test {
useJUnitPlatform()
}
}
Bước 3. Mở file settings.gradle
và thay thế toàn bộ nội dung với:
include ':common'
include ':database'
include ':caching'
include ':service'
include ':sales'
include ':marketing'
include ':report'
include ':customer'
rootProject.name = 'crm'
Bước 4. Khởi tạo các module
Tạo module common
bằng cách tạo thư mục common
với file build.gradle
như sau:
dependencies {
implementation 'com.tvd12:ezyfox-util:1.1.4'
}
Tạo module database
bằng cách tạo thư mục database
với file build.gradle
như sau:
dependencies {
implementation project(':common')
}
Tạo module caching
bằng cách tạo thư mục caching
với file build.gradle
như sau:
dependencies {
implementation project(':common')
}
Tạo module service
bằng cách tạo thư mục service
với file build.gradle
như sau:
dependencies {
implementation project(':caching')
implementation project(':database')
}
Tạo module sales
bằng cách tạo thư mục sales
với file build.gradle
như sau:
dependencies {
implementation project(':service')
}
Tạo module marketing
bằng cách tạo thư mục marketing
với file build.gradle
như sau:
dependencies {
implementation project(':service')
}
Tạo module report
bằng cách tạo thư mục report
với file build.gradle
như sau:
dependencies {
implementation project(':service')
}
Tạo module customer
bằng cách tạo thư mục customer
với file build.gradle
như sau:
dependencies {
implementation project(':service')
}
Bước 5. sync project crm
và chúng ta sẽ có:
Vậy là chúng ta đã hoàn thành việc khởi tạo project crm
với gradle trên intellij. Bạn có thể tải toàn bộ source code ở đây
Tạo Android project với Android Studio
Việc khởi tạo một Android project với Android Studio cũng tương tự như chúng ta khởi tạo project crm
trên IntelliJ. Chỉ có một sự khác biệt nhỏ là android có thêm một khối setting như thế này:
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.tvd12.freechat"
minSdkVersion 25
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
Và cấu trúc một project android sẽ thế này:
Bạn có thể tìm thấy source code đầy đủ của một android project tại freechat github
Tổng kết
Gradle là một công cụ mạnh mẽ để quản lý, xây dựng và triển khai mã nguồn. Với Intellij, Gradle đã trở thành công cụ được sử dụng rộng rãi trên toàn cầu. Đối với người mới bắt đầu, đối với Android, mình nghĩ gradle là một lựa chọn tốt.