images
22/02/2021 04:49 am

Lập trình viên PRO phải biết: Sử dụng công cụ biên dịch code với Maven và Gradle trong JAVA

Bạn thường xuyên viết code và chạy ứng dụng trên máy cá nhân. Liệu đã bao giờ bạn tự hỏi ứng dụng mình phát triển sẽ được deploy lên server và chạy như thế nào?


Để hoàn thiện một ứng dụng sẽ gồm nhiều bước. Một ứng dụng dạng đơn giản nhất khi deploy lên server sẽ gồm 3 bước trên:


1. Code: Lập trình trên máy

2. Build: Biên dịch code thành ngôn ngữ cho JVM chạy (nôm na là file class)

3. Deploy: Copy lên server và run ứng dụng


Do đó bước quan trọng sau khi code là bạn cần phải biết cách biên dịch code. Sử dụng công cụ build, bạn sẽ biên dịch và nén tất cả các class thành một file .jar hoặc file .war. Bài viết này sẽ giới thiệu 2 công cụ được sử dụng phổ biến nhất hiện nay để biên dịch ứng dụng Java, đó là Maven và Gradle.


MAVEN


- Là công cụ để build project, report, documenting Java và quản lý các dependencies

- Dựa trên khái niệm của Project Object Model (pom)


Cài đặt Maven


- Download Maven: https://maven.apache.org/download.cgi

- Install Maven: Giải nén file vào một thư mục nhất định, giả sử là ổ C:/Maven 3.6. Sau đó bạn cần add PATH cho Maven.

- Run: Để chạy maven, bạn mở terminal (hoặc CMD) và đánh lệnh sau:


mvn -version


Kết quả: tương tự như sau là đúng:

Apache Maven 3.6.0


Bạn hãy giải nén và lưu lại ở ổ C như hình vẽ:



Mở ra cửa sổ System Environment để cập nhật PATH



Chọn Edit tại Path theo hình:



Chọn New, Paste đường dẫn của Maven/bin vào như hình vẽ


Mở ra cửa sổ CMD, bạn đánh vào lệnh: mvn -version


Các thông tin cơ bản


Maven quản lý một dự án thông qua file pom.xml. Trong file này sẽ chứa các thông tin của project. Ví dụ về 1 file pom như sau:


<?xml version="1.0" encoding="UTF-8"?>

<project>


   <groupId>vn.fo.unikgate</groupId>

   <artifactId>hello</artifactId>

   <version>1.0.0-SNAPSHOT</version>

   <packaging>jar</packaging>


   <dependencies>

        <dependency>

           <groupId>com.fasterxml.jackson.core</groupId>

           <artifactId>jackson-databind</artifactId>

           <version>2.9.4</version>

       </dependency>

       <dependency>

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>4.12</version>

           <scope>test</scope>

       </dependency>

    </dependencies>

</project>


Maven quản lý một dự án thông qua file pom.xml. Trong file này sẽ chứa các thông tin của project. Đầu tiên là thông tin cơ bản. Một project maven gồm có 3 thông tin chính sau lúc khởi tạo, bạn bắt buộc phải khai báo:


ArtifactId

Tên Project, Module

GroupId

Tên nhóm project, module

Version

Phiên bản


Repositories


Maven giúp bạn quản lý các thư viện cho dự án. Các thư viện này được kéo về từ Internet. Repositories là nơi chứa các thư viện.  Các public repositories nổi tiếng của maven đó là:


- repo.maven.apache.org/maven2/

- https://mvnrepository.com/


Thông thường với mặc định maven sẽ kết nối tới repo.maven.apache.org/maven2/ để kéo thư viện về máy cho bạn khi build


Local Repositories



Khi project được build, các gói thư viện sẽ tự động được kéo về máy của bạn, thông thường sẽ ở thư mục: C:/{user}/.m2. Khi bạn mở thư mục này ra sau khi lần đầu build 1 dự án với maven, bạn sẽ thấy rất nhiều thư viện sẽ được maven lưu ở đây. ĐIều này giúp quá trình build sau này được tăng tốc thay vì phải kéo gói từ internet


Dependencies trong Maven


Khai báo thư viện phụ thuộc với groupId, artifactId và version. Scope để quy định thư viện sẽ được dùng lúc compile, lúc runtime, lúc test...



<dependencies>

   <dependency>

     <groupId>group-a</groupId>

     <artifactId>artifact-b</artifactId>

     <version>1.0</version>

     <scope>runtime</scope>

   </dependency>
….

 </dependencies>


Một thành phần trong maven không thể thiếu được là phần khai báo các thư viện mà bạn sẽ dùng. Phần này gọi là Dependencies. Ví dụ bạn cần sử dụng thư viện của spring, bạn sẽ phải khai báo trong Dependencies của maven.


Build Project với Maven


 Chúng ta thử tạo project maven nhé.


- Tạo project maven sử dụng Intellij hoặc Eclipse


- Build project với câu lệnh sau:


mvn clean install


- Gói jar sau khi build xong sẽ được để trong thư mục target .m2/repository


Sử dụng Intellij tạo Maven Project


Tạo new Project: File>New>Project



Chọn Maven:



Điền vào thông tin group, artifact:



Sau khi project được tạo ra, bạn sẽ nhìn thấy cấu trúc sau:


Bạn có thể thêm vào các thư viện cần dùng cho dự án bằng cách khai báo trong file pom.xml này. Ở trên mình đã thử add gói thư viện junit. Giờ hãy thử build nhé.


GRADLE


Gradle gần đây được sử dụng phổ biến hơn Maven do dạng khai báo đơn giản hơn.


Setup + Install Gradle


Bạn làm tương tự như cài đặt Maven ở trên. Hãy download Gradle về máy: https://gradle.org/releases/ 

Sau đó giải nén tại ổ C, rồi add biến môi trường trỏ tới gradle tương tự như ở bước cài đặt Maven ở trên. Lúc này đường dẫn bạn add vào PATH của Windows có dạng sau: 


C:\Gradle\gradle-6.8.1\bin


Mời bạn xem hướng dẫn đầy đủ cho các OS ở đây:

https://gradle.org/install 


Cũng tương tự như tạo project với Maven, trên Intellij bạn có thể tạo gradle project



Sau khi tạo xong project với Intellij, bạn sẽ có file bulid.gradle như sau:


plugins {

   id 'java'

   id 'maven-publish'

}

group 'techzone'

version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {

   mavenCentral()

}

dependencies {

   testCompile group: 'junit', name: 'junit', version: '4.12'

}

publishing {

   publications {

       mavenJava(MavenPublication) {

           from components.java

           pom {

               name = 'My Library'

               description = 'A concise description of my library'

           }

       }

   }

}


Gradle Dependencies


Để gradle biết được nơi các thư viện sẽ được kéo về, bạn cần khai báo thư viện mavenCentral như sau:


repositories {

   mavenCentral()

}

dependencies {

   testCompile group: 'junit', name: 'junit', version: '4.12'

}


Gradle Build


Để build project, bạn sử dụng câu lệnh sau:


gradle build


Không như maven, nó sẽ mặc định copy file build của bạn ra local maven repo. Với Gradle, bạn cần sử dụng câu lệnh sau để copy file build ra local maven repo:


gradle publishToMavenLocal


Phần tiếp theo, bạn có thể xem ví dụ sử dụng công cụ maven build để xây dựng một website tại đây: Dựng Rest API có tích hợp Database sử dụng Spring Boot


- Tech Zone -

Thư giãn chút nào!!!

Bài viết liên quan