GP Coder

Trang chia sẻ kiến thức lập trình Java

  • Java Core
    • Basic Java
    • OOP
    • Exception Handling
    • Multi-Thread
    • Java I/O
    • Networking
    • Reflection
    • Collection
    • Java 8
  • Design pattern
    • Creational Pattern
    • Structuaral Pattern
    • Behavior Pattern
  • Web Service
    • SOAP
    • REST
  • JPA
  • Java library
    • Report
    • Json
    • Unit Test
  • Message Queue
    • ActiveMQ
    • RabbitMQ
  • All
Trang chủ IDE, Tools Hướng dẫn sử dụng Apache Maven với Eclipse

Hướng dẫn sử dụng Apache Maven với Eclipse

Đăng vào 07/12/2017 . Được đăng bởi GP Coder . 23937 Lượt xem . Toàn màn hình

Tư duy khi phân tích và thiết kế một ứng dụng phần mềm đó là có thể tách một hệ thống lớn thành các thành phần nhỏ. Với tư duy như vậy ta có thể nôm na định nghĩa rằng một ứng dụng phần mềm sẽ là sự tổng hợp của các thành phần (component) lại với nhau. Các thành phần ở đây thường được thể hiện ra là các thư viện cung cấp cho người lập trình viên các công cụ để việc lập trình trở nên dễ dàng hơn. Một ứng dụng có thể phụ thuộc (dependency) vào nhiều thành phần mà bản thân mỗi thành phần đó lại phụ thuộc vào các thành phần khác. Việc quản lý sự phụ thuộc giữa các thành phần này thực sự là không dễ dàng và nó sẽ trở nên phức tạp hơn khi mà ứng dụng càng ngày càng lớn ra. Để có thể giải quyết vấn đề này, Apache Maven được ra đời.

Apache maven là một chương trình quản lý dự án cho phép các developers có thể quản lý về version, các dependencies (các component, thư viện sử dụng trong dự án) , quản lý build, tự động download javadoc & source, ….

Bài viết này sẽ giới thiệu về Apache Maven và các đặc điểm cơ bản đặc trưng của nó.

Nội dung

  • 1 Cài đặt Apache Maven
  • 2 Tạo project Maven
  • 3 Cấu hình Maven
  • 4 Đóng gói Project
  • 5 Nguyên tắc hoạt động của Maven
  • 6 Cấu hình Maven download source và javadoc
  • 7 Quản lý các phụ thuộc trong Maven

Cài đặt Apache Maven

Apache maven hiện nay đã được tích hợp sẵn vào trong Eclipse. Tuy nhiên, một số phiên bản cũ hơn có thể không có hoặc bạn cần cài đặt phiên bản Maven mới hơn để sử dụng.

Kiểm tra xem Eclipse đã được cài đặt Maven chưa

Trước hết kiểm tra xem Eclipse của bạn đã cài đặt Maven chưa.

Nếu có Maven Wizard điều đó có nghĩa là Eclipse của bạn đã cài Maven Plugin, và bạn có thể sẵn sàng làm việc. Nếu chưa có, hãy xem tiếp phần cài đặt.

Cài đặt Maven vào Eclipse

Có 2 cách để cài đặt Maven trên Eclipse:

  • Cách 1: Cài đặt Maven như là một plugin nhúng vào Eclipse. Cách này tương tự như cài đặt các plugin khác của Eclipse.
  • Cách 2: Cài đặt Maven độc lập trên Windows và khai báo để Eclipse có thể sử dụng nó.

Trong bài này tôi sẽ hương dẫn các bạn Cách 2 – cài đặt Maven độc lập trên Windows.

Bước 1: Download Maven

Vào trang chủ của Maven và vào mục Download, sau đó download file .zip như sau:

Bước 2: Giải nén file Maven

Bài viết này sẽ hướng dẫn cách cài đặt Maven trên Window, sau khi down file .zip về, sau đó giải nén ra như thư mục bất kỳ. Chẳng hạn giải nén vào:

  • D:\WorkSpace\gpcoder\apache-maven-3.5.2

Bước 3: Cài đặt biến môi trường

Bước tiếp theo, bạn khai báo biến môi trường cho Maven. Các hình ảnh dưới đây, tôi thực hiện trên Window 10, với các hệ điều hành Window khác cũng tương tự.

Lưu ý: Để maven hoạt động bạn cần phải cài đặt JDK trước. Đối với phiên bản Maven 3.3+ yêu cầu phải cài đặt JDK 1.7 trở lên.

