首页 文章

Gradle Output Jar没有Main-Class

提问于
浏览
7

我有以下简单的build.gradle文件:

apply plugin: 'application'
apply plugin: 'java'

mainClassName = 'com.kurtis.HelloGradle'

以下单个java文件位于 src/main/java/com/kurtis/HelloGradle.java

package com.kurtis;

public class HelloGradle {

    public static void main(String[] args) {

        System.out.println("Hello gradle");
    }

}

但是,如果我运行 gradle build ,我会在 build/lib 目录中找到一个没有主类设置的jar . 它的清单文件没有 Main-Class 条目 . 为什么是这样?

1 回答

  • 13

    这是由于应用程序插件的工作方式 . mainClassNameapplication 插件使用的属性,当它创建可执行jar时,它不需要在清单中有 Main-Class ,因为它不使用它 .

    如果你需要在你的jar中有 Main-Class ,那么你必须提供 java 插件的 jar 配置,如下所示:

    jar {
      manifest {
        attributes(
          'Main-Class': 'com.kurtis.HelloGradle'
        )
      }
    }
    

    否则,只需使用由应用程序插件生成的可执行文件,无论是通过 run 任务还是通过它可以为您创建的发行版,使用脚本来运行应用程序及其所有依赖项 .

相关问题