引言
在Java开发领域,构建工具是项目中至关重要的一环。Maven(Maven Apache)是一个强大的构建工具,用于管理项目的构建、依赖和文档等方面。本篇博文将介绍如何配置和使用Maven来构建和管理Java项目。
第一部分:Maven基础概念
1.1 什么是Maven?
Maven是一个基于项目对象模型(Project Object Model, POM)的项目管理工具。它提供了一种标准的方式来构建和管理项目,包括项目的编译、测试、打包、发布等操作。
自动化构建工具还有:Ant, Gradle。
第二部分:Maven 的核心概念
2.1 Maven 工程约定目录结构
java-maven
|---src 源代码
|---|---main 主程序
|---|---|---java 主程序的 java 源码
|---|---|---resources 主程序的配置文件
|---|---test 测试程序
|---|---|---java 测试程序的 java 源码
|---|---|---resources 测试程序的配置文件
|---pom.xml Maven工程的核心配置文件。
名称 | 基本信息 |
---|---|
modelVersion | Maven 模型的版本,对于 Maven2 和 Maven3 来说,它只能是 4.0.0 |
groupId | 组织 id,一般是公司域名的倒写。 |
artifactId | 项目名称,也是模块名称,对应 groupId 中 项目中的子项目。 |
version | 项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带-SNAPSHOT |
packaging | 项目打包的类型,可以使 jar、war、rar、ear、pom,默认是 jar |
dependency | 管理 jar 包 |
properties | 定 义 配 置 属 性设置为UTF-8,防止中文乱码 |
build | build 表示与构建相关的配置,例如设置编译插件的 jdk 版本 |
parent | 声明要继承的父工程的 pom 配置 |
modules | 使用 modules 聚合的其它模块 |
2.2 仓库
1、Maven 的插件,插件也是一些 jar,这些 jar 可以完成一定的功能。
2、我们自己开发项目的模块
3、第三方框架或工具的 jar 包
本地仓库
:本机当前电脑上的资源存储位置,为本机上所有 Maven工程提供服务
远程仓库
:不在本机上, 通过网络才能使用。多电脑共享使用的
①:中央仓库:通过Internet访问,为全世界所有 Maven工程服务。 最权威的。
②:中央仓库的镜像:架设在不同位置,欧洲,美洲,亚洲等每个洲都有若干的服务器,为中央仓库分担流量。减轻中央仓库
的访问,下载的压力。所在洲的用户首先访问的是本洲的镜像服务器。
③:私服:在局域网环境中部署的服务器,为当前局域网范围内的所有 Maven工程服务。公司中常常使用这种方式。
资源搜索地址
:https://mvnrepository.com/
maven-search
:插件搜索
第三部分:Maven的常用命令
3.1 mvn clean
清理项目,删除target目录。
mvn clean
3.2 mvn compile
编译项目源代码。
mvn compile
3.3 mvn test
运行项目的测试单元。
mvn test
3.4 mvn package
将项目打包,生成JAR或WAR文件。
mvn package
3.5 mvn install
将项目打包并安装到本地仓库,以供其他项目引用。
mvn install
3.6 mvn deploy
部署主程序
mvn deploy
第四部分:插件
maven 过程构建周期,由 maven 的插件 plugin 来执行完成。
官网插件说明:http://maven.apache.org/plugins/
第五部分:依赖管理
5.1 依赖的范围
依赖的范围:compile
、test
、provided
,默认采用 compile
第六部分:Maven 常用设置
6.1 全局变量
在 Maven 的 pom.xml 文件中,用于定义全局变量,POM 中通过${property_name}的形式引用变量的值。
定义全局变量:
<properties>
<mysql.version>8.0.28</mysql.version>
</properties>
6.2 引用全局变量:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
6.3 Maven 系统采用的变量:
<properties>
<maven.compiler.source>1.8</maven.compiler.source> 源码编译 jdk 版本
<maven.compiler.target>1.8</maven.compiler.target> 运行代码的 jdk 版本
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目构建使用的编码,避免中文乱
码
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 生成报告的编码
</properties>
6.4 指定资源位置
src/main/java 和 src/test/java 这两个目录中的所有*.java 文件会分别在 comile 和 test-comiple 阶段被编译,编译结果分别放到了 target/classes 和 targe/test-classes 目录中,但是这两个目录中的其他文件都会被忽略掉,如果需要把 src 目录下的文件包放到 target/classes 目录,作为输出的 jar 一部分。需要指定资源文件位置。以下内容放到< buid>标签中。
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
第七部分:使用Maven构建Java项目
7.1 创建Maven项目
使用以下命令在命令行中创建一个新的Maven项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
7.2 构建和运行项目
在项目目录下运行以下命令来构建和运行项目:
mvn clean package
java -jar target/my-project-1.0-SNAPSHOT.jar
结语
Maven作为Java项目的构建工具,具有强大的功能和丰富的生态系统。通过本篇博文,你应该对Maven的基本概念、常用命令以及配置文件有了更深入的了解。使用Maven可以帮助你更轻松地管理项目的构建和依赖,提高开发效率。希望本篇博文能够帮助你更好地使用Maven构建和管理Java项目。