Trên Desktop, nhấn phải chuột vào Computer, chọn Properties à Chọn tab Advance –> Evironment Varialbes –> Ở mục System Variable chọn New

Nhập vào đường dẫn tới thư mục Maven:

  • Variable name: M2_HOME
  • Variable value: D:\WorkSpace\gpcoder\apache-maven-3.5.2

Tiếp theo sửa đổi biến môi trường path:

Thêm giá trị: %JAVA_HOME%\bin

Kiểm tra lại biến môi trường cài đặt: Start -> Run -> cmd -> nhập mvn -version

Khai báo vị trí cài đặt Maven với Eclipse

Mở thư mục Maven đã cấu hình ở trên: D:\WorkSpace\gpcoder\apache-maven-3.5.2\conf

Mở file settings.xml để thay đổi vị trí chứa các file thư viện được maven download về:

<localRepository>C:\Users\ptgia\.m2\repository</localRepository>

Mở Eclipse -> Window -> Reference -> Maven -> Installations 

Nhấn Add thêm vào một cấu hình mới và trỏ đến vị trí cài đặt Maven.

Check chọn Maven vừa thêm -> nhấn nút Apply and close

Tiếp theo khai báo vị trí file cấu hình của Maven: file settings.xml đã thay đổi ở trên.

Đến đây việc cài đặt Maven cho Eclipse hoàn thành.

Tạo project Maven

Mở Eclipse -> File -> New -> Maven Project

Trong dialog hiện ra, lựa chọn “Create a simple project …” như trong hình. Chọn Next:

Nhập các giá trị như bên dưới:

Trong đó :

  • Group Id : Tên tổ chức / công ty / cá nhân của dự án. Ví dụ: com.gpcoder
  • Artifact Id : Tên dự án (project). Lưu ý: tên viết liền, không có khoảng trắng ở giữa.
  • Version : phiên của dự án.
  • Package : để ý 2 giá trị : jar có nghĩa là thư viện or java application, war là web application.
  • Name : Tên project (trong Eclipse)

Nhấn Finish, project đã được tạo như sau:

Cấu hình Maven

File pom.xml là nơi khai báo tất cả những gì liên quan đến dự án được cấu hình qua maven, như khai báo các dependency, version của dự án, tên dự án, repossitory …. Mở file pom.xml ra, chúng ta thấy nội dung như sau:


<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.ptg</groupId>
	<artifactId>MavenExmaple1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Maven Exmaple 1</name>
</project>

Bây giờ chúng ta sẽ thử add 1 thư viện vào dự án. Ví dụ chúng ta sẽ add thư viện Apache Poi, đây là thư viện của Java dùng để hỗ trợ xuất dữ liệu ra file Excel. Thêm thẻ khai báo vào file pom.xml như sau:


<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.ptg</groupId>
	<artifactId>MavenExmaple1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Maven Exmaple 1</name>

	<!-- Các thư viện được khai báo bên trong cặp thẻ dependencies -->
	<dependencies>

                <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.17</version>
		</dependency>

	</dependencies>

</project>

Thư viện khai báo dependency như ở trên các bạn có thể tìm ở http://mvnrepository.com.

Lưu file pom lại và đợi project build xong, thư viện sẽ được add tự động vào project : ở mục Maven Dependencies.

Maven sẽ tự động download các thư viện cần thiết khác (nếu có) cho chúng ta. Trong ví dụ trên, tôi chỉ khai báo thư viện Apache Poi, nhưng thư viện này có sử dụng các thư viện khác nên nó cũng sẽ download cho chúng ta. Hãy thử tưởng tượng nếu không có Maven, chúng ta sẽ phải Add bằng tay rất nhiều thư viện và phải lựa chọn version phù hợp với nó. Khi cần nâng cấp thư viện cũng sẽ rất khó khăn do phải cập nhật tất cả các phiên bản của các thư viện có liên quan.

Mặc định, các thư viện download về sẽ nằm ở thư mục C:\Users\{username}\.m2\repository. Các bạn cũng có thể kiểm tra lại thư mục lưu trữ trong phần cấu hình Maven của Eclipse: Eclipse -> Window -> Reference -> Maven -> User Settings

Đóng gói Project

Tạo chương trình Java

Tạo file GpUtils.java như sau:

Biên dịch và đóng gói Project của bằng Maven

Nhấn chuột phải lên Project -> Run As -> Maven install -> chờ Maven biên dịch và đóng gói xong -> Refresh lại project để xem kết quả:

Một số lệnh maven cơ bản

