是否可以使用 Spring Boots Maven 插件命令spring-boot:run
当项目的父POM因其子项目而使用打包模式POM时?
我有一个多模块 Maven 项目,其中有一个“主”POM,它又是 Spring Boot 父模块的子模块。看起来像这样:
<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,每个孩子都将其用作其父级。现在我们想要执行spring-boot:run
来自此“主”POM 所在工作目录的命令。问题是,这会生成一个ClassNotFoundException
这是奇怪的,因为 module1 (其中这Application
类位于)包含在 POM 中并作为模块提及。
使用单模块 Maven 项目和<packaging>jar</packaging>
这会编译并运行 Application 类,因此不是 Spring-Boot 在这里不起作用。
我必须更改什么才能使其正常工作,或者根本无法使用spring-boot-maven-plugin
处理多模块 Maven 项目时的插件?
旁注:我的应用程序类/模块 1 将其他模块作为依赖项,因此在回答问题时请记住这一点。非常感谢任何有关如何改进这一点的建议。
据我所知,这是不可能的,因为该插件需要一个可执行的 jar 才能运行。
的文档弹簧启动插件 http://docs.spring.io/autorepo/docs/spring-boot/1.2.0.BUILD-SNAPSHOT/maven-plugin/run-mojo.html目标“跑”说:
描述
运行可执行的归档应用程序
打包 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。
尝试将插件配置放入 module1 的 pom 中,该模块具有启动类(主类)并具有打包 jar。
编辑您的评论:
您的评论表明您的客户端 Maven 安装存在问题。看一下这个答案 https://stackoverflow.com/questions/4856307/when-maven-says-resolution-will-not-be-reattempted-until-the-update-interval-of。尤其是@ChristianAchilli 给出的答案。
我通过删除本地存储库中相应的无法下载工件目录来解决此问题。下次我运行 Maven 命令时,会再次触发工件下载。因此我会说这是客户端设置。
再次希望这有帮助!
Thomas
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)