簡體   English   中英

帶POM包裝聚合器的Spring Boot

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM