Gradle Output Jar没有Main-Class

时间:2017-03-28 23:51:24

标签: java gradle jar

我有以下简单的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 个答案:

答案 0 :(得分:13)

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

如果你的jar中需要jar,那么你必须按照以下java插件的jar { manifest { attributes( 'Main-Class': 'com.kurtis.HelloGradle' ) } } 配置提供它:

run

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