Right click vào Project, chọn Run As -> Maven Build… Trong phần Goal, điền các command, mỗi command cách nhau một khoảng trắng, sau đó click Run để chạy maven.

Một số lệnh maven cơ bản:

  • clean : clean lần build trước đó.
  • compile : tiến hành compile, dịch các file java sang class, copy các file resources, lib…
  • package : package project thành jar or war.
  • install : đưa 1 thư viện lên repository (ở đây là local), để các project khác có thể sử dụng ( chỉ sử dụng với các project jar).

Nguyên tắc hoạt động của Maven

Hình minh họa ở trên chỉ ra cách hoạt động của Maven.

  • Khi khai báo pom.xml rằng project của bạn phụ thuộc vào thư viện common-lang3 phiên bản 3.3.2.
  • Ngay sau khi bạn Save file pom.xml Maven sẽ kiểm tra xem thư viện này đã có tại kho chứa địa phương (Local Repository) trên máy tính của bạn chưa. Nếu chưa có nó sẽ download về từ kho chứa (Repository) thư viện từ trên Internet xuống.
  • Cuối cùng là Maven sẽ tự động khai báo ClassPath cho Project tới vị trí file jar được download về.

Như vậy mọi bạn chỉ cần khai báo thư viện muốn sử dụng tại pom.xml. Việc quản lý thư viện đã do Maven lo liệu.

Cấu hình Maven download source và javadoc

Thông thường Maven chỉ download các file binary về máy (Local Repository). Để Maven download cả source và javadoc cấu hình như sau: Windows -> Preferences

Quản lý các phụ thuộc trong Maven

Các thư viện phụ thuộc nhau thế nào trong Maven?

Hãy xem ví dụ dưới đây:


<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.ptg</groupId>
	<artifactId>MavenExmaple1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Maven Exmaple 1</name>

	<!-- Các thư viện được khai báo bên trong cặp thẻ dependencies -->
	<dependencies>

		<!-- https://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl -->
		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>javax.servlet.jsp.jstl</artifactId>
			<version>1.2.4</version>
		</dependency>

	</dependencies>

</project>

File pom.xml trên đã khai báo sử dụng thư viện javax.servlet.jsp.jstl, thư viện này phụ thuộc vào jstl-api. Và jstl-api lại phụ thuộc vào 2 thư viện servlet-api và jsp-api. Sự phụ thuộc này được mô tả trên trang thư viện Maven như sau:

Trên Eclipse bạn có thể nhìn thấy cây minh họa sự phụ thuộc như sau:

Loại bỏ sự trùng lặp thư viện

Khi khai báo thư viện trên Maven, có thể gây ra sự trùng lặp thư viện. Xem ví dụ dưới đây:


<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.ptg</groupId>
	<artifactId>MavenExmaple1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Maven Exmaple 1</name>

	<!-- Các thư viện được khai báo bên trong cặp thẻ dependencies -->
	<dependencies>

		<!-- https://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl -->
		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>javax.servlet.jsp.jstl</artifactId>
			<version>1.2.4</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.0</version>
			<scope>provided</scope>
		</dependency>

	</dependencies>

</project>

File pom.xml trên đã khai báo sử dụng:

  • Thư viện javax.servlet.jsp.jstl phụ thuộc vào jstl-api. Và jstl-api lại phụ thuộc vào 2 thư viện servlet-api và jsp-api.
  • Thư viện javax.servlet không phụ thuộc bất kỳ thư viện nào khác.

Trên Eclipse bạn có thể nhìn thấy cây minh họa sự phụ thuộc như sau:

Như bạn thấy: Eclipse đã đánh dấu 2 thư viện servlet-api trùng lặp. Để loại bỏ trùng lặp, Nhấn phải chuột vào thư viện phụ thuộc cần loại trừ, chọn Exclude Maven Artifact… -> OK.

Nhấn Save để lưu lại. Bây giờ file pom.xml của bạn không còn sự trùng lặp thư viện:

Eclipse sẽ tự động thêm đoạn code <exclusions> vào pom.xml:


<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.ptg</groupId>
	<artifactId>MavenExmaple1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Maven Exmaple 1</name>

	<!-- Các thư viện được khai báo bên trong cặp thẻ dependencies -->
	<dependencies>

		<!-- https://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl -->
		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>javax.servlet.jsp.jstl</artifactId>
			<version>1.2.4</version>
			<exclusions>
				<exclusion>
					<groupId>javax.servlet</groupId>
					<artifactId>servlet-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.0</version>
			<scope>provided</scope>
		</dependency>

	</dependencies>

