[英]Spring Boot with POM packaging Agregator
當項目的父POM由於其子級而使用打包模式POM時,是否可以使用Spring Boots Maven插件命令spring-boot:run
?
我有一個帶有“主” POM的多模塊maven項目,而該項目又是Spring Boot Parent模塊的子級。 看起來像這樣:
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>project</artifactId>
<packaging>pom</packaging>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.0.BUILD-SNAPSHOT</version>
<relativePath/>
</parent>
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<start-class>com.example.module1.Application</start-class>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
這基本上是我們的“主” POM,每個孩子都將其用作父項。 現在,我們要從“主” POM所在的工作目錄中執行spring-boot:run
命令。問題是,這會生成一個ClassNotFoundException
,這是奇怪的,因為POM中包含了module1(此Application
類所在的位置),並且作為模塊提及。
使用單個模塊的maven項目和<packaging>jar</packaging>
編譯並運行Application類,因此不是Spring-Boot在這里不起作用。
我必須更改以使其正常工作,還是在處理多模塊Maven項目時根本無法使用spring-boot-maven-plugin
插件?
旁注:我的應用程序類/模塊1將其他模塊作為依賴項,因此在回答問題時請記住這一點。 任何有關如何改善此問題的建議都將受到贊賞。
據我所知,這是不可能的,因為該插件需要可執行的jar才能運行。
spring-boot插件目標“運行”的文檔說:
描述
運行可執行的存檔應用程序
打包pom將不會創建可執行文件。 它只會生成一個pom.xml。
嘗試運行mvn install並查看部署到本地存儲庫的工件:
我只是為包裝pom的模塊做的:
[INFO] Installing C:\projects\boot-parent\pom.xml to
C:\Users\...\repository\no\boot-parent\0.0.1-SNAPSHOT\boot-parent-0.0.1-SNAPSHOT.pom
如您所見,工件是boot-parent-0.0.1-SNAPSHOT.pom。
嘗試將plugin-configuration放在具有起始類(主類)和包裝jar的module1的pom中。
編輯您的評論:
您的意見表明您的客戶端Maven安裝存在問題。 看看這個答案 。 特別是@ChristianAchilli給出的答案。
我通過刪除本地存儲庫中相應的未能下載的工件目錄來解決此問題。 下次我運行maven命令時,再次觸發工件下載。 因此,我想說這是一個客戶端設置。
再次希望對您有所幫助!
湯瑪士
增加一個模塊,僅在其中包含您的應用程序。 如果您將依賴項插入模塊,則可以使用spring-boot:run正常啟動模塊,也可以將其導出為jar。
僅將父母作為容器。
希望對你有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.