spring boot maven 多模塊項目建立筆記

1、建立父項目(parent)

使用IDE建立功能java

Intellij > File > New > Project > Spring Initializr
複製代碼

設置項目名稱,使用默認選項,建立空的主項目web

修改pom.xml

  1. 添加子模塊
<!-- 模塊說明:這裏聲明多個子模塊 -->
    <modules>
        <module>btp-bean</module>
        <module>btp-common</module>
        <module>btp-dao</module>
        <module>btp-service</module>
        <module>btp-admin</module>
        <module>btp-user</module>
    </modules>
複製代碼
  1. 刪除dependencies內容
  2. 添加pom 父項目打包不能是默認的jar,因此得改爲pom
  3. 刪除

最終的pom.xml以下spring

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.boyuantang</groupId>
    <artifactId>btp-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>btp-parent</name>
    <description>Demo project for Spring Boot</description>

    <packaging>pom</packaging>
    <!-- 模塊說明:這裏聲明多個子模塊 -->
    <modules>
        <module>btp-bean</module>
        <module>btp-common</module>
        <module>btp-dao</module>
        <module>btp-service</module>
        <module>btp-admin</module>
        <module>btp-user</module>
    </modules>


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

</project>
複製代碼

父項目的做用

  • 父項目繼承spring框架
  • 父項目定義版本號
  • 父項目讓子模塊之間能夠相互引用

2、建立子模塊

在IDE中點擊父項目,右鍵apache

New > Module > Spring Initializr
複製代碼

設置項目名稱,使用默認選項,建立空的子模塊json

修改pom.xml

  1. 添加父項目

取代默認的parent spring, 由於父項目已經繼承了parent springbash

<!-- 繼承本項目的父工程 -->
    <parent>
        <groupId>com.boyuantang</groupId>
        <artifactId>btp-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
複製代碼
  1. 刪除dependencies內容 根據本身的須要添加依賴,若是是web模塊,要添加spring的一整套依賴。若是是module模塊,則按須要添加依賴。同時子模塊之間也能夠相互引用,以下
<dependency>
	<groupId>com.boyuantang</groupId>
	<artifactId>btp-dao</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>
複製代碼
  1. 若是非web模塊,則刪除

非web模塊,最終的pom.xml以下mybatis

<?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>
    <!-- 繼承本項目的父工程 -->
    <parent>
        <groupId>com.boyuantang</groupId>
        <artifactId>btp-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.boyuantang</groupId>
    <artifactId>btp-dao</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>btp-dao</name>
    <description>Demo project for Spring Boot</description>

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

    <dependencies>
        <dependency>
        	<groupId>com.boyuantang</groupId>
        	<artifactId>btp-service</artifactId>
        	<version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>
複製代碼

3、打包

子模塊能夠分開打包。生成的jar可運行。app

4、配置問題

  1. 會遇到報錯說 xxxDAO 不存在, 添加@MapperScan
@MapperScan("com.boyuantang.dao")
@SpringBootApplication
public class BtpAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(BtpAdminApplication.class, args);
    }
}
複製代碼
  1. 會遇到沒法註冊service模塊的bean, 添加@ComponentScan
@ComponentScan("com.boyuantang")
@SpringBootApplication
public class BtpAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(BtpAdminApplication.class, args);
    }

}
複製代碼
  1. 沒法掃描mybatis的xml文件,在application.properties中添加
mybatis.mapper-locations=classpath*:mapper/*.xml
複製代碼

5、項目之間的依賴關係

  1. 父項目導入全局依賴,這樣子模塊就不用再導入這些模塊
    好比lombok,fastjson之類
  2. web模塊導入service模塊,不用導入entity, common這些,由於service已經包含了這些子模塊
相關文章
相關標籤/搜索