springboot微服務項目打包。你需要知道的事情,springboot多模塊項目mvn打包遇到的問題 - 存在依賴但卻無法發現符號

參考自:https://blog.csdn.net/SnailMann/article/details/81710461

之前我在練習一個springcloud微服務的項目,項目很簡單,一個父類,一個註冊中心,一個提供者,一個消費者。但是再項目編寫完成後,項目打包總是失敗。總是提示java實體類出問題。糾結了很久,最後解決了,這裏好好做個總結。

這是一個什麼問題呢?我來闡述一下,問題大致是這麼一個情況:

我有一個SpringCloud項目,每個微服務都是一個SpringBoot工程,其中有一個payment項目依賴了一個公共的模塊common-util項目。payment項目和common項目都同屬一個父工程的子module。

  • 此時我想要把整合SpringCloud項目部署到服務器上,這時候我就需要打jar包,將jar放到服務器上,通過java -jar *.jar 命令來啓動SpringBoot項目
  • 首先我肯定輸入mvn clean install -DskipTests=true將common模塊進行打包到本地倉庫中
  • 然後我再對payment項目進行打包mvn clean package -DskipTests=true
  • 然後mvn命令error (找不到符號),既payment找不到common裏的類,所以報錯,無法打包

我分析的理由:

  • 我一開始是檢查是否父項目的pom漏了module common項目,發現不是,payment和common都是同屬一個父項目的子module,而且子項目的<parent>也都一個同一個父項目
  • 然後我又檢查是否payment依賴的common的路徑或版本號出了問題,發現也正確
  • 然後我就檢查是否.m2的倉庫中,包沒有打上,或者包不完整。檢查後發現也沒有
  • 然後我就懷疑是否pom.xml的依賴配置問題,但是網上查springboot多模塊項目打包不成功的問題,也沒有收穫

最後的解決方案:

該方案是我在某羣求助後,一大佬解決的,真的是非常感謝,幫我解決了困擾我一個下午的問題。 

è¿éåå¾çæè¿°

我的問題就是在common項目的pom導入了spring-boot-maven-plugin插件,導致打的common jar包與平時的jar包不同。當該jar包被其他模塊依賴,就會出現該jar無法被其他模塊訪問到。

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

所以如果你的項目Module僅僅是作爲jar包依賴使用的,而不是一個SpringBoot啓動項工程就千萬不要把spring-boot-maven-plugin插件配置到該項目的pom中。導入了該插件所打的jar包和沒有該插件時所打的jar包是不同的。謹記

總結

在分佈式即微服務項目中,在需要啓動的項目的pom文件中添加上面的依賴,在實體類,工具類,等類似不需要啓動,只需要繼承,依賴的模塊的服務中不需要上面的依賴。在父工程中也不需要加上上面的依賴。只要他們都直接或者間接的繼承了父工程,父工程打包都會將其他依賴的服務打包。

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