0%

边角料记录

边角料记录

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>设置之后则这个就是BOMBOM的引入在External Libries库中是获取不到。

冲突处理:优先顺序

  • 当前工程显示指定版本
  • parent中指定版本
  • 在当前工程中通过dependencyManagement引入的BOM清单中的版本,当引入的多个BOM时,先引入的BOM生效
  • 依赖调解:最短路径生效。比如存在两条对D的依赖A->B->C-D1.0A->E->D1.1,这里最终会引用到D1.1

2.maven常用命令

  • mvn clean: 清除目标目录中的生成结果
  • mvn package: 依据项目生成 jar 文件(打包)
  • mvn install: 在本地 Repository 中安装 jar
  • mvn -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 xxx
  • mvn -f pom.xml:指定pom文件,一般在多模块工程中,指定启动类对应模块的pom.xml

maven插件整理

3.指定类路径

classpathclasspath*的区别:

classpath:只会在当前工程/应用的类路径下匹配这个指定的类路径。

classpath*:不仅会在当前的工程/应用的类路径下匹配,也会到引用的jar包的类路径下匹配。

比如:

现在有一个应用,在当前应用中resources路径下有个mapper/UserMapper.xml文件,在引入的xiaocainiao-common包中的resources中也有一个mapper/PersonMapper.xml文件。

1
2
3
4
5
6
7
8
9
10
11
12
├── src
│ └── main
│ └── cn.com.xiaocainiaoya
│ │ ├── Application.java
│ ├── resources
│ ├── mapper
│ ├── UserMapper.xml
├── lib
│ ├── xiaocainiao-common
│ ├── resources
│ ├── mapper
│ ├── PersonMapper.xml

这时如果使用classpath:mapper/*.xml,那么只会加载到UserMapper.xml

如果使用classpath*:mapper/*.xml那么UserMapper.xmlPersonMapper.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:远程仓库密码
-------------本文结束感谢您的阅读-------------