Idea搭建SpringBoot+Maven多模塊項目

工作以後我接觸到了maven分模塊的正確使用姿勢,我花了一整天想自己在idea上自己搭建一個架子,終於弄好了。

先說一下正確的使用姿勢。

service層應該是沒有啓動類,無法啓動的一些java文件。api模塊迭代更新,對外提供rpc的接口,啓動類應該寫在web模塊和rpc模塊,其中web提供controller,api迭代更新,安裝到maven倉庫裏面提供rpc的接口。common模塊寫一些工具類或者公共的bean。

我自己試了下,只想搭建一個service和web,只有這倆模塊成功了,別的也就是照貓畫虎。

一開始我創建父項目是springboot項目,子項目的parent指向父項目,靠,氣得我差點吐血。無論怎麼更改pom,加<mainClass>,加各種配置,然而不是打包不了,就是能打包但是啓動不了,說什麼找不到啓動類(那我就在你啓動類裏面運行的main方法他說找不到啓動類,吐了),或者能啓動但是訪問controller報錯404。

現在看來maven真的做的不夠好。唉,其實要是做的太好了,程序員也就該失業了,不知道是好事還是壞事。

不說了,跟着我做吧。

第一步,打開idea。

第二步,創建一個新的project,選擇spring initializar,輸入groupid和artifactId,注意,這裏選擇Type爲Maven POM

然後 next,勾選web,spring boot devtools等需要的包,選擇保存的額位置,finish。

第三步,右鍵剛剛生成的項目,new module,這時候我們創建空白的maven項目就行了

一直往下走,artifactId和modulename寫xxx-web(自己 起個名字就行,什麼模塊起什麼名字)。

第四步,重複第三步可以創建web,service,rpc,......所有模塊,在對應的main/java文件夾下創建com.xxx.xxx包後,rpc和web還要加上啓動類。


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


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

第五步,現在打開最外面那個pom,你會發現多了這個

這個時候,你還要在build標籤(沒有的話自己寫)裏面加上下面這些。

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>1.3.0.RELEASE</version>
        <configuration><!-- 指定該Main Class爲全局的唯一入口 -->
            <mainClass>com.mzg.jsoup.App</mainClass>
            <layout>ZIP</layout>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                </goals>
                <!--可以生成不含依賴包的不可執行Jar包-->
                <!-- configuration>
                  <classifier>exec</classifier>
                </configuration> -->
            </execution>
        </executions>
    </plugin>
</plugins>

因爲我們的web模塊是依賴service模塊的(contoller調用service的方法),所以要把Idea設置一下(之前沒設置所以一直運行不起來,就算再在Dependences裏面引入也不行,也install過service了。垃圾maven),如下:

選擇你要添加依賴的模塊,點擊加號

點擊加號後 選擇你要依賴的模塊,確定後就可以運行啦,這時候controller調service的方法就可以直接調用了。在你的web項目裏面寫個Controller,就可以啓動了。但是打包是有問題的。

於是我在web裏面加入了service依賴。

爲了打包還要在web模塊加入插件。

<build>
    <!-- 爲jar包取名 -->
    <finalName>jsoup-web</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.3.0.RELEASE</version>
        </plugin>
    </plugins>
</build>

這裏注意兩點,一,mainClass寫你自己的啓動類

                         二,maven插件的版本必須使用1.3.0-REALEASE,樓主試了幾個別的新版本,打包的時候都報錯找不到你引用的類(可是運行是沒問題的,這就讓我很惱火)。咱也不知道maven插件升級是升了他ma什麼級,升了狗shi嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章