Idea搭建SpringBoot多模塊項目


需求:

  搭建一個多模塊項目,包含下面三個模塊

    sync-common

    sync-mimall

    sync-youpin

 

1、先搭建父工程

 

  方式一、SpringBoot

  1)File-New-Project-Spring Initializr

 

   2)Next

  選擇打包方式(jar/war),Artifact/Name 工程名稱,包路徑等信息

 

   3)Next

  選擇SpringBoot版本

 

   4)Next

  確認工程名稱和工程本地存儲路徑,然后點擊Finish父工程即創建完成

 

   5)刪掉src目錄

  因為我們創建的是父工程,只作為管理工程,里面還有子模塊,因此不需要src目錄,刪掉即可

   

  6)修改pom.xml

    <groupId>com.xiaomi.mitv.mall.sync</groupId>
    <artifactId>mitv-mall-sync</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mitv-mall-sync</name>
    <packaging>pom</packaging>  <!--修改jar為pom-->
    <description>Demo project for Spring Boot</description>

  

 

  方式二、maven

   1)File-New-Project-Maven

 

  2)Next

 

  3)Next

  確認工程名,然后點擊finish即完成

 

  4)刪除src目錄

 

 

 

2、創建啟動子模塊(可部署)

   1)在創建的工程名上右鍵 New-Module-Spring Initializr

   2)Next

  輸入模塊名,包名等相關信息

 

  3)Next

   選擇SpringBoot版本和相關依賴,如果是Web項目,選擇Web依賴

 

  4)Next

  確認模塊名和模塊路徑,點擊Finish完成

 

  5)在父pom.xml中添加剛創建的子模塊

  <modules>
        <module>sync-common</module>
        <module>sync-mimall</module>
        <module>sync-youpin</module>
    </modules>

 

  6)修改子模塊pom.xml parent

    <parent>
        <artifactId>mitv-mall-sync</artifactId>
        <groupId>com.xiaomi.mitv.mall.sync</groupId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

 

 

 

3、創建普通子模塊(僅作為啟動模塊的依賴,如common模塊)

   1)在創建的工程名上右鍵 New-Module-Maven

 

   2)Next

 

  3)Next

  確認模塊名,點擊Finish即完成。父pom.xml中會自動在modules標簽內添加新增的子模塊

 

  4)修改子模塊pom.xml parent

    <parent>
        <artifactId>mitv-mall-sync</artifactId>
        <groupId>com.xiaomi.mitv.mall.sync</groupId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

   

  5)若不需要,如common模塊,刪除resources和test 目錄

 

4、區分環境配置

  1)項目結構

  

 

  新建sync-deploy目錄,里面包含三個環境的配置

 

  2)其中一個部署模塊的pom配置

<build>
        <!--指定配置文件的地址,里面的配置會作為參數替換其他配置文件的占位符-->
        <filters>
            <filter>../sync-deploy/config/${active.env}/config.properties</filter> <!-- 多個文件可配置多個filter -->
        </filters>
        <resources>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <active.env>dev</active.env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-resources</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${basedir}/target/classes</outputDirectory>
                                    <!--資源過濾-->
                                    <resources>
                                        <resource>
                                            <directory>../sync-deploy/config/dev</directory>
                                            <filtering>true</filtering>
                                            <includes>
                                                <include>logback.xml</include>
                                                <include>redis.properties</include> <!-- 把需要的copy過來 -->
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>pre</id>
            <properties>
                <active.env>pre</active.env>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-resources</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <!--復制到哪去-->
                                    <outputDirectory>${basedir}/target/classes</outputDirectory>
                                    <!--資源過濾-->
                                    <resources>
                                        <resource>
                                            <directory>../sync-deploy/config/pre</directory>
                                            <filtering>true</filtering>
                                            <!--復制哪些文件過來-->
                                            <includes>
                                                <include>logback.xml</include>
                                                <include>redis.properties</include>
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <active.env>prd</active.env>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-resources</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <!--復制到哪去-->
                                    <outputDirectory>${basedir}/target/classes</outputDirectory>
                                    <!--資源過濾-->
                                    <resources>
                                        <resource>
                                            <directory>../sync-deploy/config/prd</directory>
                                            <filtering>true</filtering>
                                            <!--復制哪些文件過來-->
                                            <includes>
                                                <include>logback.xml</include>
                                                <include>redis.properties</include>
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

 

  3)打包后,將對應環境下的文件復制進了target/classes目錄中,並解析了其中的占位符

  

 

 

 

END.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM