Maven多模块项目打包:Unable to find main class

目录

一、错误来源

二、原始pom文件

common模块

pojo模块

server模块

父工程

三、解决方法

四、修改pom文件

common模块

pojo模块

server模块(不改动)

父工程


 

一、错误来源

使用Maven对项目进行多模块开发,在项目打包时出现错误:Unable to find main class

具体如下:

Maven多模块项目打包:Unable to find main class_第1张图片

这是一个单体架构的项目,用到了Maven多模块设计。分为common公共模块,提供工具类、常量类、响应结果类、枚举类、异常类等;pojo实体模块,提供各种封装对象,例如数据传输对象DTO、数据库表实体类对象Entity、值对象VO;server服务模块,是服务的主体模块,包含配置类、切面类、controller、service、mapper、启动类等。

在对父工程使用Maven命令进行打包时,common模块出现找不到主类的错误。因为common模块和pojo模块都是为server服务模块提供支持,所以肯定是没有主类的。

 

二、原始pom文件

common模块



    4.0.0
    
        com.hange_summer
        report_system
        0.0.1-SNAPSHOT
    
    common
    0.0.1-SNAPSHOT
    common
    common

    
        17
    

    
        
            org.springframework.boot
            spring-boot-starter
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


pojo模块



    4.0.0
    
        com.hange_summer
        report_system
        0.0.1-SNAPSHOT
    
    pojo
    0.0.1-SNAPSHOT
    pojo
    pojo

    
        17
    

    
        
            org.springframework.boot
            spring-boot-starter
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


server模块



    4.0.0
    
        com.hange_summer
        report_system
        0.0.1-SNAPSHOT
    
    server
    0.0.1-SNAPSHOT
    server
    server

    
        17
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            com.hange_summer
            common
            0.0.1-SNAPSHOT
        

        
            com.hange_summer
            pojo
            0.0.1-SNAPSHOT
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


父工程



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        3.2.1
         
    
    com.hange_summer
    report_system
    0.0.1-SNAPSHOT

    pom
    
        common
        pojo
        server
    
    report_system
    report_system

    
        17
        8.2.0
        3.0.3
        0.9.1
        2.3.1
        1.1.1
        2.3.3
        4.1.0
        4.1.2
        4.1.2
        1.24.0
        3.15.1
        1.2.83
        4.5.13
        1.5.4
        2.7.3
    

    
        
            org.springframework.boot
            spring-boot-starter-security
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybatis.version}
        

        
            com.mysql
            mysql-connector-j
            ${mysql.version}
            runtime
        

        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter-test
            3.0.3
            test
        
        
            org.springframework.security
            spring-security-test
            test
        

        
            io.jsonwebtoken
            jjwt
            ${jjwt.version}
        

        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

        
            javax.xml.bind
            jaxb-api
            ${jaxb-api.version}
        
        
            javax.activation
            activation
            ${activation.version}
        
        
        
            org.glassfish.jaxb
            jaxb-runtime
            ${jaxb-runtime.version}
        

        
            com.github.xiaoymin
            knife4j-openapi3-jakarta-spring-boot-starter
            ${knife4j.version}
        

        
            org.springframework.boot
            spring-boot-starter-aop
        

        
            org.springframework.boot
            spring-boot-starter-data-redis
        

        
            org.apache.poi
            poi
            ${poi.version}
        
        
            org.apache.poi
            poi-ooxml
            ${poi-ooxml.version}
        

        
            org.apache.commons
            commons-compress
            ${commons-compress.version}
        

        
            com.aliyun.oss
            aliyun-sdk-oss
            ${aliyun.version}
        

        
            com.alibaba
            fastjson
            ${fastjson.version}
        

        
            org.apache.httpcomponents
            httpclient
            ${httpclient.version}
        

        
            org.codehaus.jettison
            jettison
            ${jettison.version}
        

        
            org.springframework.boot
            spring-boot-starter-websocket
        

        
            org.springframework.boot
            spring-boot-starter-cache
            ${cache.version}
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.project-lombok
                            lombok
                        
                    
                
            
        
    


 

三、解决方法

