springcloud中maven打包問題


一、springcloud中我們最常用的打包方式就是使用springboot的spring-boot-maven-plugin進行打包,但是這樣存在一個問題,如下:

  

 

 

   問題1:打包錯誤:我們想要公有的打包方式,一般直接把spring-boot-maven-plugin放在最頂層的pom.xml文件中。這樣會導致一個問題

  父pom.xml中加入

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

  

 

 

   這個問題導致的原因就是common中的打包問題,在common中是沒有main的,但是我們通過springboot的maven插件打包就存在上圖的問題。

  問題2:公共模塊問題:問題1產生的主要原因還是common中引用了父pom.xml的依賴,加上本身沒有main的問題導致打包一直報錯。

二、解決  

  1、我在網上找了很多教程都是在common中加入執行為exec的方式,或者通過配置main.class來實現。但是這種基本上沒有太大的效果(個人實踐,可能存在差異)。

  2、尋找問題:首先我們先找到問題,問題是由於頂層pom.xml加入了springboot的maven插件,意思就是下面的所有模塊以springboot的maven插件的方式來進行打包的。這個是不合理的,在我們的common中只是用來做公共基礎的一些工具或者基礎開發的東西,這個根本不需要使用springboot的maven插件進行打包。那么思路來了放棄頂層的springboot的maven插件改成普通的編譯方式不就行了。

  3、解決問題(最簡單的方式)

  在頂層pom.xml中替換build為

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

  在需要使用springboot的maven插件的項目中加入

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

  4、注意:此方式只適合點擊頂層打包的方式,如果在具體的web中加入了common模塊,那么打包還是存在問題,原理同第2點。


免責聲明!

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



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