Maven构建项目时报错"Unable to find main class"
新起了一个Spring Cloud项目玩玩,基本模块创建好了之后准备构建发布,却发现Maven报错了“Unable to find main class”。搞了一会,解决并记录于此。
References:
- https://stackoverflow.com/questions/42937577/unable-to-find-main-class-with-maven-on-spring-boot-project-in-eclipse
- https://maven.apache.org/pom.html#Maven_Coordinates
首先呢,项目结构是这样的:
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>