maven环境下java和scala混合开发如何打依赖包?

在实际的项目开发中,很多时候我们可能会用java和scala混合开发,比如Flink或者Spark的项目,他们两个可以相互调用,也有各自的优缺点,结合起来使用非常的方便,但是在编译打包的时候很多朋友遇到要么Java的包没打进去,或者Scala的包没打进去,运行的时候报各种找不到jar包的错,下面介绍一种打包的方法,可以运行项目里面的任何一个方法,供大家参考,当然还有很多其他的打包方式.

直接看下面的maven里面的配置


    
        
        
            net.alchim31.maven
            scala-maven-plugin
            3.2.2
            
                incremental
            
            
                
                    
                        compile
                        testCompile
                    
                
            
        
        
        
            maven-compiler-plugin
            
            3.6.1
            
            
                1.8
                1.8
                
                UTF-8
            
        
        
        
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
                
                    package
                    
                        shade
                    
                    
                        
                            
                                
                                *
                            
                        
                        
                            
                                *:*
                                
                                
                                    META-INF/*.SF
                                    META-INF/*.DSA
                                    META-INF/*.RSA
                                
                            
                        
                    
                
            
        
    

里面需要配置java,scala编译的插件,注意版本,不同的版本可能会出现不匹配的问题,这里maven打包的插件用的是maven-shade-plugin插件,mainClass里面设置主方法的包名.类名,你可以指定具体的某一个,也可以不指定,直接写一个*,这样打完包后就可以调用项目里面所有的方法.excludes里面可以过滤掉不需要的jar包,根据自己的需要进行过滤.

然后直接执行mvn package 即可,因为我们 goal生命周期 package 加入了shade 里面了 ,所以会执行compile 编译java 以及 scala 然后使用shade 打包 。如下图所示

maven环境下java和scala混合开发如何打依赖包?_第1张图片

点击package就可以了,打完包后,会在项目的target目录下面生成依赖包

maven环境下java和scala混合开发如何打依赖包?_第2张图片

这样就可以随意运行项目里面的java类和scala类了,java和scala之间的相互调用也不会报找不到jar包了.

     

欢迎大家关注我的公众号

你可能感兴趣的:(maven)