Maven学习总结(3)maven项目的结构和mvn命令以及核心概念

本文介绍Maven项目的常见结构及常用命令,详解依赖管理包括依赖范围、传递与冲突解决,以及Maven生命周期中的重要阶段。

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

maven的项目规约,也就是maven项目的通常结构

 mvn常用的命令

mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=cn.sm1234
-DartifactId=hellojava -DarchetypeArtifactId=maven-archetype-quickstart
-Dversion=0.0.1-snapshot

注意: 先进入项目目录后再操作!
 

根据你的ide配置好maven,然后就可以进行开发了,配置maven,所有的ide大同小异,都是需要主目录,setting文件的位置,仓库的位置,这里就不详细写了,网上的这方面资料很多。

 

maven的仓库

 

坐标: 依赖在仓库中的位置,在仓库中找到依赖的标识。

 

 依赖管理(重点)

 依赖的范围,类的作用域。

 

 

 

 依赖传递:当一个项目依赖另一个项目的时候,同时会将另一个项目所依赖的类导入类库。


假设 A 依赖于 B, B 依赖于 C, 我们说 A 对于 B 是第一直接依赖, B 对 C 是第二
直接依赖, A 对于 C 是传递性依赖。 第一直接依赖的范围和第二直接依赖的范围
决定了传递性依赖的范围。

在依赖节点 dependency 中的<optional>可以控制当前的依赖是否向下传递;
默认值为 false, 表示向下传递。
 

在 pom 中的依赖节点中, 如果引入的依赖包含了很多其它的传递依赖, 而且
项目需要的这些依赖的版本和传递依赖的不相符; 那么可以在依赖节点中设置排
除依赖节点: <exclusions> 然后再添加 <exclusion>, 其里面的内容包括:
   ①所包含坐标
   ②排除依赖包中所包含的依赖关系
【注意】 不需要添加版本, 直接类别排除

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-spring-plugin</artifactId>
  <version>2.3.24.1</version>
  <exclusions>
      <!-- 排除 spring-core 的传递依赖 -->
      <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
      </exclusion>
  </exclusions>
</dependency


 

 依赖冲突

 如果依赖的路径不相同的时候, 以最短的路径为准。

如果直接依赖中包含有同一个坐标不同版本的资源依赖, 以POM.xml配置顺序下方的
版本为准
如果间接依赖中包含有同一个坐标不同版本的资源依赖, 以POM.xml配置顺序上方的
版本为准

 

 

default 生命周期
 default 生命周期是 Maven 生命周期中最重要的一个, 绝大
部分工作都发生在这个生命周期中。 比较重要和常用的阶段如下:
validate
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 接受编译好的代码, 打包成可发布的格式, 如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify 运行任何检查, 验证包是否有效且达到质量标准。
install 将包安装至本地仓库, 以让其它项目依赖。
deploy 将最终的包复制到远程的仓库, 以让其它开发人员与项目共享。
运行任何一个阶段的时候, 它前面的所有阶段都会被运行, 这也就是为什么运行
mvn install 的时候, 代码会被编译, 测试, 打包。 此外, Maven 的插件机制是完
全依赖 Maven 的生命周期的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值