弹簧启动与POM包装Agregator

Mar*_*ijn 8 java spring maven spring-boot

spring-boot:run当项目的父POM由于其子项而使用打包模式POM时,是否可以使用Spring Boots Maven插件命令?


我有一个带有"主"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>
Run Code Online (Sandbox Code Playgroud)

这基本上是我们的"主人"POM,每个孩子都使用它作为它的父母.现在我们spring-boot:run要从这个"主"POM所在的工作目录中执行命令.问题是,这会生成一个ClassNotFoundException奇数,因为module1(此类Application所在的位置)包含在POM中并作为模块提及.

使用单个模块maven项目,<packaging>jar</packaging>这将编译并运行Application类,因此Spring-Boot不是在这里工作.

spring-boot-maven-plugin在处理多模块Maven项目时,我需要更改什么才能使其工作或者根本无法使用插件?


旁注:我的应用程序类/模块1将其他模块作为依赖项,因此在回答问题时请记住这一点.任何关于如何改进这一点的建议都非常感谢.

tho*_*s77 0

据我所知,这是不可能的,因为该插件需要一个可执行的 jar 才能运行。

spring-boot 插件目标“run”的文档说:

描述

运行可执行的归档应用程序

打包 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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,工件是 boot-parent-0.0.1-SNAPSHOT.pom。


尝试将插件配置放入 module1 的 pom 中,该模块具有启动类(主类)并具有打包 jar。

编辑您的评论:

您的评论表明您的客户端 Maven 安装存在问题。看看这个答案。尤其是@ChristianAchilli 给出的答案。

我通过删除本地存储库中相应的无法下载工件目录来解决此问题。下次我运行 Maven 命令时,会再次触发工件下载。因此我会说这是客户端设置。

再次希望这有帮助!

托马斯


归档时间:

查看次数:

2170 次

最近记录:

10 年,8 月 前