1. 程式人生 > >Spring Boot踩坑交流

Spring Boot踩坑交流

問題:執行Spring Boot+Maven專案時clean失敗

從SVN上拉下來的專案出現的clean問題,需要org.apache.maven.plugins:maven-clean-plugin:2.6.1專案才可以繼續執行的 父pom檔案引用的maven外掛資源版本 在這裡插入圖片描述

  • 淺談Maven 生命週期
  • 上述問題的解決方案

對Maven生命週期的理解 Maven的生命週期是對所有的構建過程進行抽象和統一,它的生命週期是抽象的,也就意味著生命週期本身不做任何實際的工作,生命週期只是定義了一系列的階段,並確定這些階段的執行順序。而在執行這些階段時,實際的工作還是由外掛來完成的。 主要有三個內建的生成生命週期: 預設(default)—default生命週期處理專案部署 清空(clean)—clean生命週期處理專案清空 站點(site)—site生命週期處理專案站點文件的建立 生命週期的主要階段有: 1.install

-----在本地Maven Repository中安裝jar,本地專案可以依賴,但是別人無法依賴;install時把target下的jar安裝到本地倉庫,供其他專案使用;在install之前務必要選擇合適的setting配置好本地的Maven倉庫,當出現install不到相關的jar包的時候,可選擇更換setting檔案,從不同的私服下載jar包;下載的依賴版本出現問題的時候,需要在(http://mvnrepository.com/)中查詢版本號是否存在,選擇合適的依賴。 在這裡插入圖片描述 在這裡插入圖片描述 2.clean-----清除專案下的target檔案,執行clean 命令後的專案結構,沒有target檔案,target為輸出目錄,所有的輸出都放在這個目錄下,一般在提交專案至SVN時候切記不要提交,打包專案之前,務必要先clean一下專案,清除target目錄下的檔案 在這裡插入圖片描述
3.compile-----編譯專案的原始碼,執行該命令後,target目錄下生成classes資料夾,裡面存放編譯後的class檔案 在這裡插入圖片描述 4.package-----將專案中的各種檔案,如原始碼、編譯生成的位元組碼、配置檔案、文件,按照規範的格式生成歸檔,常見的就是JAR包和WAR包可用於釋出。區別:package是把jar打到本專案的target下,而install時把target下的jar安裝到本地倉庫,供其他專案使用 在這裡插入圖片描述 上述問題的解決方案: 在pom檔案中新增下面的程式碼:分別執行clean,compile,install命令,執行成功

<build>
 <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
        </build>

對此段程式碼的理解: pluginManagement 表示外掛宣告,在它下面宣告的外掛,maven是不會載入的,一般定義在父pom檔案中,提供給子POM使用,當然了,子POM也可以覆蓋這個定義;而且在父POM中定義了版本之後,子模組中直接應用groupId和artifactId,而不用指定版本,同時也方便統一管理;此外,父POM中的pluginManagement並不會介入到Maven的生命週期。 目的:主要是為了統一管理外掛,確保所有子POM使用的外掛版本保持一致 plugins的作用:給出構建過程中用到的外掛,把寫好的程式和程式本身所依賴的jar包一起build到一個包裡,這是maven中針對打包任務而提供的標準外掛。 如果是繼承了父POM則不用顯示指定外掛的內容 在這裡插入圖片描述

參考連結