記錄一下 SpringCloud 打包 Unable to find main class,程序包xxx不存在,找不到符號

一,首先,明確一個問題,能用命令就用命令, idea 右側快捷不好用。

      mvn clean package:完成編譯,測試,打包,但是沒有把打好的可執行包放到本地遠程倉庫。

      mvn clean install:完成編譯,測試,打包,並且放到本地倉庫。

      mvn clean depoly:完成編譯,測試,打包,並且放到本地以及遠程倉庫。

      PS:clean 操作,能夠解決項目引導類打包 出現的莫名其妙的問題,最好加上。

 

二, SpringBoot 關於編譯的插件,自帶的打包需要 main 方法!並且不可被依賴!

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

     :如果父工程,pom 中加了這個,那麼各個模塊打包,都會檢測 main 方法,並且打包不能用於依賴。

     解決辦法:

  1,把 父類 pom 下,打包 插件改爲:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
          <source>1.8</source>
          <target>1.8</target>
       <encoding>UTF-8</encoding>
      </configuration>
</plugin>

    此時,可以去把 common,model,api,utils 等公共模塊進行 mvn clean install 打包(此時公共包就可以被依賴了),看看本地倉庫好有了沒。

 2, 最好,spring-boot-maven-plugin,不在父級下加,而是那個包需要 可執行,哪個就加。

 3,可以繼續 調整 plugin 配置:

 <plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
  <!--這樣會生成兩個 jar,一個可依賴,一個可執行並且後綴爲 -execute -->
     <configuration>
           <classifier>execute</classifier>
     </configuration>
</plugin>

      如果不想要可執行 jar,那麼

<classifier>execute</classifier> 改成 <skip>true</skip>

 

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