You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle执行run任务启动Java应用时配置显示启动闪屏

问题说明

启动Java应用时,之前通过如下Ant target配置实现启动闪屏展示:

<target name="default" description="run program via classpath">
    <echo message="var.distribute.version.type=${var.distribute.version.type}" />
    <ac:switch value="${var.distribute.version.type}">
        <ac:case value="${prop.distribute.version.lite}">
            <ac:runtarget target="compile-lite" />
        </ac:case>
        <ac:case value="${prop.distribute.version.pro}">
            <ac:runtarget target="compile-pro" />
        </ac:case>
    </ac:switch>
    <echo>Running with classpath=${toString:run.classpath}</echo>
    <java classname="${main.class}" fork="true">
        <jvmarg value="-splash:${images.dir}/splash.png" />
        <classpath refid="run.classpath" />
    </java>
</target>

上述Ant配置可以正常生效,现在需要在Gradle中实现同等的启动闪屏效果,当前通过gradle run命令启动Java应用,需要完成对应配置。

实现方法

gradle run对应的是application插件提供的JavaExec类型任务,直接给这个任务传入和Ant配置一致的JVM闪屏参数即可,配置逻辑和原Ant完全对齐:

  • 首先确认项目已引入application插件(支持run任务的必要插件)
  • 配置主类全限定名,对应Ant配置里的${main.class}
  • 给run任务添加-splashJVM参数,指向闪屏文件的路径,和Ant里的jvmarg配置一致

Groovy DSL 配置(常规build.gradle格式)

把下面的配置加到项目的build.gradle文件中,替换掉注释里标注的自定义路径和主类名即可:

plugins {
    id 'java'
    id 'application'
}

// 替换为你自己的项目主类全限定名
application {
    mainClass = 'com.example.YourMainClass'
}

// 替换为你实际存放splash.png的目录路径
def imagesDir = file("path/to/your/images/dir")

tasks.named('run') {
    // 传入闪屏JVM参数,用绝对路径避免工作目录差异导致找不到文件
    jvmArgs "-splash:${imagesDir.absolutePath}/splash.png"
}

Kotlin DSL 配置(build.gradle.kts格式)

如果你的项目用的是Kotlin格式的Gradle配置,用下面的写法:

plugins {
    java
    application
}

application {
    // 替换为你自己的项目主类全限定名
    mainClass.set("com.example.YourMainClass")
}

// 替换为你实际存放splash.png的目录路径
val imagesDir = file("path/to/your/images/dir")

tasks.named<JavaExec>("run") {
    jvmArgs("-splash:${imagesDir.absolutePath}/splash.png")
}

配置完成后直接执行gradle run启动应用,就能看到和原Ant配置一致的闪屏效果。

注意:不要直接写相对路径指向splash.png,Gradle执行run任务时的工作目录默认是项目根目录,直接拼接相对路径很容易因为目录层级不对找不到闪屏文件,用文件对象取绝对路径的写法最稳妥。


内容的提问来源于stack exchange,提问作者Alexei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 16:42:16