Maven的一些概念

Maven的一些概念

从官网下载Maven,在IDE中配置maven,配置settings和repository,正常情况下联网会下载jar到本地仓库中,这样项目就可以导入本地仓库的jar的依赖。

maven中的打包方式有三种:

方式说明
pom方式父项目的打包方式,用于管理整个项目统一的jar版本,被子项目继承jar依赖
jar方式jar方式:整个项目公用的模块,例如common、core命名,被其他子项目引用
war方式常规的web项目打包方式

在IDEA中,如果使用jar、pom打包,创建项目的时候需要选择maven,并且选择对应的maven-quickstart
如果使用war打包,创建项目的时候可以选择spring initializr,并且选择对应的web模块

在pom文件中声明在dependencyManagement中的dependency表示不强制子项目必须引用的jar依赖,子类可以引用,也可以不引用,一般的dependency,子项目会默认继承父项目的所有依赖。

scope常用值分析:

说明
compile默认的scope。任何定义在compile scope下的依赖将会在所有的class paths下可用。maven工程会将其打包到最终的artifact中。如果你构建一个WAR类型的artifact,那么在compile scope下引用的JAR文件将会被集成到WAR文件内。
provided这个scope假定对应的依赖会由运行这个应用的JDK或者容器来提供。最好的例子就是servlet API。任何在provided scope下定义的依赖在构建时的类路径里是可用的,但是不会被打包到最终的artifact中。如果是一个WAR的文件,servlet API在构建时的类路径里是可用的,但是并不会被打包到WAR文件中。
runtime在runtime scope下定义的依赖只会在运行期可用,而在构建期的类路径下不可用。这些依赖将会被打包到最终的artifact中。比如你有一个基于web的应用需要在运行时访问MySQL数据库。你的代码没有任何MySQL数据库驱动的硬依赖。你的代码仅仅是基于JDBC API来编写,在构建期并不需要MySQL数据库驱动。然而,在运行期,就需要相应的驱动来操作MySQL数据库了。因此,这个驱动应该被打包到最终的artifact中。
test只用于测试变异的依赖(比如JUnit),execution必须定义在test scope下。这些依赖不会被打包到最终的artifact中。
system和provided scope很像。唯一的区别在于,在system scope中,你需要告诉Maven如何去找到这个依赖。如果你要引用的依赖在Maven仓库中不存在时,就可以用这个scope。不推荐使用system依赖。
import从其它的pom文件中导入依赖设置。,实现maven的多继承
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值