使用maven构建java应用

Maven 是一个流行的构建工具,用于 Java 项目的管理和自动化构建。它简化了项目的构建过程,包括编译、测试、打包、部署等工作。Maven 通过一种标准化的方式来描述项目结构和依赖关系,使得项目管理更加高效、可重复和可维护。

Maven 主要功能

  1. 依赖管理:Maven 可以自动下载和管理 Java 项目所依赖的外部库(JAR 文件),并确保版本的一致性。你只需要在 pom.xml 文件中声明依赖,Maven 会从中央仓库或自定义仓库中下载需要的依赖。

  2. 构建自动化:Maven 提供了一种统一的构建生命周期,自动执行如编译、测试、打包、部署等常见操作。你只需运行 mvn clean install 这样的命令,Maven 会按步骤执行。

  3. 插件机制:Maven 提供了多种插件来完成不同的任务,例如:编译、测试、部署等。通过插件,Maven 可以轻松扩展功能,满足项目的各种需求。

  4. 项目结构标准化:Maven 提供了一种推荐的项目结构,使得项目的结构更具一致性。通过这种结构,团队成员可以更容易地理解和维护项目。

  5. 构建多模块项目:Maven 可以处理复杂的多模块项目,允许你在一个主 pom.xml 文件中管理多个子模块。

  6. 生命周期管理:Maven 提供了一些默认的构建生命周期,例如 cleanvalidatecompiletestpackageinstalldeploy 等。这些生命周期定义了项目构建的各个阶段。

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 仓库,最合适的命令是:

mvn clean package -DskipTests

这个命令的含义如下:

  1. clean:清理 target 目录,确保从干净的环境开始构建。

  2. package:编译源代码、运行测试并打包成 JAR 或 WAR 文件。

  3. -DskipTests:跳过单元测试(如果不想执行测试)。可以省略这个选项,如果需要执行测试的话。

为什么不用 mvn install

  • mvn install 会将打包生成的文件安装到本地 Maven 仓库(通常是 ~/.m2/repository),而如果只需要打包,不需要安装到本地仓库,那么直接使用 mvn package 会更高效。

所以,如果目标只是生成 JAR 或 WAR 文件,并且不需要安装到本地仓库,mvn clean package 是最合适的命令。

posted @ 2025-05-06 17:34  羊脂玉净瓶  阅读(27)  评论(0)    收藏  举报