maven 多模块聚合工程打包

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

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

com.example
springboot-multi
0.0.1-SNAPSHOT

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

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

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

<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子模块) 

<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子模块)

<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子模块) 

<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子模块

<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文件中需要注意的就是:

主项目的modules标签指定的子模块是否正确
子模块之间的依赖
子模块的parent标签
十一、web子模块的Application启动类:

@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"; 
  } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值