使用Maven打包依赖本地jar包的可执行jar包

背景

这两天打包一个Maven工程,这个工程同时依赖了:

  • Maven中央仓库的包
  • 本地的jar包
  • JetBrains GUI Designer 生成的 form 文件
    打包的时候遇到了一点麻烦,抛出各种class未定义的异常,折腾了一会,最后发现处理的方式比较简单,不需要像这篇博客里加好几个插件。

解决方法

如果我的项目依赖了项目根目录/lib/yyy.jar这个包,Maven打包的时候不会把这个包加到依赖里面的,首先要把这个jar包声明在pom.xml中:

    
            xxx.xxxx
            yyy
            1.0
            system
            ${project.basedir}/lib/yyy.jar
        

记得替换上面的xxx和yyy。

然后在 pom.xml 中添加插件 maven-assembly-plugin


        
            
               
                

                
                    maven-assembly-plugin
                    
                        
                            
                                cn.edu.cqu.graphics.ui.Entrance
                            
                        
                        
                            src/assembly/package.xml
                        
                    
                

            
        
    

然后在项目的 src/assembly目录下添加一个descriptor文件package.xml


    jar-with-dependencies
    
        jar
    
    false
    
        
            /
            true
            true
            runtime
        
        
            /
            true
            system
        
    

上面的配置跟https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html
里的jar-with-dependencies配置相比,多出了以下内容:

        
            /
            true
            system
        

作用就是把system scope的依赖项加进去。

完成了以上配置后,运行:

mvn clean compile assembly:single -e

就可以打包成功了。

关于 IntelliJ IDEA GUI Designer 的form文件依赖

我觉得最靠谱的方式还是让IDE生成Java代码:


image.png

设置成 Java Source Code后运行一下,就会自动生成form文件对应的Java代码。

你可能感兴趣的:(使用Maven打包依赖本地jar包的可执行jar包)