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将其他模块作为依赖项,因此在回答问题时请记住这一点.任何关于如何改进这一点的建议都非常感谢.
据我所知,这是不可能的,因为该插件需要一个可执行的 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 次 |
| 最近记录: |