2014-12-04 45 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。

见你的父母只能作为容器。

希望能为你工作