springboot通过父工程进行包版本管理
1 父工程pom文件的修改
1 父工程的pom文件
最后build中的配置maven的版本,从而设置编译的版本。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--第一步-->
<groupId>com.sucre</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot</name>
<description>Demo project for Spring Boot</description>
<!--第二步-->
<!--打包方式改为pom-->
<packaging>pom</packaging>
<!--父工程的父包注意控制版本号-->
<parent>
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-parent</artifactId>-->
<!--<version>2.4.5</version>-->
<!--<relativePath/> <!– lookup parent from repository –>-->
</parent>
<!--第三步-->
<!--每创建一个子模块时就要手动添加子模块的模块名-->
<!--就是artifactId <artifactId>user</artifactId> -->
<modules>
<module>user</module>
</modules>
<!--第五步-->
<!--添加的jar包的版本号-->
<properties>
<spring-boot.version>2.2.1.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
<mysql-version>5.1.47</mysql-version>
</properties>
<!--第四步-->
<!--手动导入的spring-boot-dependencies依赖需要添加scope和type两个属性,
其它就不用了。
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
2 主要注意事项
1.如果使用mave创建子项目时,mavenx项目会自动把子工程归为父工程管理,即第三步可以跳过。
2.手动导入springboot
包和springcloud
包时一定要添加scope
和 type
这两个属性,否则子工程不识别父工程的springboot 的版本,其它就不用了。
都和一下一样就行
<type>pom</type>
<scope>import</scope>
3.父工程是不会下载jar包的,如果我们的maven本地仓库中没有jar包时,父工程的版本号会报红。
解决方案1
我们把依赖拷贝到子工程中的pom文件中去下载就行。
解决方案2
暂时添加以下这两个属性,不报红后删除。
<type>pom</type>
<scope>import</scope>
2 子工程的pom文件的修改
1 子工程的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--第一步-->
<!--手动添加父工程依赖-->
<parent>
<groupId>com.sucre</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!--这里不动-->
<groupId>com.sucre</groupId>
<artifactId>user</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>user</name>
<description>Demo project for Spring Boot</description>
<!--第二步-->
<!--添加jar包但是不添加版本-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2 注意事项
1.在父工程目录下创建springboot子工程后,先在子工程中引入父工程,然后再去父工程处手动注册子工程。
2.如果创建maven子工程那么就不需要做1了。
3 父工程控制总版本号,父工程下的子工程来控制其下属子工程的版本号。
1 在公共子资源总的操作
按平常创建一个继承与于父包的maven文件,打包方式为jar包。
从它父工程中中引入子工程所需的jar包,带版本号,下载完jar包后删除。
<!--引入父包-->
<parent>
<artifactId>parent2010</artifactId>
<groupId>com.wy</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>bus</artifactId>
<!--打包方式为jar包-->
<packaging>jar</packaging>
2 在公共子资源总的操作
在父包中加入依赖就行
<dependency>
<groupId>com.wy</groupId>
<artifactId>bus</artifactId>
<version>${wy.version}</version>
</dependency>
3 在公共子资源总的操作
只引入公共资源包就行,先带版本号复制,下载完jar包后就删除。
<dependencies>
<dependency>
<groupId>com.wy</groupId>
<artifactId>bus</artifactId>
</dependency>
</dependencies>