</project>

Trên đây là những giới thiệu cơ bản về Maven. Ngoài ra, Maven còn rất nhiều tính năng khác, các bạn có thể tham khảo chi tiết trên trang maven.apche.org.

Tài liệu tham khảo:

  • https://maven.apache.org/
  • http://o7planning.org/vi/10131/huong-dan-su-dung-maven-cho-nguoi-moi-bat-dau
  • http://www.mkyong.com/tutorials/maven-tutorials/
4.8
06
Nếu bạn thấy hay thì hãy chia sẻ bài viết cho mọi người nhé! Và Donate tác giả

Shares

Chuyên mục: IDE, Tools Được gắn thẻ: Maven

Kết hợp Java Reflection và Java Annotations
Xây dựng dự án nhiều Module với Maven

Có thể bạn muốn xem:

  • Hướng dẫn sử dụng JAutodoc để sinh comment trong Eclipse (22/10/2017)
  • Cài đặt môi trường phát triển Java (18/10/2017)
  • Hướng dẫn sử dụng plugin EclEmma trong Eclipse (22/10/2017)
  • Hướng dẫn sử dụng plugin FindBugs trong Eclipse (22/10/2017)
  • Hướng dẫn debug code trong eclipse (16/03/2018)

Bình luận

bình luận

Tìm kiếm

Bài viết mới

  • Clean code 13/01/2024
  • Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud 02/10/2020
  • Kết nối RabbitMQ sử dụng Web STOMP Plugin 19/06/2020
  • Sử dụng publisher confirm trong RabbitMQ 16/06/2020
  • Sử dụng Dead Letter Exchange trong RabbitMQ 13/06/2020

Xem nhiều

  • Hướng dẫn Java Design Pattern – Factory Method (98062 lượt xem)
  • Hướng dẫn Java Design Pattern – Singleton (97702 lượt xem)
  • Giới thiệu Design Patterns (87772 lượt xem)
  • Lập trình đa luồng trong Java (Java Multi-threading) (86443 lượt xem)
  • Giới thiệu về Stream API trong Java 8 (83840 lượt xem)

Nội dung bài viết

  • 1 Cài đặt Apache Maven
  • 2 Tạo project Maven
  • 3 Cấu hình Maven
  • 4 Đóng gói Project
  • 5 Nguyên tắc hoạt động của Maven
  • 6 Cấu hình Maven download source và javadoc
  • 7 Quản lý các phụ thuộc trong Maven

Lưu trữ

Thẻ đánh dấu

Annotation Authentication Basic Java Behavior Pattern Collection Creational Design Pattern Cấu trúc điều khiển Database Dependency Injection Design pattern Eclipse Exception Executor Service Google Guice Gson Hibernate How to Interceptor IO Jackson Java 8 Java Core JDBC JDK Jersey JMS JPA json JUnit JWT Message Queue Mockito Multithreading OOP PowerMockito RabbitMQ Reflection Report REST SOAP Structuaral Pattern Swagger Thread Pool Unit Test Webservice

Liên kết

  • Clean Code
  • JavaTpoint
  • Refactoring Guru
  • Source Making
  • TutorialsPoint
  • W3Schools Online Web Tutorials

Giới thiệu

GP Coder là trang web cá nhân, được thành lập với mục đích lưu trữ, chia sẽ kiến thức đã học và làm việc của tôi. Các bài viết trên trang này chủ yếu về ngôn ngữ Java và các công nghệ có liên quan đến Java như: Spring, JSF, Web Services, Unit Test, Hibernate, SQL, ...
Hi vọng góp được chút ít công sức cho sự phát triển cộng đồng Coder Việt.

Donate tác giả

Tìm kiếm các bài viết của GP Coder với Google Search

Liên hệ

Các bạn có thể liên hệ với tôi thông qua:
  • Trang liên hệ
  • Linkedin: gpcoder
  • Email: contact@gpcoder.com
  • Skype: ptgiang56it

Follow me

Copyright 2025 © GP Coder · All Rights Reserved · Giới thiệu · Chính sách · Điều khoản · Liên hệ ·

Share

Blogger
Delicious
Digg
Email
Facebook
Facebook messenger
Flipboard
Google
Hacker News
Line
LinkedIn
Mastodon
Mix
Odnoklassniki
PDF
Pinterest
Pocket
Print
Reddit
Renren
Short link
SMS
Skype
Telegram
Tumblr
Twitter
VKontakte
wechat
Weibo
WhatsApp
X
Xing
Yahoo! Mail

Copy short link

Copy link