springboot 使用java+kotlin混合开发,基于maven打包失败

背景

鉴于springboot的快速开发以及kotlin的简介语法,公司新项目使用kotlin进行开发。开发工具使用IDEA,本地运行正常,但是通过maven进行项目打包的时候出现异常

工具

springboot 【2.1.2】  kotlin【1.2.7】jdk【1.8】maven【3.5】

问题分析

查阅网上资料说 运行 

mvn clean kotlin:compile package -Dmaven.test.skip=true,然而并没有什么卵用;

分析:打包问题基本可以先猜测是pom的配置问题,先查看build这块的内容

pom.xml内容如下

	。。。省略部分
    
		com.fasterxml.jackson.module
		jackson-module-kotlin
	
	
		org.jetbrains.kotlin
		kotlin-reflect
	
	
		org.jetbrains.kotlin
		kotlin-stdlib-jdk8
	
 

        ${project.basedir}/src/main/kotlin
        ${project.basedir}/src/test/kotlin
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
                org.jetbrains.kotlin
                kotlin-maven-plugin
                
                    
                        -Xjsr305=strict
                    
                    
                        spring
                    
                    1.8
                
                
                    
                        org.jetbrains.kotlin
                        kotlin-maven-allopen
                        ${kotlin.version}
                    
                
            
        
    

执行mvn package 打包操作,控制台报错:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.2.RELEASE:repackage (default) on project srv-base: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:2.1.2.RELEASE: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] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Unable to find main class -> [Help 1] :说明未指定运行主类,spring-boot-maven-plugin中指定启动类路径注意:启动类为Kotlin的.kt文件时,指定的类名后需要加上Kt,【com.xxx.xxx.ApplicationKt否则包启动无法还是无法找到主类

 
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
                
                    com.xxx.xxx.ApplicationKt
                
            

再次打包没有报错,但是运行时还是找不到主类。。。。。查看生成的包内容发现只有java编写的类有生成到包目录下,kotlin文件都未正常生成到包目录中

springboot 使用java+kotlin混合开发,基于maven打包失败_第1张图片

一脸懵逼,应该是kotlin编译器配置有问题,网上查阅后发现需要指定kotlin编译的项目路径,修改pom中kotlin-maven-plugin 指定资源路径

            
                org.jetbrains.kotlin
                kotlin-maven-plugin
                
                    
                        -Xjsr305=strict
                    
                    1.8
                
                
                    
                        compile
                        
                            compile
                        
                        
                            
                                ${project.basedir}/src/main/kotlin
                                
                            
                        
                    
                    
                        test-compile
                        
                            test-compile
                        
                        
                            
                                ${project.basedir}/src/test/kotlin
                                
                            
                        
                    
                
            

再次打包-》运行,一切正常

已经被maven玩了好几次,这次又被kkotlin-maven-plugin玩了一次,记录一下避免忘记

参考链接:http://www.kotlincn.net/docs/reference/using-maven.html

 

 

你可能感兴趣的:(kotlin,maven)