将pom.xml文件中的Maven打包插件注释掉,只有存在启动类的模块(server模块)保留,注意父工程中的Maven打包插件也要注释掉。

Maven打包插件:


    org.springframework.boot
    spring-boot-maven-plugin

因为是单体架构的项目,所以启动类有且只有一个,其他模块有启动类或者是测试类都是没有意义的。 

在父工程中使用生命周期package进行打包,这时就不会出现上面的错误了。需要注意的是打包过程中会对测试类中的方法进行测试,可能会出错。

例如我在测试类中写了一个测试Redis数据库的方法,但是打包过程中我的Redis服务并没有启动,所以打包失败了。

解决方法是直接跳过测试的过程:

Maven多模块项目打包:Unable to find main class_第2张图片

切换到”跳过测试“模式,再进行打包就不会受测试类的影响了。 

打包完成后,在server模块的target目录下可以找到对应的jar包。鼠标右键jar包,点击运行,也是能成功运行的。

 

四、修改pom文件

common模块



    4.0.0
    
        com.hange_summer
        report_system
        0.0.1-SNAPSHOT
    
    common
    0.0.1-SNAPSHOT
    common
    common

    
        17
    

    
        
            org.springframework.boot
            spring-boot-starter
        
    

    


pojo模块



    4.0.0
    
        com.hange_summer
        report_system
        0.0.1-SNAPSHOT
    
    pojo
    0.0.1-SNAPSHOT
    pojo
    pojo

    
        17
    

    
        
            org.springframework.boot
            spring-boot-starter
        
    

    


server模块(不改动)



    4.0.0
    
        com.hange_summer
        report_system
        0.0.1-SNAPSHOT
    
    server
    0.0.1-SNAPSHOT
    server
    server

    
        17
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            com.hange_summer
            common
            0.0.1-SNAPSHOT
        

        
            com.hange_summer
            pojo
            0.0.1-SNAPSHOT
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


父工程



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        3.2.1
         
    
    com.hange_summer
    report_system
    0.0.1-SNAPSHOT

    pom
    
        common
        pojo
        server
    
    report_system
    report_system

    
        17
        8.2.0
        3.0.3
        0.9.1
        2.3.1
        1.1.1
        2.3.3
        4.1.0
        4.1.2
        4.1.2
        1.24.0
        3.15.1
        1.2.83
        4.5.13
        1.5.4
        2.7.3
    

    
        
            org.springframework.boot
            spring-boot-starter-security
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybatis.version}
        

        
            com.mysql
            mysql-connector-j
            ${mysql.version}
            runtime
        

        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter-test
            3.0.3
            test
        
        
            org.springframework.security
            spring-security-test
            test
        

        
            io.jsonwebtoken
            jjwt
            ${jjwt.version}
        

        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

        
            javax.xml.bind
            jaxb-api
            ${jaxb-api.version}
        
        
            javax.activation
            activation
            ${activation.version}
        
        
        
            org.glassfish.jaxb
            jaxb-runtime
            ${jaxb-runtime.version}
        

        
            com.github.xiaoymin
            knife4j-openapi3-jakarta-spring-boot-starter
            ${knife4j.version}
        

        
            org.springframework.boot
            spring-boot-starter-aop
        

        
            org.springframework.boot
            spring-boot-starter-data-redis
        

        
            org.apache.poi
            poi
            ${poi.version}
        
        
            org.apache.poi
            poi-ooxml
            ${poi-ooxml.version}
        

        
            org.apache.commons
            commons-compress
            ${commons-compress.version}
        

        
            com.aliyun.oss
            aliyun-sdk-oss
            ${aliyun.version}
        

        
            com.alibaba
            fastjson
            ${fastjson.version}
        

        
            org.apache.httpcomponents
            httpclient
            ${httpclient.version}
        

        
            org.codehaus.jettison
            jettison
            ${jettison.version}
        

        
            org.springframework.boot
            spring-boot-starter-websocket
        

        
            org.springframework.boot
            spring-boot-starter-cache
            ${cache.version}
        
    

    


你可能感兴趣的:(警告异常,maven,spring,boot,java,后端)