SpringBoot+Maven 多模块项目的构建、运行、打包实战

£神魔★判官ぃ 2022-04-17 03:14 421阅读 0赞

项目使用的工具:

  1. IntelliJ IDEA
  2. JDK 1.8
  3. apache-maven-3.3.9

项目的目录:

  1. 主项目 springboot-multi
  2. 子模块 entity、dao、service、web

一、使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi

二、删除项目中的src目录,把pom.xml中的项目打包方式改为pom,如下:

?








1

2

3

4

5

<groupId>com.example</groupId>

<artifactId>springboot-multi</artifactId>

<version>0.0.1-SNAPSHOT</version>

<!— 此处改为pom —>

<packaging>pom</packaging>

三、创建springboot-multi项目的子模块,在项目上右键单击,选择:new -> Module。

四、创建四个子模块后,删除子模块中 src/main/java、src/main/java下的所有文件(如果没有文件跳过此操作),只保留web子模块的SpringBoot的Application主启动类。

五、主项目pom.xml (注意标签是否指定了子模块)

?








1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

<modelVersion>4.0.0</modelVersion

  <groupId>com.example</groupId>

  <artifactId>springboot-multi</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <!— 此处改为pom —>

  <packaging>pom</packaging>

  

  <name>springboot-multi</name>

  <description>Demo project for Spring Boot</description>

  

  <modules>

    <module>web</module>

    <module>service</module>

    <module>dao</module>

    <module>entity</module>

  </modules>

  

  <parent>

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

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

    <version>1.5.10.RELEASE</version>

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

  </parent>

  

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

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

  </properties>

  

  <dependencies>

    <dependency>

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

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

    </dependency>

  </dependencies>

  

  <!—指定使用maven打包—>

  <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>

六、web子模块pom.xml(依赖service、dao、entity子模块)

?








1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

<modelVersion>4.0.0</modelVersion

  <groupId>com.example</groupId>

  <artifactId>web</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

  

  <name>web</name>

  <description>Demo project for Spring Boot</description>

  

  <parent>

    <groupId>com.example</groupId>

    <artifactId>springboot-multi</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <relativePath>../pom.xml</relativePath>

  </parent>

  

  <dependencies>

    <dependency>

      <groupId>com.example</groupId>

      <artifactId>service</artifactId>

      <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <dependency>

      <groupId>com.example</groupId>

      <artifactId>dao</artifactId>

      <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <dependency>

      <groupId>com.example</groupId>

      <artifactId>entity</artifactId>

      <version>0.0.1-SNAPSHOT</version>

    </dependency>

  </dependencies>

  

  <!—spring boot打包的话需要指定一个唯一的入门—>

  <build>

    <plugins>

      <plugin>

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

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

        <configuration>

          <!— 指定该Main Class为全局的唯一入口 —>

          <mainClass>com.example.WebApplication</mainClass>

          <layout>ZIP</layout>

        </configuration>

        <executions>

          <execution>

            <goals>

              <goal>repackage</goal><!—可以把依赖的包都打包到生成的Jar包中—>

            </goals>

          </execution>

        </executions>

      </plugin>

    </plugins>

  </build>

七、service子模块pom.xml(依赖 dao 、entity子模块)

?








1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<modelVersion>4.0.0</modelVersion>

  

  <groupId>com.example</groupId>

  <artifactId>service</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

  

  <name>service</name>

  <description>Demo project for Spring Boot</description>

  

  <parent>

    <groupId>com.example</groupId>

    <artifactId>springboot-multi</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <relativePath>../pom.xml</relativePath>

  </parent>

  

  <dependencies>

    <dependency>

      <groupId>com.example</groupId>

      <artifactId>dao</artifactId>

      <version>0.0.1-SNAPSHOT</version>

    </dependency>

    <dependency>

      <groupId>com.example</groupId>

      <artifactId>entity</artifactId>

      <version>0.0.1-SNAPSHOT</version>

    </dependency>

  </dependencies>

八、dao子模块pom.xml (依赖entity子模块)

?








1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<modelVersion>4.0.0</modelVersion>

  

<groupId>com.example</groupId>

<artifactId>dao</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

  

<name>dao</name>

<description>Demo project for Spring Boot</description>

  

<parent>

  <groupId>com.example</groupId>

  <artifactId>springboot-multi</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <relativePath>../pom.xml</relativePath>

</parent>

  

<dependencies>

  <dependency>

    <groupId>com.example</groupId>

    <artifactId>entity</artifactId>

    <version>0.0.1-SNAPSHOT</version>

  </dependency>

</dependencies>

九、entity子模块

?








1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<modelVersion>4.0.0</modelVersion>

  

<groupId>com.example</groupId>

<artifactId>entity</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

  

<name>entity</name>

<description>Demo project for Spring Boot</description>

  

  <parent>

    <groupId>com.example</groupId>

    <artifactId>springboot-multi</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <relativePath>../pom.xml</relativePath>

  </parent>

十、pom.xml文件中需要注意的就是:

  1. 主项目的modules标签指定的子模块是否正确
  2. 子模块之间的依赖
  3. 子模块的parent标签

十一、web子模块的Application启动类:

?








1

2

3

4

5

6

7

8

9

10

11

12

13

@RestController

@SpringBootApplication

public class WebApplication {

  

  public static void main(String[] args) {

    SpringApplication.run(WebApplication.class, args);

  }

  

  @RequestMapping(value = “/test”,method = RequestMethod.GET)

  public String test(){

    return “test success”;

  }

}

十二、执行main方法启动项目,访问localhost:8080/test,出现如下页面表示项目搭建成功:

2018052414352758.png

十三、项目打包命令: mvn clean package 或者 使用右边工具栏的图形化界面打包也可以:

2018052414352759.png

十四、打包成功日志:

2018052414352760.png

发表评论

表情:
评论列表 (有 0 条评论,421人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springboot模块项目打包

    springboot多模块项目打包 今天在项目开发中,项目经理说实现以下APP和web端单独打包功能实现。因为app和web端是单独的modules,这样的话,app的代