我有一个像这样的多模块maven项目:
我的亲
- 我的域
- 我的业务
--my-app<<<这是一个Spring Boot模块
我想直接从父模块运行mvn spring-boot:run
命令,而无需先进入'my-app'目录。
我认为这与spring-boot-maven-plugin
的配置有关,但我似乎无法做到正确。
我尝试了以下内容:
使用spring-boot-starter-parent
以及my-app插件部分中包含的spring-boot-maven-plugin
默认配置。
从父级运行mvn spring-boot:run
会导致:
Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.4.2.RELEASE:run (default-cli) on project my-parent: Unable to find a suitable main class, please add a 'mainClass' property -> [Help 1] in the parent module
请勿使用spring-boot-starter-parent
如下所述,在depManagement中定义spring-boot-dependencies
。在 my-parent 的pluginManagement部分中定义spring-boot-maven-plugin
,并在my-app模块的插件部分中包含该插件。登记/>
运行mvn spring-boot:从父运行结果导致与#1相同的错误:
无法执行目标org.springframework.boot:spring-boot-maven-plugin:1.4.2.RELEASE:在项目my-parent上运行(default-cli):无法找到合适的主类,请添加'mainClass' property - > [帮助1]
请勿使用spring-boot-starter-parent
如下所述,在depManagement中定义spring-boot-dependencies
。在 my-app 的插件部分中定义spring-boot-maven-plugin
。
运行mvn spring-boot:从父运行结果:
No plugin found for prefix 'spring-boot' in the current project and in the plugin groups
在上述所有情况下,从my-app目录运行mvn spring-boot:run
都可以正常工作。
我认为应该有办法使这项工作。在传统的非Boot Spring项目中,配置tomcat7
插件非常简单,以便我可以从父级运行mvn tomcat7:run-war
,并且webapp子模块将按预期启动
答案 0 :(得分:16)
您可以通过在父母pom中添加以下内容来实现:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
在你的 在我的应用程序(Spring Boot模块)pom中:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<skip>false</skip>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
现在你可以在项目根目录中执行:
mvn -pl my-app -am spring-boot:run
其他参考资料:
答案 1 :(得分:1)
spring-boot maven插件配置选项:
skip: skips the execution of sprint-boot:run [default: false]
fork: Flag to indicate if the run processes should be forked [default: true]
请参阅spring-boot maven plugin parameters
行家选项:
-pl, --projects: Comma-delimited list of specified reactor projects to build instead of all projects. A project can be specified by [groupId]:artifactId or by its relative path
-am, --also-make: If project list is specified, also build projects required by the list