Maven构建项目时报错"Unable to find main class"

新起了一个Spring Cloud项目玩玩,基本模块创建好了之后准备构建发布,却发现Maven报错了“Unable to find main class”。搞了一会,解决并记录于此。
1_T81YZjqBfVDH0sOcKnk_rw.png

References:

首先呢,项目结构是这样的:

bilibili/
├── auth
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           └── resources
├── common
│   ├── pom.xml
│   └── src
│       └── main
│           └── java
├── config
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           └── resources
├── eureka
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           └── resources
├── gateway
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           └── resources
├── pom.xml

[...]

└── video
    ├── pom.xml
    └── src
        └── main
            ├── java
            └── resources

parent中有个pom.xml,一开始里面的build部分是这样的:

<?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>

[...]

    <build>
        <finalName>${project.name}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

[...]

</project>

然后每次maven install的时候,Common模块都会报错“Unable to find main class” with Maven on spring-boot project in Eclipse。看起来是找不到main类,所以报错了。但是这个Common模块是我用来放一些通用方法或类的,确实不需要main方法。那怎么搞呢?
根据StackOverflow上小哥的回答:

你应该将这块代码

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

放在你需要run的模块中,而不是放在parent的pom里.
所以我试着将这块配置从parent的pom中拿出来放到需要启动的模块中,common是没有这块的,然后就可以构建了。

当然,如果你的项目中确实有main类,可以在pom文件中添加以下属性:

<start-class>your.package.main</start-class>

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……