Java Gradle输出Jar没有主类

Java Gradle输出Jar没有主类,java,gradle,jar,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(St

我有以下简单的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");
    }

}

但是,如果我运行
gradlebuild
我会在
build/lib
目录中得到一个没有主类集的jar。它的清单文件没有
主类
条目。为什么会这样?

这是因为应用程序插件的工作方式
mainClassName
application
插件使用的属性,当它创建可执行jar时,它不需要在清单中包含
Main类,因为它不使用它

如果您需要在jar中有一个
Main类
,那么您必须按如下方式为
java
插件提供vie
jar
配置:

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

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

可能的副本您是否阅读过文档:?@Opal是的,我一直在阅读这些文件。这是一个很好的解释。为我清理了很多东西。谢谢谢谢不,我想知道我需要这个应用插件做什么。。我将使用java插件和这个。从java-jar x.jar开始就足够了。现在,如果您使用
应用程序
插件并正确设置
mainClassName
,就不需要在
jar
的清单属性中指定
Main Class