信步漫谈之Maven——打可运行Jar包


目录
  • 1 目标
  • 2 程序结构
  • 3 Maven 的 POM 脚本
  • 4 打包结构
  • 5 参考资料(感谢)


1 目标

将本地 lib 和依赖 jar 包一起打为一个可执行的 jar 包。

2 程序结构

主项目:com.alfred.maven.packagejar-exec
引入本地 jar 包:maven-demo01-1.0.0-SNAPSHOT.jar
引入 maven 依赖包:log4j-1.2.12.jar

  • 主项目结构
com.alfred.maven.packagejar-exec
  ∟ lib
      ∟ maven-demo01-1.0.0-SNAPSHOT.jar
  ∟ src
      ∟ main
          ∟ java
              ∟ com.alfred.maven.packagejarexec
                  ∟ Main
      ∟ resources
          ∟ log4j.properties
  ∟ pom.xml
  • 主项目 Main 代码
package com.alfred.maven.packagejarexec;

import com.alfred.maven.demo01.MavenDemo01;
import org.apache.log4j.Logger;

/**
 * @Author: alfred
 * @Date: 2020/11/24
 * @description:
 */
public class Main {

    private static Logger logger = Logger.getLogger(Main.class);

    public static void main(String[] args) {
        if(args == null || args.length == 0){
            logger.info("packagejar exec args is null");
        }else{
            logger.info("packagejar exec args.length = "+args.length);
        }
        logger.info("maven demo01 say:"+MavenDemo01.sayName());
    }

}
  • Demo01 的 MavenDemo01 代码
package com.alfred.maven.demo01;

/**
 * @Author: alfred
 * @Date: 2020/11/24
 * @description:
 */
public class MavenDemo01 {
    public static String sayName(){
        return "demo01";
    }
}

3 Maven 的 POM 脚本

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    com.alfred.maven
    maven-packagejar-exec
    1.0.0-SNAPSHOT
    jar
    
        概述:【Maven技术研究】打可执行 jar 包
        目标:将本地 lib 和依赖 jar 包一起打为一个可执行的 jar 包
        实现效果:输入 jar 包参数,打印日志输出参数个数,并调用本地jar包打印返回信息
        1)主函数:com.alfred.maven.packagejarexec.Main
        2)本地依赖包路径:lib(存放demo01)
        3)maven 依赖包:log4j
    

    
        UTF-8
        1.8
        1.8
        1.2.12
    

    
        
        
            log4j
            log4j
            ${log4j.version}
        
        
        
            com.alfred.maven
            maven-demo01
            1.0.0-SNAPSHOT
            system
            ${project.basedir}/lib/maven-demo01-1.0.0-SNAPSHOT.jar
        
    

    
        
            
            
                maven-clean-plugin
                3.1.0
                
                    
                        auto-clean
                        initialize
                        
                            clean
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-jar-plugin
                3.0.2
                
                    
                        
                            com.alfred.maven.packagejarexec.Main
                        
                    
                
            
            
                com.jolira
                onejar-maven-plugin
                1.4.4
                
                    
                        
                            
                            packagejar-exec.jar
                            true
                            onejar
                        
                        
                            one-jar
                        
                    
                
            

            























        
    

4 打包结构

packagejar-exec.jar
  ∟ META-INF
  ∟ com.simontuffs.onejar
      ∟ ...(打包组件的编译程序,省略)
  ∟ doc
  ∟ lib
      ∟ log4j-1.2.12.jar
      ∟ maven-demo01-1.0.0-SNAPSHOT.jar
  ∟ main
      ∟ maven-packagejar-exec-1.0.0-SNAPSHOT.jar
  ∟ src
      ∟ ...(打包组件的编译程序,省略)

5 参考资料(感谢)

将Maven项目打包成可执行jar文件(引用第三方jar)