Để build một ứng dụng, website hay java api. Java 3 build tool phổ biến Maven, Gradle, Ant,. Với mỗi build tool có cách build và cấu hình khác nhau. Bài viết xin giới thiệu build java bằng Maven.
Apache Maven là gì?
Apache Maven là một build tool mạnh mẽ cho các dự án phần mềm dùng ngôn ngữ Java. Nó được viết bằng Java, giúp nó có thể chay không phụ thuộc với nền tảng.
Maven cũng có thể thực hiện các hoạt động khác như: tạo trang web, tải lên kết quả xây dựng hoặc tạo báo cáo. Ngoài ra Maven cũng hỗ trợ tạo cấu trúc thư mục ban đầu cho các ứng dụng.
Cài đặt Maven
Yêu cầu hệ thống
- Java SDK cài trước trên máy. Bạn có thể xem hướng dẫn ở bài viết Cài đặt môi trường build cho Java .
Nếu maven chưa được cài và cấu hình thì thực hiện 1 trong 2 cách bên dưới để cài cho Windows hoặc Linux:
Cài đặt
Cài trên Window/Mac
Cách 1: Để cài đặt thủ công, bạn có thể tải xuống Maven từ trang chính thức Maven. Giải nén vào một thư mục và thêm biến môi trường M2_HOME trỏ đến thư mục này. VD: C:\java\maven. Thêm M2_HOME/bin vào biến đường dẫn của bạn.
Để kiểm tra cài đặt thành công dùng lệnh mvn -version
. Nếu hiện như bên dưới, thì bạn đã cài thành công.
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0) Maven home: C:\java\maven\apache-maven-3.8.5
Chi tiết cách các bước bạn xem tại bài hướng dẫn Cài đặt Maven trên Windows
Cách 2: Cài bằng package manager, bạn có thể dùng chocolatey để setup tự động maven bằng lệnh sau:
choco uninstall maven -Y
Cài trên Linux
Đối với Linux, hầu hết đều hỗ trợ cài Maven vào kho lưu trữ của Linux. Trên Ubuntu, bạn có thể sử dụng lệnh sau trên dòng lệnh để cài đặt nó.
sudo apt-get install mvn # if that does not work, try sudo apt-get install maven
Đến đây bạn đã hoàn tất cài đặt cài đặt maven.
Kiểm tra cấu hình
Tạo project maven
Bạn hãy thực hiện bên dưới để tạo 1 dự án mẫu theo đề xuất của maven.
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Sau khi thực hiện lệnh trên.1 dự án maven sẽ có cấu trúc như bên dưới.
my-app |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java
Trong việc build app bằng maven, file quan trọng cần tìm hiểu là file pom.xml
. Nó là file configuration duy nhất chứa toàn bộ thông tin cần thiết để build dự án . Nội dung file POM sẽ rất lớn tùy vào độ phức tạp của dự án, nhưng không cần thiết phải hiểu tất cả. Chúng ta cần focus vào các đểm chính cần nắm với vai trò DevOps hay người dựng CICD cho hệ thống.
Nội dung file sẽ tương tự như sau:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.0-SNAPSHOT</version> <name>my-app</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </pluginManagement> </build> </project>
Build dự án vừa tạo
Đứng trong thư mục vừa tạo, bạn thực hiện lệnh bên dưới.
mvn package
Nếu bạn thấy xuất ra thông tin như bên dưới, là quá trình build thành công
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:03 min [INFO] Finished at: 2022-05-17T20:16:14+07:00 [INFO] ------------------------------------------------------------------------
Kiểm tra package JAR đã build thành công hay ko bằng lệnh sau
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
Bạn sẽ thấy Hello World!
được xuất ra console nếu build thành công.