Maven 使用总结

本文详细介绍了 Maven 的使用,包括运行命令、构建生命周期的各个阶段、插件目标及其区别,以及依赖管理和仓库使用。重点讨论了 Maven 的默认生命周期,如 validate、compile、install 等阶段,还解释了依赖的传递性、依赖范围和排除机制。此外,还涵盖了 Maven 的配置,如 POM 文件和 settings.xml 文件的作用,以及如何配置镜像仓库和代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用

1.1.运行

语法:

mvn [options] [<goal(s)>] [<phase(s)]

1.2.令人迷惑的 mvn 命令

mvn compile
mvn compiler:compile
mvn install
mvn install:install
mvn install:install-file

上面的这些命令看起来有点像。mvn compilemvn compiler:compile的作用也相同。但是这 2 个命令有区别。

参考 mvn 命令的语法 。mvn compile 中的 compile 指的 Maven 的 default生命周期中的 compile 阶段。对应语法中的[phase(s)]。而 mvn compiler:comile 是 Maven maven-compiler-plugin插件的一个 goal,对应语法中的 [goal(s)]

Maven 的阶段实质上还是有插件的 goal来构成的,使用 mvn compile命令是如何就找到 maven-compiler-plugin这个插件来执行,这块实现原理现在还不太清楚

什么时候用 mvn compiler:comile 这种格式呢?

比如我们需要设置 compile 插件的一些参数的时候,可以使用 mvn compiler:comile 这种格式,后面跟 -Dencoding=UTF-8(通过使用 -D+参数名=值)这种格式来指定具体参数。

怎么知道 compile 插件的某个 goal 有哪些参数呢?

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin -Ddetail
mvn help:describe -Dplugin=groupId:artifactId:version -Ddetail
mvn help:describe -Dplugin=插件prefix -Ddetail

help:describe 本身也是 maven-help-plugin 的一个 goal

使用以上命令可以打印某个插件的具体信息。Maven 提供的插件的 groupId 一般都是 org.apache.maven.plugins,artifactId 一般是 maven-****-plugin格式。

1.3.可能常用的命令

  • install 到本地仓库: Maven 在 maven-install-plugin插件中提供了 install-file 的目标。

    • install Jar 包(非 pom 包)到本地仓库

      mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
      
    • install pom 文件到本地仓库

      mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>
      
    • maven 2.5 之后 install jar 包可以更简单。如果这个 jar 包是通过 Maven 构建的,jar 包中有 META-INF/ 目录且里面有这个 jar 包的 pom 文件,那么可以使用如下命令:

      mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=<path-to-file>
      
  • 描述某个插件的具体信息: 使用 Maven 的 maven-help-plugin 插件的 help:describe goal

    mvn help:describe -Dplugin=groupId:artifactId:version -Ddetail
    

内置的生命周期及其阶段按顺序是:

  • clean: pre-clean,clean,post-clean
  • default: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify,install, deploy
  • site: pre-site, site, post-site, site-deploy

只需创建软件包并将其安装在本地存储库中,以便在其他项目中重用,只需要使用:

mvn install

如果不是在项目中或是其他情况,可能希望调用由 Maven 的一部分实现的特定任务——这被称为插件的目标:

mvn archetype:generate
mvn checkstyle:check

1.4.构建的生命周期

1.4.1.基础

Maven基于构建生命周期这一核心概念。这意味着,构建和分发特定 artifact (project) 的过程是明确定义的。

有3个内建的生命周期: default , clean 和 site。default 生命周期处理项目的部署,clean生命周期处理项目的清理,site生命周期用于将项目构建成网站。

1.4.2.构建的生命周期由阶段(Phases)组成

default 生命周期的一些阶段说明:

  • validate: 验证项目是否正确以及所有必要信息是否可用
  • compile: 编译项目源码
  • test: 使用合适的单元测试框架测试已编译的源代码。这些测试不应要求打包或部署代码
  • package: 获取编译后的代码,并将其打包为其可分发格式,如JAR。
  • integration-test: 集成测试
  • verify: 对集成测试结果进行检查,以确保符合质量标准。
  • install: 将包放到本地仓库。
  • deploy: 构建完成,将包放到远程仓库。

这些周期将按照顺序执行,以完成 default生命周期。

1.4.3.构建的阶段由插件的目标组成

然而,即使构建阶段负责构建生命周期中的特定步骤,但执行这些职责的方式也可能有所不同。这是通过声明绑定到这些构建阶段的插件目标来实现的。

一个插件目标代表一个具体的任务(比构建阶段更精细),它有助于项目的构建和管理。一个目标可以被绑定到零个或多个构建阶段。一个没有绑定到任何构建阶段的目标可以在构建生命周期之外通过直接调用来执行。执行的顺序取决于目标和构建阶段被调用的顺序。例如下面的示例,cleanpackage参数是构建阶段,dependency:copy-dependencies 是一个插件的目标。

mvn clean dependency:copy-dependencies package

执行上面命令后,先是 clean 阶段(包括 clean 之前的阶段)会先执行,然后执行 dependency:copy-dependencies目标,最后执行 package阶段(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值