运行mvn spring-boot:从父模块运行?

时间:2016-12-11 23:14:28

标签: spring-boot

我有一个像这样的多模块maven项目:

我的亲
- 我的域
- 我的业务
--my-app<<<这是一个Spring Boot模块

我想直接从父模块运行mvn spring-boot:run命令,而无需先进入'my-app'目录

我认为这与spring-boot-maven-plugin的配置有关,但我似乎无法做到正确。

我尝试了以下内容:

  1. 使用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

  2. 请勿使用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]

  3. 请勿使用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

  4. 在上述所有情况下,从my-app目录运行mvn spring-boot:run都可以正常工作。

    我认为应该有办法使这项工作。在传统的非Boot Spring项目中,配置tomcat7插件非常简单,以便我可以从父级运行mvn tomcat7:run-war,并且webapp子模块将按预期启动

2 个答案:

答案 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

请参阅maven CLI options