在一家公司里开发,很多项目中使用的jar包80%都是重复的,如果每个项目都要把pom.xml文件的这些依赖包复制过来,或是后期出现统一的版本升级,那修改起来是很麻烦的。
这里可以使用maven的继承特性来消除重复依赖,可以把很多相同的配置提取出来。例如:grouptId,version等
注意:这类项目和原来项目的区别在于,打包方式是pom
com.kkb
father
1.0-SNAPSHOT
pom
可自定义GroupId,ArtifactId的值
有时我们会发现 IDEA 在每次新建项目时 maven home directory 总是会变回默认的Maven。我们可以修改Maven仓库全局配置解决。
参考地址:https://blog.csdn.net/LK_Lawliet/article/details/108444328
由于pom项目一般都是用来做父项目的,所以该项目的src文件夹可以删除掉。
在创建完父工程后,pom.xml文件中的 maven-project-info-reports-plugin 插件会飘红
原因:maven-project-info-reports-plugin 缺少依赖,我们可以在pom.xml中添加父依赖
解决如下:
创建方式有两种:
一种是创建新工程为子工程,在创建时设置父工程的GAV
一种是修改原有的工程为子工程,在子工程的pom.xml文件中手动添加父工程的GAV
选择要创建的子项目类型(默认为Java类型)
此时只需要添加子项目名称即可,然后一直下一步
在开发中依赖的jar包众多,对应的版本也是很杂乱,那有没有一种方式可以统一管理这么jar包的版本值呢?当然 是有的,Maven使用dependencyManagement来管理依赖的版本号。
注意:此处只是定义依赖jar包的版本号,并不实际依赖。如果子工程中需要依赖jar包还需要添加dependency节点。
< dependencies > 中的jar直接加到项目中,管理的是依赖关系(如果有父pom,子pom,则子pom中只能被动接受父类的版本);
< dependencyManagement > 主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.kkbgroupId>
<artifactId>demo2artifactId>
<version>1.0-SNAPSHOTversion>
dependency>
dependencies>
dependencyManagement>
<parent>
<groupId>com.kkbgroupId>
<artifactId>fatherartifactId>
<version>1.0-SNAPSHOTversion>
parent>
<dependencies>
<dependency>
<groupId>com.kkbgroupId>
<artifactId>demo2artifactId>
dependency>
dependencies>
当父工程中定义的jar包越来越多,找起来越来越麻烦,所以可以把版本号提取成一个属性集中管理。
<properties>
<log4j.version>1.2.9log4j.version>
properties>
注意:这里的log4j.version的值是自定义的,但命名时不要使用中文或特殊字符等,标签对中间写版本值
使用:${log4j.version}读取该变量值,代码如下
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>${log4j.version}version>
<scope>testscope>
dependency>
dependencies>
子工程的jar包版本不受影响