java多模块开发打包踩坑(找不到符号、jar中没有主清单属性)

ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.5.1:repackage (repackage) on project factory-common: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.5.1:repackage failed: Unable to find main class -> [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] PluginExecutionException - Apache Maven - Apache Software Foundation

一、分析

遇到的错误信息表明在使用 Maven 构建 Spring Boot 项目时出现了问题。具体来说,错误发生在执行 spring-boot-maven-pluginrepackage 目标时,Maven 无法找到主类(main class)。 

对于项目整体来说,只有web模块是暴露出来的有启动类(就是main),其他的不需要,你如果非得这样给他加个主类就会报错
主类:com.example.MainClass


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            2.5.1
            
                
                    
                        repackage
                    
                    
                        com.example.MainClass
                    
                
            
        
    

不出意外一些模块就会报错:找不到符号

对于不需要的模块我们可以不打包(在不需要打包的模块加上即可)

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

我的项目结构

java多模块开发打包踩坑(找不到符号、jar中没有主清单属性)_第1张图片

二、正解

我们只需要在父工程的pom模块加上下面代码即可,对于其他的模块不用管

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    ${java.version}
                    ${java.version}
                    ${project.build.sourceEncoding}
                
            
        
    

参考我完整的pom



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.1
         
    
    com.itfly
    factory
    0.0.1-SNAPSHOT
    pom
    
        factory-common
        factory-interface
        factory-web
        factory-code
        data_standard
        data-assets
        database_table
        python_script
    
    
        UTF-8
        8
    
    
        
        
            org.springframework.boot
            spring-boot-starter
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.projectlombok
            lombok
            true
        

        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            mysql
            mysql-connector-java
            8.0.33
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.1
        

        
        
            com.baomidou
            mybatis-plus-generator
            3.4.1
        
        
            org.apache.velocity
            velocity-engine-core
            2.2
        
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        

        
        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
        
            io.swagger
            swagger-models
            1.5.21
        
        
            com.github.xiaoymin
            swagger-bootstrap-ui
            1.9.6
        
        
        
            org.springframework.boot
            spring-boot-starter-validation
        

        
            com.belerweb
            pinyin4j
            2.5.0
        

        
            com.alibaba
            fastjson
            1.2.58
        
        
            org.apache.httpcomponents
            httpclient
            4.5.10
        
        
            com.google.code.gson
            gson
            2.8.7
        
        
            org.reflections
            reflections
            0.9.10
        
        
        
            cn.dev33
            sa-token-spring-boot-starter
            1.39.0
        
        
        
            cn.dev33
            sa-token-redis
            1.39.0
        
        
        
            cn.dev33
            sa-token-jwt
            1.39.0
        
        
            org.apache.poi
            poi-ooxml
            5.2.3
        
        
        
            com.aliyun.oss
            aliyun-sdk-oss
            3.15.1
        
        
            com.squareup.okhttp3
            okhttp
            4.10.0 
        
    
    

    


    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    ${java.version}
                    ${java.version}
                    ${project.build.sourceEncoding}
                
            
        
    


然后clean过后再打包就行

三、测试jar包

打开项目所在的文件夹,cmd,输入命令java -jar -(你打包的jar的名称)

不出意外还是会报错
D:\Desktop\data_factory\data-factory\demo\factory-web\target>java -jar factory-web-0.0.1-SNAPSHOT.jar factory-web-0.0.1-SNAPSHOT.jar中没有主清单属性

解决办法 

在web模块的pom中加入

    
        ${project.artifactId}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

参考完整的pom


    4.0.0
    
        com.itfly
        factory
        0.0.1-SNAPSHOT
    

    factory-web
    jar

    factory-web
    http://maven.apache.org

    
        UTF-8
    

    

        
            com.itfly
            factory-code
            0.0.1-SNAPSHOT
        
        
            com.itfly
            factory-interface
            0.0.1-SNAPSHOT
        
        
            com.itfly
            data_standard
            0.0.1-SNAPSHOT
        
        
            com.itfly
            data-assets
            0.0.1-SNAPSHOT
        
        
            com.itfly
            database_table
            0.0.1-SNAPSHOT
        
        
            com.itfly
            python_script
            0.0.1-SNAPSHOT
        
        
            junit
            junit
            3.8.1
            test
        
    
    
        ${project.artifactId}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

再重新打包

再进行测试,可以看到启动成功了

java多模块开发打包踩坑(找不到符号、jar中没有主清单属性)_第2张图片

完结撒花 

你可能感兴趣的:(java,开发语言,spring,maven)