Maven构建失败 - 缺少主类

时间:2017-07-21 10:43:19

标签: java spring maven spring-boot

我正在尝试使用Maven开始使用Spring Boot应用程序。我完成了以下教程:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started

我的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.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.BUILD-SNAPSHOT</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
<!-- Additional lines to be added here... -->

<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
    <repository>
        <id>spring-snapshots</id>
        <url>http://repo.spring.io/snapshot</url>
        <snapshots><enabled>true</enabled></snapshots>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <url>http://repo.spring.io/milestone</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <url>http://repo.spring.io/snapshot</url>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <url>http://repo.spring.io/milestone</url>
    </pluginRepository>
</pluginRepositories>

我的项目文件夹如下所示:Test \ src \ main \ java

Pom.xml位于Test \ bin

只有一个Java文件:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}

如果我用mvn spring-boot运行它:在cmd中运行我会得到一个构建失败,注意它无法找到合适的主类

堆栈跟踪:

[INFO] BUILD FAILURE
[INFO]      ------------------------------------------------------------------------
[INFO] Total time: 2.206 s
[INFO] Finished at: 2017-07-21T12:33:18+02:00
[INFO] Final Memory: 21M/227M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-     maven-plugin:2.0.0.BUILD-SNAPSHOT:run (default-cli) on project myproject:   Unable to find a suitable main class, please add a 'mainClass' property ->   [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions,   please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

2 个答案:

答案 0 :(得分:2)

您的Example课程是有效的Spring Boot Main课程。

问题在于:

  

Pom.xml位于Test \ bin

您的pom.xml未在正确的位置声明。

默认情况下,Maven希望src\main\java文件夹位于定义pom.xml的同一级别。

所以,通过这种布局,Maven试图在

中找到你的类
Test\bin\src\main\java

但你的课程在这里:

  

我的项目文件夹如下所示:Test \ src \ main \ java

只需将pom.xml移动到Test文件夹的根目录。

答案 1 :(得分:1)

Maven预期文件位于特定位置: 如果您的java文件位于 Test \ src \ main \ java 中,那么您的pom文件应该在测试中,而不是在测试\ bin < / p>

使用相同的代码运行它,它构建正常。

您可以在此处阅读有关maven中文件位置的更多信息: https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html