IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)

最近在idea中使用maven打包一个jar,各种踩坑,记录如下。

首先,本次的项目是 含maven的java普通项目

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第1张图片

踩坑开始。

第一个就是,java: 程序包com.sun.istack.internal不存在

这是因为我在项目中引用了。

import com.sun.istack.internal.NotNull;

这个类。

解决办法,如下。

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第2张图片

在 pom.xml 找到。


    maven-compiler-plugin
    3.8.0

改为:


    maven-compiler-plugin
    3.8.0
    
        
            
            -Xlint:deprecation
        
        
            
            
            
            ${java.home}\lib\rt.jar;${java.home}\lib\jce.jar
        
    

完美解决。


打包jar(不含依赖)

直接按下图操作。

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第3张图片

因为 maven-archetype-quickstart 中已经包含了一系列常用的插件,其中就有 maven-jar-plugin 所以可以直接按上图打包jar

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第4张图片

生成的 jar 会在 项目名/target/项目名.jar 中 。

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第5张图片


打包jar(含依赖,踩坑重点)

关于在Maven中的 pluginManagement 请点击查看。

初次使用maven的不太知道这些,一般都会直接在 pom.xml build->pluginManagement 子项下直接这么写。然后,就没有然后了...也就是始终无法将引用的依赖一起打包到 jar 中。

伪代码:


    
        

            ...

            
                maven-assembly-plugin
                3.3.0
                
                    
                        package
                        
                            single
                        
                    
                
                
                    
                        jar-with-dependencies
                    
                
            
        
    

因为 pluginManagement 后面有这一段提示。

所以,解决办法:可以在 build 中添加一个未加锁的

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第6张图片

伪代码:


    
        ...
    

    
    
        
            maven-assembly-plugin
            3.3.0
            
                
                    package
                    
                        single
                    
                
            
            
                
                    jar-with-dependencies 
                
                 
            
        
    

然后再双击运行 package 执行打包(记得 clean),关于自定义描述文件,可看 这篇文章 。


成功含赖打包

第二个 -jar-with-dependencies.jar 就是带有依赖的jar了。

IDEA 2020.02 中使用 Maven 打包jar(不含引用依赖,含引用依赖)_第7张图片

你可能感兴趣的:(IntelliJ,IDEA,maven,jar,java,intellij,idea)