使用maven构建java应用
Maven 是一个流行的构建工具,用于 Java 项目的管理和自动化构建。它简化了项目的构建过程,包括编译、测试、打包、部署等工作。Maven 通过一种标准化的方式来描述项目结构和依赖关系,使得项目管理更加高效、可重复和可维护。
Maven 主要功能
-
依赖管理:Maven 可以自动下载和管理 Java 项目所依赖的外部库(JAR 文件),并确保版本的一致性。你只需要在
pom.xml
文件中声明依赖,Maven 会从中央仓库或自定义仓库中下载需要的依赖。 -
构建自动化:Maven 提供了一种统一的构建生命周期,自动执行如编译、测试、打包、部署等常见操作。你只需运行
mvn clean install
这样的命令,Maven 会按步骤执行。 -
插件机制:Maven 提供了多种插件来完成不同的任务,例如:编译、测试、部署等。通过插件,Maven 可以轻松扩展功能,满足项目的各种需求。
-
项目结构标准化:Maven 提供了一种推荐的项目结构,使得项目的结构更具一致性。通过这种结构,团队成员可以更容易地理解和维护项目。
-
构建多模块项目:Maven 可以处理复杂的多模块项目,允许你在一个主
pom.xml
文件中管理多个子模块。 -
生命周期管理:Maven 提供了一些默认的构建生命周期,例如
clean
、validate
、compile
、test
、package
、install
、deploy
等。这些生命周期定义了项目构建的各个阶段。
Maven 的核心概念
-
POM(Project Object Model):这是 Maven 项目的核心配置文件,通常是
pom.xml
。它描述了项目的基本信息、依赖、插件和构建配置等。 -
依赖(Dependency):指项目需要的外部库,通常是 JAR 文件,Maven 会自动下载并管理这些依赖。
-
仓库(Repository):Maven 用来存储和共享构建产物的地方,常见的有 Maven Central 和私有仓库。
使用场景:
-
构建和打包:通过命令
mvn clean package
来编译源代码、运行单元测试、生成 JAR/WAR 包。 -
依赖管理:通过声明依赖项,Maven 会自动下载项目所需的第三方库。
-
持续集成(CI):Maven 可以与 CI 工具(如 Jenkins)集成,自动执行构建、测试、部署等工作。
Maven 常见命令
-
mvn clean
:清理项目(删除编译生成的文件) -
mvn compile
:编译项目 -
mvn test
:运行测试 -
mvn package
:打包项目(生成 JAR/WAR) -
mvn install
:将构建的包安装到本地仓库。安装后的包位于/root/.m2/repository 目录下 -
mvn deploy
:将构建的包部署到远程仓库
mvn install
执行mvn install ,会执行以下步骤:
1. clean - 清理项目
2. validate - 验证配置
3. compile - 编译代码
4. test - 运行测试
5. package - 打包项目
6. verify - 验证构建
7. install - 将构建产物安装到本地仓库
mvn package
执行mvn package ,会执行以下步骤
执行 mvn package 时,会按顺序执行以下阶段:
1. validate - 验证项目配置
2. compile - 编译代码
3. test - 运行测试
4. package - 打包项目
mvn package 不会执行 verify 和 install 阶段。因此,它会生成构建产物(如 JAR 文件),但不会将其安装到本地 Maven 仓库。
所以,如果只是构建jar包的话,使用mvn package 就够了, 或者 mvn clean package -DskipTests , -DskipTests 表示跳过测试
配置maven仓库
配置文件:/usr/local/apache-maven-3.6.2/conf/settings.xml
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
总结
Maven 是一个功能强大的构建工具,特别适用于 Java 项目的构建、依赖管理和多模块管理。它通过标准化项目结构和自动化的依赖下载,让 Java 开发变得更加高效和简洁。
注意
如果只是打包而不需要将包安装到本地 Maven 仓库,最合适的命令是:
这个命令的含义如下:
-
clean
:清理target
目录,确保从干净的环境开始构建。 -
package
:编译源代码、运行测试并打包成 JAR 或 WAR 文件。 -
-DskipTests
:跳过单元测试(如果不想执行测试)。可以省略这个选项,如果需要执行测试的话。
为什么不用 mvn install
?
-
mvn install
会将打包生成的文件安装到本地 Maven 仓库(通常是~/.m2/repository
),而如果只需要打包,不需要安装到本地仓库,那么直接使用mvn package
会更高效。
所以,如果目标只是生成 JAR 或 WAR 文件,并且不需要安装到本地仓库,mvn clean package
是最合适的命令。