2017-09-20 34 views
4

我有一个带Spring Boot的多模块项目。如何spring-boot:在多模块项目的root pom.xml上运行

我的根pom.xml中仅包含此:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.something</groupId> 
    <artifactId>my-application</artifactId> 
    <version>0.1.0</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>library</module> 
     <module>application</module> 
    </modules> 

</project> 

我是在application模块,如下图所示spring-boot-maven-plugin

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.something.tcc</groupId> 
    <artifactId>my-application-application</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.7.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
     <jsf.version>2.2.11</jsf.version> 
    </properties> 

    <dependencies> 
     <!-- use this for automatic hot deployment on code changes --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <executable>true</executable> 
       </configuration>     
      </plugin> 
     </plugins> 
    </build> 

</project> 

所以今天,从我的根目录下,我要执行我的应用程序是这样的:

mvn spring-boot:run -pl application 

如果我尝试mvn spring-boot:run,我收到错误:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.7.RELEASE:run (default-cli) on project my-application-library: Unable to find a suitable main class, please add a 'mainClass' property -> [Help 1] 

我想知道我需要什么,为了做到能在我的根目录下执行准确以下命令:

mvn spring-boot:run 

编辑:根据注释的建议,我试图从application模块移动配置根pom.xml的,但我仍然收到了同样的错误:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.something</groupId> 
    <artifactId>my-application</artifactId> 
    <version>0.1.0</version> 
    <packaging>pom</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.7.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

<properties> 
    <!-- The main class to start by executing java -jar --> 
    <start-class>com.something.tcc.Main</start-class> 
</properties> 

    <modules> 
     <module>library</module> 
     <module>application</module> 
    </modules> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
    </dependencies> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <executable>true</executable> 
       </configuration>     
      </plugin> 
     </plugins> 
    </build> 

</project> 

感谢

+0

将配置从应用程序'pom.xml'移动到父母的'pom.xml',你试过了吗? – nullpointer

+0

@nullpointer你是否建议我移动包括我的'Main'类在内的所有内容?如果没有,我会收到相同的错误 – qxlab

+0

不是代码,而是您必须在应用程序模块的pom.xml中指定给父pom.xml的pom.xml中的配置。 – nullpointer

回答

0

您可以定义在你的pom.xml 要么start-class财产或mainClass配置XML标签主体类查找描述here

+0

你在哪个'pom.xml'建议我这样做?从'library'模块? – qxlab

+0

亲pom @qxlab – nullpointer

+0

我试过了,请看更新后的帖子 – qxlab

相关问题