一个pom文件中出现了两个相同的依赖_Maven学习(3)-依赖管理-POM文件中依赖的版本管理...

pom.xml中依赖的定义样例:

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.1

但是,实际使用中,会发现pom.xml中很多依赖是没有指定的,如:

org.springframework.boot

spring-boot-starter-data-jdbc

org.springframework.boot

spring-boot-starter-web

为什么呢?这就涉及到Maven中依赖的版本管理。

实际项目开发中,一个项目包含很多模块,不同模块有不同的依赖,也有多个模块存在共同的依赖。如:

20200203192312662798.png

希望一个项目中,不同模块使用的同一依赖采用相同的版本。可以:

(1)方式一:在每个模块的pom.xml文件中指定依赖版本,人为确保不同模块的pom.xml中相同依赖版本号一致。这样会导致维护复杂,后续如果变更依赖版本,需要每个模块排查修改。

(2)方式二:把所有的模块的依赖,都在根目录的pom.xml定义,然后被所有子模块引用。这样会导致子模块引用冗余,对于子模块不需要的依赖,也会被引用过来。

(3)方式三:maven提供了更好的方式,即maven依赖的版本管理:

整个项目,在根pom.xml中通过标签定义依赖的版本:

org.eclipse.persistence

org.eclipse.persistence.jpa

1.3

javax

javaee-api

2.1.1

根目录的pom.xml作为每个模块pom.xml的父pom(通过在pom.xml文件中用指定),在模块的pom.xml仅指定依赖,不指定版本即可:

org.eclipse.persistence

org.eclipse.persistence.jpa

javax

javaee-api

实际上,maven在解析子模块的pom.xml文件中依赖时,采用的就是父pom中标签定义的版本。

和的区别:

(1)用于定义依赖版本,并不是真实的依赖,所以maven在解析pom.xml文件时并不会把内的内容作为真实依赖来做查找更新动作。

(2)是真实的依赖,maven在解析pom.xml时,需要进行查找更新。

通过IDEA等创建的项目,项目根pom.xml中也存在没有版本号的依赖,其版本号如何确定呢?

原因是:Maven为所有项目提供了公共的父pom,在项目的根pom.xml文件中通过引用。项目根pom.xml中也存在没有版本号的依赖,集成的是Maven父pom中通过依赖版本管理定义的版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven插件是一种可插拔的工具,可以在Maven构建过程执行特定的任务。其,maven-dependency-plugin和maven-surefire-plugin是两个常用的插件。 maven-dependency-plugin插件可以用来管理项目依赖,可以帮助我们列出项目依赖关系,复制依赖文件到指定目录,解压依赖文件等。常用的配置包括: - list:列出项目依赖 - copy-dependencies:将所有依赖文件复制到指定目录 - unpack:解压指定的依赖文件 maven-surefire-plugin插件则是用来执行项目的单元测试的。它可以在Maven构建过程自动执行单元测试,并生成测试报告。常用的配置包括: - includes/excludes:指定要执行的测试类或排除的测试类 - parallel:指定测试是否并行执行 - reportsDirectory:指定测试报告生成的目录 在POM文件配置这两个插件,可以通过以下方式: ``` <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <includes> <include>**/*Test.java</include> </includes> <parallel>methods</parallel> <threadCount>10</threadCount> <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> </configuration> </plugin> </plugins> </build> ``` 以上是一个简单的POM文件Maven插件配置maven-dependency-plugin和maven-surefire-plugin的示例,其maven-dependency-plugin在package阶段执行复制依赖文件的任务,maven-surefire-plugin在test阶段执行单元测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值