边角料记录
1.maven中的bom
BOM全称是Bill Of Materials,译作材料清单。它实际上就是一个普通的pom文件,只是这个pom中罗列了工程的依赖以及对应的版本,当其他主工程引用这个pom时,可以直接使用其中定义的版本,springboot就是通过这种方式,使得用户无需主动考虑spring framework对应的版本。
一般可以通过两种方式引入BOM,一种是使用<parent>标签继承于父类BOM,但是继承仅支持继承一个父类;另一种方式是通过<dependencyManagement><dependencies>引入BOM。
引入BOM之后,再引入其他依赖,在<dependencies><dependency>中只需要编写依赖的<groupId><artifactId>不需要指定版本。
<packaging>pom<packaging>设置之后则这个就是BOM,BOM的引入在External Libries库中是获取不到。
冲突处理:优先顺序
- 当前工程显示指定版本
parent中指定版本- 在当前工程中通过
dependencyManagement引入的BOM清单中的版本,当引入的多个BOM时,先引入的BOM生效 - 依赖调解:最短路径生效。比如存在两条对
D的依赖A->B->C-D1.0和A->E->D1.1,这里最终会引用到D1.1。
2.maven常用命令
mvn clean: 清除目标目录中的生成结果mvn package: 依据项目生成 jar 文件(打包)mvn install: 在本地 Repository 中安装 jarmvn -Dmaven.test.skip=true: 忽略测试文档编译mvn clean compile:清理编译mvn clean test:清理测试mvn clean package:清理打包mvn clean package -Dmaven.test.skip=true:清理打包生成jar包mvn clean install:清理将打包好的jar存入 本地仓库 注意是本地仓库mvn -e:显示详细错误mvn -U:强制更新snapshot类型的插件或依赖库mvn -pl: module_name在指定模块上执行命令mvn -ff: 在递归执行命令过程中,一旦发生错误就直接退出mvn -Dxxx=yyy: 指定java全局属性mvn -Pxxx:引用profile xxxmvn -f pom.xml:指定pom文件,一般在多模块工程中,指定启动类对应模块的pom.xml
3.指定类路径
classpath和classpath*的区别:
classpath:只会在当前工程/应用的类路径下匹配这个指定的类路径。
classpath*:不仅会在当前的工程/应用的类路径下匹配,也会到引用的jar包的类路径下匹配。
比如:
现在有一个应用,在当前应用中resources路径下有个mapper/UserMapper.xml文件,在引入的xiaocainiao-common包中的resources中也有一个mapper/PersonMapper.xml文件。
1 | ├── src |
这时如果使用classpath:mapper/*.xml,那么只会加载到UserMapper.xml。
如果使用classpath*:mapper/*.xml那么UserMapper.xml和PersonMapper.xml都会被加载到。
4.推送本地jar包到远程仓库
推送指定的jar包到本地仓库或者远程仓库。
通过mvn install:install-file将指定jar打入本地仓库。
1 | mvn install:install-file -Dfile=/path/to/jar/file -DgroupId=com.example -DartifactId=my-jar -Dversion=1.0 -Dpackaging=jar |
-Dfile:选项指定JAR文件的路径,-DgroupId、-DartifactId和-Dversion选项指定JAR文件的Maven坐标-Dpackaging:选项指定JAR文件的类型。
通过mvn deploy:deploy-file将指定jar推送远程仓库。
1 | mvn deploy:deploy-file -Dfile=/path/to/jar/file -DgroupId=com.example -DartifactId=my-jar -Dversion=1.0 -Dpackaging=jar -Durl=http://myrepo.com/nexus/content/repositories/releases/ -DrepositoryId=my-repo |
-Durl:选项指定远程仓库的地址,-DrepositoryId:选项指定远程仓库的ID,这些信息需要和pom.xml文件中的配置相匹配。-Dusername:远程仓库账号-Dpassword:远程仓库密码