zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    【Leetcode】23. Merge k Sorted Lists
    【Leetcode】109. Convert Sorted List to Binary Search Tree
    【Leetcode】142.Linked List Cycle II
    【Leetcode】143. Reorder List
    【Leetcode】147. Insertion Sort List
    【Leetcode】86. Partition List
    jenkins 配置安全邮件
    python 发送安全邮件
    phpstorm 同步远程服务器代码
    phpUnit 断言
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/14291646.html
Copyright © 2011-2022 走看看