从此
上网
📄文章 #️⃣专题 🌐上网 📺 🛒 📱

Java jar jpackage

综述

jar

Gradle处理依赖jar包类库:
  jar {
    //manifest { attributes('Main-Class': application.mainClass) } // 未指定--main-class时设置
    //from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
    doLast { // 如果不包裹doLast,jar包内会缺失*.class等。
        copy {
            from configurations.runtimeClasspath
            into jar.destinationDirectory.asFile.get() // 混淆则另选目录 into "$buildDir/release-files/"
        }
    }
  }

jpackage

jpackage打包用法
C:\Progra~1\Java\jdk-21\bin\jpackage --input C:\Users\aw\Documents\NetBeansProjects\jpkg\app\build\libs\ --main-jar app.jar --main-class com.jpkg.App

其他参数:--win-console 显示控制台日志; --verbose 显示详细信息

Gradle命令行方式打包:

  version="0.0.1"
  task jpackage(type: Exec) {
    dependsOn jar //["jar","myProguardTask"]
    //  C:\Users\aw\AppData\Local\Temp\ComeInHandy\
    def appTempPath = "${System.getProperty('java.io.tmpdir')}ComeInHandy/";
    def cmd = ["${javaHome}/bin/jpackage",
        "--name", "得心应手","--install-dir","ComeInHandy",
        '--dest', "${appTempPath}",
        '--input', jar.destinationDirectory.get(),
        '--main-jar', jar.archiveFileName.get(),
        '--main-class', 'com.openle.v1app.comeinhandy.App',
        '--win-console', // 显示控制台日志
        '--verbose']
    println cmd.join(" ")
    commandLine cmd
  }