Maven

1. Maven là gì?
- Maven là chương trình quản lý dự án được phát triển bởi Apache, nó thực hiện các công việc một cách tự động và nhanh chóng:
+ Khởi tạo project
+ Biên dịch
+ Đóng gói
+ Chạy test,...
- Maven đặc biệt hữu dụng với các dự án tầm trung và lớn.
- Mỗi dự án được mô tả trong một file có định dạng XML có tên "pom.xml". File này sẽ chứa một số thông tin như:
+ Tên dự án
+ Thư mục tài nguyên
+ Các libraries sử dụng.
+ ...
- Phần chia 1 project lớn thành các module nhỏ, làm việc đồng thời trên các module khác nhau nhưng vẫn đảm bảo được tính thống nhất
- Không phục thuộc IDE, cho phép chuyển đổi từ Eclipse sang Netbeans,... một cách dễ dàng
- Khi bắt đầu biên dịch, trình Maven sẽ đọc file này và tự động tải các libraries cần thiết từ reposiories của nó thông qua mạng hoặc nơi người dùng định nghĩa.
2. Cài đặt Maven trên Windows
- Download maven mới nhất từ: http://maven.apache.org/
- Cài đặt biến môi trường


- Kiểm tra: Dùng command line: mvn --version
a. Tạo dự án cơ bản bằng command line

D:\MAVEN>mvn archetype:generate -DgroupId=org.java.demo.simple -DartifactId=simp
le -Dpackage=org.java.demo -Dversion=1.0-SNAPSHOT

- Sau gõ enter maven sẽ tải những file cần thiết từ server máy bạn phải kết nối với mạng khi sử dụng maven
- Nếu xuất hiện dòng yêu cầu nhập số, gõ Enter để lấy số mặc định (archetype tạo ra nhiều template dự án ở đây ta sẽ tạo ra một dự án java căn bản mặc định)
- Tiếp tục chọn number đại diện cho version ứng dụng
- Gõ enter để confirm lại thông tin
- Nếu màn hình dos báo build success bạn đã tạo ra dự án maven thành công:

- Maven đã tạo ra thư mục và file ở vị trí chạy dòng lệnh dos, đây là cấu trúc thư mục vừa tạo ra:



1 Maven Archetype plugin đã tạo một thư mục simple phù hợp với tham số artifactId. Đây gọi là thư mục gốc của project.

2 Mọi project maven đều phải có mô hình đối tượng dự án (Project Object Model – POM) thể hiện trong một file là pom.xml.  File này mô tả dự án, cấu hình plugin và khai báo sự phụ thuộc của dự án.

3 Source code và tài nguyên của dự án (chẳng hạn như ảnh) được đặt trong thư mục src/main. Trong tình huống đơn giản này chỉ bao gồm một vài lớp java. Trong các dự án có thể bao gồm gốc của một dự án web. Trong dự án java các lớp java nằm trong thư mục src/main/java và tài nguyên nằm trong thư mục src/main/resources

4 Test case của dự án nằm trong thư mục src/test/. Dưới thư mục các lớp java chẳng hạn JUnit hoặc TestNG được đặt trong thư mục src/test/java và tài nguyên nằm trong src/test/resources

Đây là file Java tạo ra:



Như vậy archetype đã tạo một dự án đơn giản nhất: in ra dòng Hello World ra thiết bị xuất chuẩn.
b. Build dự án vừa tạo ra

- Trên command line, gõ cd simple để di chuyển vào thư mục gốc của dự án sau đó gõ mvn install (sau khi gõ lệnh này maven sẽ sinh ta thư mục target chứa những file được build)

D:\MAVEN\simple>mvn install

- Như vậy bạn đã vừa tạo biên dịch, kiểm tra đóng gói và cài đặt dự án Maven đơn giản nhất. Để chứng tỏ chương trình vừa tạo ra làm việc được chạy từ dòng lệnh:

D:\MAVEN\simple>java -cp target/simple-1.0-SNAPSHOT.jar org.java.demo.App


Hello World!

c. Kiểm tra file pom vừa tạo ra


File pom chứa tất cả các thông tin về dự án. Hiểu file pom là điều quan trọng đối với người mới tiếp cận maven.

Chúng ta sẽ xem từng phần tử trong file pom để giúp bạn làm quen với cơ bản về POM:

- project Đây là phần tử trên cùng trong tất cả các file pom.xml
- modelVersion Phần tử này chỉ ra phiên bản của mô hình đối tượng mà file POM sử dụng. Phiên bản của bản thân mô hình đối tượng rất ít thay đổi nhưng nó là bắt buộc  để đảm bảo tính ổn định khi các nhà phát triển Maven nghĩ rằng nó cần thiết để thay đổi mô hình.
- groupId : Phần tử này chỉ ra định danh duy nhất của nhóm hoặc tổ chức tạo ra dự án. groupId là một trong định danh chính của một dự án được đặt tên dựa theo domain đầy đủ của tổ chức của bạn. Ví dụ ở đây: org.java.demo.simple
- artifactId: Phần tử này tên gốc của artifact chính được tạo ra bởi dự án. Artifact chính cho một dự án chính điển hình là một file Jar. Một artifact điển hình được tạo ra bởi Maven sẽ có hình thức <artifactId>-<version>.<extension> (ví dụ simple-1.0-SNAPSHOT.jar trong tình huống dự án này).  (Định nghĩa về artifact: trong thuật ngữ phần mềm nói chung, một ‘artifact’ là một thứ gì đó được tạo ra bởi quá trình phát triển phần mềm, cho dù là một tài liệu liên quan đến phần mềm hoặc một file thực thi. Trong thuật ngữ của Maven, artifact là kết quả của quá trình build trong maven, nói chung là một fie jar, hay war trong dự án web hoặc một file thực thi khác. Một artifact trong maven được xác định bởi một hệ tọa độ gồm groupId, artifactId và version. Maven sử dụng groupId, artifactId và version để xác định sự phụ thuộc (thường là các file jar khác ) cần để build và chạy code của bạn.)
- package: Phần tử này chỉ kiểu đóng gói được sử dụng bởi artifact này (ví dụ JAR, WAR, EAR vân vân)
- version: Phần tử này chỉ ra phiên bản của artifact được tạo ra bởi dự án. Bạn sẽ thường xuyên nhìn thấy chữ SNAPSHOT trong phiên bản, chỉ ra rằng dự án đang ở trong giai đoạn phát triển.
- name: Phần tử này chỉ ra tên của dự án. Điều này được sử dụng trong tài liệu được tạo ra bởi maven.
- url:Phần tử này chỉ ra trang của dự án có thể được tìm thấy. Điều này được sử dụng trong tài liệu được tạo ra bởi maven.
- description: Phần tử này cung cấp phần mô tả ngắn gọn về dự án. Điều này được sử dụng trong tài liệu được tạo ra bởi maven.

d. Command line: Include libraries vào maven local

D:\MAVEN\simple>mvn install:install-file -Dfile=c:\simple-1.0.0.Final.jar -Dgrou
pId=com.google.code -DartifactId=simpledemo -Dversion=1.0.0.Final -Dpackaging=jar

Bổ sung vào file pom.xml như sau:

<dependency>
      <groupId>com.google.code</groupId>
      <artifactId>simpledemo</artifactId>
      <version>1.0.0.Final</version>
 </dependency>

3.  Cài đặt Maven trên Eclipse.
- Trên eclipse vào Help->Install New Software. Và add link sau để tích hợp Maven vào eclipse
- Cấu hình Repostitory chứa libraries
+ Tạo folder: D:\MAVEN\Repostitory
+ Cấu hình lại file setting: D:\MAVEN\apache-maven-3.2.1\conf\settings.xml

- Từ eclipse link đến file settings
- Như vậy đã hoàn thành tích hợp và cấu hình lưu trữ libraries
a. Tạo dự án bằng eclipse
- Tạo maven project

- Chọn simple project

- Nhập vào thông tin dự án
- Cuối cùng click Finish để hoàn tất quá trình tạo project

b. Build dự án vừa tạo
- Chọn Run => Maven Install

- Build thành công sẽ như sau:
- Thiết lập build ứng dụng như sau:

- Như vậy đã cấu hình xong build dự án với eclipse.
4. File Pom.xml mẫu đóng gói dự án với Wrapper

<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>org.java.demo.simple</groupId>
<artifactId>simple</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>simple</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.jsw.folder>${basedir}/target/jsw/simple</project.jsw.folder>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.3</version>
<configuration>
<repositoryLayout>flat</repositoryLayout>
<configurationDirectory>etc</configurationDirectory>
<configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
<copyConfigurationDirectory>true</copyConfigurationDirectory>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<target>${project.build.directory}</target>
<daemons>
<daemon>
<id>simple</id>
<mainClass>simple.Main</mainClass>
<commandLineArguments>
<commandLineArgument>start</commandLineArgument>
</commandLineArguments>
<platforms>
<platform>jsw</platform>
</platforms>
<generatorConfigurations>
<generatorConfiguration>
<generator>jsw</generator>
<includes>
<include>linux-x86-32</include>
<include>linux-x86-64</include>
<include>windows-x86-32</include>
</includes>
<configuration>
<property>
<name>configuration.directory.in.classpath.first</name>
<value>etc</value>
</property>
<property>
<name>set.default.REPO_DIR</name>
<value>lib</value>
</property>
<property>
<name>wrapper.logfile</name>
<value>logs/wrapper.log</value>
</property>
</configuration>
</generatorConfiguration>
</generatorConfigurations>
<jvmSettings>
<initialMemorySize>256M</initialMemorySize>
<maxMemorySize>1024M</maxMemorySize>
<systemProperties>
<systemProperty>java.security.policy=conf/policy.all</systemProperty>
<systemProperty>com.sun.management.jmxremote</systemProperty>
<systemProperty>com.sun.management.jmxremote.port=8999</systemProperty>
<systemProperty>com.sun.management.jmxremote.authenticate=false</systemProperty>
<systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty>
</systemProperties>
<extraArguments>
<extraArgument>-server</extraArgument>
</extraArguments>
</jvmSettings>
</daemon>
</daemons>
</configuration>
<executions>
<execution>
<id>generate-jsw-scripts</id>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
</execution>
</executions>
</plugin>

<!-- resource plugin -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.jsw.folder}/etc</outputDirectory>
<resources>
<resource>
<directory>${basedir}/etc</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<enableRulesSummary>false</enableRulesSummary>
</configuration>
</plugin>
</plugins>
</build>

<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</reporting>
</project>

5. Giám sát ứng dụng với JMX
- Download VisualVM 1.3.7 tại: http://visualvm.java.net/
- Kết nối ứng dụng:

5. Tạo reposiories server























Không có nhận xét nào:

Đăng nhận xét