maven高级
关于分模块化,只需要分几个模块但目录都是相同的com.hm.demo
但需要把分模块依赖注入进总模块,直接模块名有提示
打包方式不设置默认为jar,创建父工程,设置打包方式为pom
jar:普通模块打包,springboot项目基本都是jar包 (内嵌tomcat运行)
war :普通web程序打包,需要部署在外部的tomcat服务器中运行
pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
java当中类与类之间只能单继承,不能多继承。maven当中也是支持多重继承也是只能继承一个父工程
parent工程继承spring-boot-stater-parent依赖
该父工程设置为pom打包
<groupId>com.itheima</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
配置父工程
<parent>
<groupId>com.itheima</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../tlias-parent/pom.xml</relativePath>
</parent>
若父子工程都配置了同一个依赖的不同版本,以子工程的为准
比如都配置了Lombok
在maven中,可以在父工程的pom文件中通过
父工程
<dependencyManagement>
<dependencies>
<!--JWT令牌-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version0.9.13/version>
</dependency>
</dependencies>
</dependencyManagement>
子工程
子工程引入依赖时,无需指定
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
</dependencies>
properties自定义版本
<properties>
<lombok.version>1.18.24<lombok.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
maven聚合
因为在父工程打包的时候会打包失败,因为子模块并未在本地仓库,需要install到本地仓库。所以就用到了
聚合
将多个模块组织成一个整体,同时进行项目的构建
既是继承当中的父工程,也是聚合当中的聚合工程。
如果需要安装下面的子模块到本地仓库,直接在聚合工程上instal安装操作,下面所有的子模块都会安装到本地仓库
<--聚台-->
<modules>
<module>../tlias-pojo</module><module>../tlias-utils</module>
<module>../tlias-web-management</module>
</modules>
聚合用于快速构建项目
继承用于简化依赖配置、统一管理依赖
maven私服
不同项目组-进行资源共享
比如一个工具类utils打包成jar包安装到本地仓库,调用极其方便。而团队使用就需要利用私服
jar包上传到私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。
依赖查找顺序:
本地仓库
私服
中央仓库
三个仓库,还一个centre中心仓库
RELEASE(发行版本): 功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。
1.设置私服的访问用户名/密码 (settings.xml中的servers中配置)
<server>
<id>maven-releasers</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
一个是release(停更)的私服仓库一个是snapshot(处于开发)的私服仓库
<distributionManagement>
<repository>
<id>maven-releases</id>
<ur1>http://192.168.150.101:8081/repository/maven-releases/</ur1>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://192.168.15.101:8081/repository/maven-snapshots/</url</snapshotRepository>
</distributionManagement>
设置setting中的mirrors和profile
关于mirrors如果之前配置过阿里云,需要直接替换掉
<mirror>
<id>maven-public</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.150.101:8081/repository/maven-public/</url>
</mirror>
<profile>
<id>allow-snapshots</id>
<activation>
<activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>maven-public</id>
<url>http://192.168.150.101:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
直接聚合工程中配置
release的仓库地址标签名
要注意,id要与配置的mirrors的id一致
<distributionManagement>
<1--release版本的发布地址 -->
<repository>
<id>maven-releases</id>
<url>http://192.168.150.101:8081/repository/maven-releases /</url>
</repository>
<1--snapshot版本的发布地址 -->
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://192.168.150.101:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>