在使用idea中,想要创建子父聚合的多模块项目两种方式(引入了spring-cloud-dependencies):
第一种:
1、
2、
3、加入 spring-cloud-dependencies 版本控制:
4、整理文件:
————》
5、整理父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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.demo</groupId> <artifactId>demo-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <!--父项目必须更改为 pom--> <description>父工程</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!-- 跳过测试 不对测试类进行打包 --> <skipTests>true</skipTests> <spring-cloud.version>Hoxton.SR6</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <!--配置此项防止打包完启动的jar后启动出现 没有主启动属性 问题--> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
6、把父项目注册到本地maven仓库,以方便子模块引用:
7、创建子模块:
8、手动创建application.yml和启动类,pom文件中加入spring-boot-starter-web,一切正常即可启动:
9、完成,可见父pom中多了 modules 节点,里面都是旗下子模块:
10、如需引入spring-cloud旗下的子框架,直接在本地子模块中加入依赖即可(无需写版本号):
第二种:
1、
2、整理文件:
3、整理父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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>cloud-demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>demo-common</module> <module>demo-user-web</module> </modules> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!-- 跳过测试 不对测试类进行打包 --> <skipTests>true</skipTests> <spring-boot.versiong>2.2.2.RELEASE</spring-boot.versiong> <spring-cloud.version>Hoxton.SR6</spring-cloud.version> <cloud-alibaba.version>2.0.1.RELEASE</cloud-alibaba.version> </properties> <dependencyManagement> <dependencies> <!--spring boot版本控制依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.versiong}</version> <type>pom</type> <scope>import</scope> </dependency> <!--Spring Cloud 版本控制依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <!--Spring Cloud Alibaba 版本控制依赖--> <!-- <dependency>--> <!-- <groupId>com.alibaba.cloud</groupId>--> <!-- <artifactId>spring-cloud-alibaba-dependencies</artifactId>--> <!-- <version>${cloud-alibaba.version}</version>--> <!-- <type>pom</type>--> <!-- <scope>import</scope>--> <!-- </dependency>--> </dependencies> </dependencyManagement> </project>
8、手动创建application.yml和启动类,pom文件中加入spring-boot-starter-web,一切正常即可启动:
9、完成,可见父pom中多了 modules 节点,里面都是旗下子模块:
10、如需引入spring-cloud旗下的子框架,直接在本地子模块中加入依赖即可(无需写版本号):
两种方式的区别在于:
第一种父项目的<parent /> 节点 引用了:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
第二种父项目中的<dependencyManagement /> 加入了:
<!--spring boot版本控制依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.versiong}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
小问题解决:
一、某个子模块没有被加入到父项目中,或想要在父项目中添加某个子模块的两种方式:
例如:
1、直接在父项目的<modules /> 节点中加入该模块的 即可:
刷新之后即可看到该项目名变成黑体。
2、通过maven窗口引入该项目依赖: