崛起於Springboot2.X + 多模塊整合 + 一個啓動類 + jar、war打包運行(60)

《SpringBoot2.X心法總綱》java

博客概要:Springboot多模塊項目搭建 + 打包jar運行 + 打包war運行 + 一個啓動類(有的項目是多模塊多個啓動類),爲後續的SpringCloud項目做準備。web

父工程:father

子模塊:sun一、sun二、web(啓動模塊)

一、建立父工程

     勾選SpringWeb和lombokspring

如圖所示apache

而後刪除src文件夾,如圖:app

而後修改pom文件,添加一行打包類型maven

<packaging>pom</packaging>

二、建立子模塊

      建立3個子模塊,分別爲sun一、sun二、web,不勾選任何依賴。spring-boot

三、father的pom.xml修改

      建立好三個模塊以後,在father項目父工程pom.xml添加依賴單元測試

<modules>
    <module>sun1</module>
    <module>sun2</module>
    <module>web</module>
</modules>

      更換pom.xml插件,準備打包使用測試

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

四、子模塊pom.xml修改

      更換繼承:sun一、sun二、web三個子模塊分別繼承father父工程,這樣就一樣擁有了lombok以及web的依賴ui

<parent>
    <groupId>com.osc</groupId>
    <artifactId>father</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

      刪除:由於web是啓動類項目,不須要因此相關的打包插件,可是sun一、sun2須要刪除下面的,由於是多餘的,以下:

<build>
     <plugins> 
        <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
</build>

       刪除:刪除共同的配置

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

      添加:打包類型

<packaging>jar</packaging>

五、編碼

sun1項目上建立entity層,這個時候就可使用lombok插件了,由於繼承了父工程

@Data
@AllArgsConstructor
@ToString
public class UserEntity {
    private String name;
    private int age;
    private String address;
}

sun2定義爲service層,須要使用sun1的實體類,而後依賴sun1,在sun2的pom.xml中配置

<dependency>
    <groupId>com.osc</groupId>
    <artifactId>sun1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

編寫service

@Service
public class HelloService {
    public UserEntity getUser(){
        return new UserEntity("jiutian",23,"beijing");
    }
}

這個時候咱們就是引用sun1的實體類

      最後咱們建立web層,這個不須要刪除啓動類,而後都依賴sun1,sun2,把他們引入到pom.xml文件中,添加sun1,sun2依賴。

<dependency>
    <groupId>com.osc</groupId>
    <artifactId>sun1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>com.osc</groupId>
    <artifactId>sun2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

最後在啓動類上添加掃描,由於多個模塊,web啓動類運行的話默認只運行掃描本身這個模塊,致使找不到其餘模塊,因此添加一個掃描。

@ComponentScan(basePackages = {"com.osc.sun2.service","com.osc.web.controller"})

而後web項目上建立一個controller層

@RestController
public class HelloController {

    @Autowired
    HelloService helloService;

    @GetMapping(value = "/test")
    public String test(){
        return helloService.getUser().toString();
    }
}

六、IDEA運行、測試

七、jar打包

      在web項目pom.xml中插件更換爲

<build>
    <!--打包以後的名字-->
    <finalName>demo_many</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.osc.web.WebApplication</mainClass>
                <layout>ZIP</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <!-- &lt;!&ndash;能夠生成不含依賴包的不可執行Jar包&ndash;&gt;
                     <configuration>
                         <classifier>exec</classifier>
                     </configuration>-->
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

      而後使用IDEA右側maven,固然,這個maven必定是root的,也就是父工程下面才能夠,以下:

而後jar包打包成功,如圖:

而後jar包就此成功,而後咱們去命令行啓動

這個時候啓動了,咱們繼續剛剛訪問,

      這個和本地測試同樣,說明jar包成功。

八、war包

將web項目的pom文件

<packaging>war</packaging>

而後刪掉指向類配置,剩下的以下

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

如圖:

關掉以前啓動的jar命令,用kill -9 關掉,而後啓動war,如圖:

接下來,繼續測試,

仍是以前的結果,說明不管是咱們在IDEA上測試,仍是經過打包jar或者war,均可以獲得相同結果,這就說明咱們的多模塊項目單啓動類配置完成了。

注意:並非只有web項目才能夠寫controller層,若是你再建立一個模塊,把它依賴引入,而後在啓動類上添加掃描位置,其餘子模塊的controller也是能夠執行的。通常狀況下咱們企業作項目也每每是這樣子的,一個模塊的controller層用來後臺管理系統的,另一個模塊的controller層用來前臺系統的。

相關文章
相關標籤/搜索