You are on page 1of 18

MAVEN

CÔNG TY CỔ PHẦN CÔNG NGHỆ CAO VÀ


DỊCH VỤ PHẦN MỀM FACENET
1 KIẾN TRÚC VÀ CÁC MODULE CHÍNH

2 DEMO

3 THẢO LUẬN
01

Maven
MAVEN

Maven là tool quản lý project

• Builds
• Documentation
• Reporting
• Dependencies
• SCMs
• Releases
• Distribution

Project Maven tổ chức theo best practices


MAVEN

Đơn giản hóa quá trình build

Cung cấp hệ thống build đồng nhất (uniform)

Cung cấp thông tin về project

• Change log tạo trực tiếp từ source control


• Cross referenced sources
• Dependencies
• Unit test reports
• Mailing list

Định hướng project theo best practices


development
02

Cách cài đặt


MAVEN – CÁCH CÀI ĐẶT Cách 1: Tạo project

• Tải Maven từ
https://maven.apache.org/download.cgi
• Tạo project bằng Command Line
• mvn -B archetype:generate
• -DgroupId=com.mycompany.app
• -DartifactId=my-app
• -DarchetypeArtifactId=maven-
archetype-quickstart
• -DarchetypeVersion=1.4

Cách 2: Tạo project bằng


Intellij IDEA
• Tạo New project
• Chọn Maven
03

Cách sử dụng
Maven cơ bản
MAVEN – LIFECYCLE
Phase: giai đoạn của Maven build
lifecycle
• Khi phase thực hiện thì toàn bộ các phase trên
nó sẽ được thực hiện theo
• validate: kiểm tra project
• test: chạy unit test
• package: đóng gói code đã biên dịch (JAR)
• verify: kiểm tra kết quả kiểm thử tích hợp
• install: cài đặt package lên local repository
• deploy: copy package từ local lên remote
repository

Goal:mỗi phase sẽ gồm nhiều goals,


mỗi goal sẽ làm việc riêng biệt
• Compiler:compile: compile goal từ compiler
plugin bao gồm trong compile phase
• Compiler:testCompile: test phase
• Surefire:test: test phase
• Install:install: install phase
• jar:jar: package phase
MAVEN – POM

POM: Project Object Model là file XML chứa


thông tin và config Maven dùng để build project

Tổi thiểu file POM cần có:

• project: root
• modelVersion: nên để 4.0.0
• groupId: tên tổ chức
• artifactId: tên project(aritfact)
• version: phiên bản
•Version thường đi kèm từ SNAPSHOT có nghĩa là phiên bản
mới nhất trên development branch
MAVEN – POM - PROPERTIES

<properties>
<project.build.sourceEncoding>UTF- Thẻ properties chứa giá trị để sử dụng
8</project.build.sourceEncoding> trong file POM hoặc làm giá trị cho plugins
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<log4jVersion>2.18.0</log4j.version> Có 5 styles chính
</properties>
•env.X: các giá trị trong enviroment variable
<dependencies> •project.x: các giá trị của thẻ con project
<dependency> •settings.x: các giá trị trong file settings.xml (file cấu hình
<groupId>org.apache.logging.log4j</groupId> toàn cục global)
<artifactId>log4j-core</artifactId> •java: các giá trị trong java VD: ${java.home}
<version>${log4jVersion}</version> •x: các giá trị có thể dùng
</dependency>
</dependencies>
MAVEN – POM - PLUGIN
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

Có 2 loại plugin là build plugin và reporting plugin

Thẻ execution sẽ chỉ định plugin thực hiện khi


nào
• VD: sửa plugin mặc định của Maven compiler
• Phase sửa thành validate
• Goal sẽ chạy là compile và testCompile
• Khi chạy validate, goal compile và testCompile sẽ được thực thi

Mỗi plugin sẽ thẻ configuration dùng để chuyền


paramater cho plugin
MAVEN – POM - DEPENDENCIES
Maven quản lý thư viện qua thẻ
dependencies
•Mỗi thẻ dependency cần xác định tối thiểu 3 thẻ
•groupId
<dependencies> •artifactId
<dependency> •Version
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId> Maven sẽ tìm trong local repository trước
<version>${log4j.version}</version> nếu không thấy sẽ tìm trên Maven Central
<exclusions> •Maven tìm theo groupId.artifactId.version
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId> Thẻ scope
</exclusion>
</exclusions> •compile: giá trị mặc định, Maven sẽ thêm thư viện vào
classpath
<scope>compile</scope> •provided: thư viện sẽ được cung cấp bới JDK hoặc
</dependency> container khi chạy (runtime)
</dependencies> •runtime: thư viện chỉ cần lúc chạy khi compile thì không
cần
•test: thư viện chỉ sử dụng khi chạy test
•system: xác định vị trí của thư viện qua thẻ systemPath
(deprecated)
MAVEN – POM – LOCAL DEPENDENCY Xác định thẻ systemPath
(deprecated)

Sử dụng local repository

• Install vào local repository


• mvn install:install-file
<dependencies>
<dependency>
<groupId>org.facenet</groupId>
<artifactId>faceplus</artifactId> • -Dfile=<path-to-file>
<version>${minaVersion}</version>
</dependency>
</dependencies>
• -DgroupId=<group-id>
• -DartifactId=<artifact-id>
• -Dversion=<version>
• -Dpackaging=<packaging>
• -DgeneratePom=true
• Thêm vào dependency như
bình thường
Maven hỗ trợ cơ chế thừa kế và
tổng hợp (Aggregation)
MAVEN – MULTI MODULES
Pom cha: <packaging>pom</packaging> Tác dụng:

• Giảm việc trùng thư viện


• Build nhiều module một lúc

Cách tạo

• Sửa packaging trong file pom.xml ngoài cùng


thành “pom”
• Phải chuột vào project chọn new/module
• Thêm module vào thẻ modules (tự làm bới
IDE)
<modules> • Ở module con thì cần thêm parent (tự làm bởi
Pom cha: <module>backend</module> IDE)
</modules>
File pom ngoài cùng là file cha
<parent>
<artifactId>maven</artifactId> • Toàn bộ file pom con sẽ kế thừa tất cả các thẻ
Pom ngoại trừ:
<groupId>com.facenet</groupId>
con: <version>1.0-SNAPSHOT</version> • artifactId
</parent> • name
• prerequisites
MAVEN – MULTI MODULES

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.18.0</version>
</dependency> Thẻ dependencyManagement
</dependencies> đặt ở file pom cha
</dependencyManagement>
• Khi dependency được xác định ở
File pom.xml cha
dependencyManagement thì module
con sẽ không cần xác định lại version
của dependency
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
</dependencies>

File pom.xml con


MAVEN – POM - REPOSITORIES

Thẻ repositories quản lý các


repository
<repositories>
<repository> • id: id của repository
<id>local-lib</id>
• url: có thể là file:// hoặc https://
<url>file://${project.basedir}/lib</url>
</repository>
</repositories> Repository dùng chứa dependency
TRÂN TRỌNG
CẢM ƠN!

CÔNG TY CỔ PHẦN CÔNG NGHỆ CAO VÀ DỊCH VỤ PHẦN MỀM FACENET

Thông tin liên hệ:


Công ty cổ phần công nghệ cao và Dịch vụ phần mềm Facenet
Tầng 3, tòa nhà 227 Phạm Văn Đồng, Phường Xuân Đỉnh, Quận Bắc Từ Liêm, Thành phố Hà Nội.
Phone: (+84 8) 29189206 | Email: support@facenet.vn

You might also like