2014-12-04 27 views
7

當項目的父POM由於其子項使用打包模式POM時,是否可以使用Spring Boots Maven插件命令spring-boot:run彈性引導與POM包裝Agregator


我有一個「master」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因爲模塊1(其中,該Application類位於)被包括在POM和作爲模塊提及的是奇數。

使用單個模塊maven項目和<packaging>jar</packaging>這編譯和運行應用程序類,因此它不是Spring-Boot在這裏不工作。

要處理多模塊Maven項目時,需要更改哪些內容才能使用spring-boot-maven-plugin插件?


旁註:我的應用程序級/模塊1具有其他模塊回答這個問題時,依賴關係,以便記住這一點。關於如何提高這任何建議都非常讚賞。

回答

0

這是不可能的,因爲據我所知,由於插件需要一個可執行的JAR運行。

spring-boot plugin目標 「運行」 的文件說:

說明

運行可執行文件歸檔應用程序

包裝POM是不會創建可執行文件。它只會生成一個pom.xml文件。

嘗試MVN運行安裝,並期待在部署到你的本地庫神器:

我只是做了一個模塊,我有包裝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 

正如你看到的神器引導家長0.0.1-SNAPSHOT.pom。


嘗試把插件配置在POM爲模塊1,其具有起始級(主級),並且具有包裝罐。

編輯的評論:

您的意見建議,你有你的客戶端Maven的安裝問題。看一看this answer。尤其是答覆@ChristianAchilli給出。

我用來解決這個問題,通過刪除我的本地回購中相應的失敗下載工件目錄。下一次我運行maven命令時,再次觸發神器下載。所以我會說這是一個客戶端設置。

再次,希望這有助於!

托馬斯

+0

我試着按照你的建議去做。將插件移動到module1 pom,但這對我不起作用。這就是我得到: '[錯誤]未能就項目申請執行的目標:無法解析項目com。示例的依賴關係:模塊1:罐子:0.1.0:未能找到com。示例:模塊2:罐子:0.1 2.0中http://repo.spray.io在本地倉庫被緩存,分辨率將不會被重新嘗試,直到噴霧式回購的更新間隔已過或更新強制 - > [求助1]' – Martijn 2014-12-04 16:29:10

+0

@MartijnRiemers看到編輯回答 – thomas77 2014-12-05 10:15:37

0

讓一個模塊的更多地方只是你的應用程序中。 如果你插入依賴到你的模塊,你可以使用spring-boot啓動你的模塊:運行或導出爲jar。

見你的父母只能作爲容器。

希望能爲你工作