崛起于Springboot2.X+多模块整合+一个启动类+jar、war打包运行(60)

编程

《SpringBoot2.X心法总纲》

博客概要:Springboot多模块项目搭建 + 打包jar运行 + 打包war运行

1、创建父工程

     勾选SpringWeb和lombok

如图所示

然后删除src文件夹,如图:

然后修改pom文件,添加一行打包类型

<packaging>pom</packaging>

2、创建子模块

      创建3个子模块,分别为sun1、sun2、web,不勾选任何依赖。因为我们所用的依赖都在父工程的pom文件中。

      创建好三个模块之后,在父工程pom.xml添加依赖

<modules>

<module>sun1</module>

<module>sun2</module>

<module>web</module>

</modules>

      因为我们目前用的是Springboot多模块一个启动类,所以删除sun1和sun2的启动类,然后sun1存放实体类,因为需要使用lombok插件,所以sun1项目引入父工程pom.xml,在sun1的pom.xml中更换

<parent>

<groupId>com.osc</groupId>

<artifactId>father</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

然后打包加上

<packaging>jar</packaging>

因为继承父工程,所以下面的可以删掉

<properties>

<java.version>1.8</java.version>

</properties>

因为打包的话,除了有启动类的项目,其他的打包都要删掉,所以sun1的这个删掉

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

这个时候在sun1项目上创建entity层,这个时候就可以使用lombok插件了,因为继承了父工程

@Data

@AllArgsConstructor

@ToString

public class UserEntity {

private String name;

private int age;

private String address;

}

然后sun2我们把它定义为service层,所以需要使用sun1的实体类,,同样我们要继承父工程,然后依赖sun1

<parent>

<groupId>com.osc</groupId>

<artifactId>father</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

<dependency>

<groupId>com.osc</groupId>

<artifactId>sun1</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

然后删除父工程有的配置,最后编写service

@Service

public class HelloService {

public UserEntity getUser(){

return new UserEntity("jiutian",23,"beijing");

}

}

这个时候我们就是引用sun1的实体类

      最后我们创建web层,这个不需要删除启动类,然后都依赖sun1,sun2,把他们引入到pom.xml文件中。

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.2.1.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

更换,继承父工程

<parent>

<groupId>com.osc</groupId>

<artifactId>father</artifactId>

<version>0.0.1-SNAPSHOT</version>

</parent>

然后添加sun1,sun2依赖

<dependency>

<groupId>com.osc</groupId>

<artifactId>sun1</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

<dependency>

<groupId>com.osc</groupId>

<artifactId>sun2</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

最后在启动类上添加扫描,因为多个模块,web启动类运行的话默认只运行扫描自己这个模块,导致找不到其他模块,所以添加一个扫描。

@ComponentScan(basePackages = {"com.osc.sun2.service","com.osc.web.controller"})

然后web项目上创建一个controller层

@RestController

public class HelloController {

@Autowired

HelloService helloService;

@GetMapping(value = "/test")

public String test(){

return helloService.getUser().toString();

}

}

运行一下,测试结果:

3、jar打包

在 web项目pom.xml中更换为

<build>

<!--打包之后的名字-->

<finalName>demo_many</finalName>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<configuration>

<mainClass>com.osc.web.WebApplication</mainClass>

<layout>ZIP</layout>

</configuration>

<executions>

<execution>

<goals>

<goal>repackage</goal>

</goals>

<!-- &lt;!&ndash;可以生成不含依赖包的不可执行Jar包&ndash;&gt;

<configuration>

<classifier>exec</classifier>

</configuration>-->

</execution>

</executions>

</plugin>

</plugins>

</build>

然后父工程pom更换如下,一定要换啊!

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.1</version>

<configuration>

<source>${java.version}</source>

<target>${java.version}</target>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.19.1</version>

<configuration>

<skipTests>true</skipTests> <!--默认关掉单元测试 -->

</configuration>

</plugin>

</plugins>

</build>

然后使用IDEA右侧maven,当然,这个maven一定是root的,也就是父工程下面才可以,如下:

如图:

然后jar包就此成功,然后我们去命令行启动

这个时候启动了,我们继续刚刚访问,

这个和本地测试一样,说明jar包成功。

4、war包

将web项目的pom文件

<packaging>war</packaging>

然后删掉指向类配置,剩下的如下

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<executions>

<execution>

<goals>

<goal>repackage</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

如图:

关掉之前启动的jar命令,用kill -9 关掉,然后启动war,如图:

接下来,继续测试,

还是之前的结果,说明无论是我们在IDEA上测试,还是通过打包jar或者war,都可以得到相同结果,这就说明我们的多模块项目单启动类配置完成了。

注意点:并不是只有web项目才可以写controller层,如果你再创建一个模块,把它依赖引入,然后扫描它的controller也是可以执行的。所以有时候创建两个controller模块

以上是 崛起于Springboot2.X+多模块整合+一个启动类+jar、war打包运行(60) 的全部内容, 来源链接: utcz.com/z/511253.html

回到顶部