java – Gradle Output Jar没有Main-Class

前端之家收集整理的这篇文章主要介绍了java – Gradle Output Jar没有Main-Class前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下简单的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 / lib目录中获得一个没有主类设置的jar.它的清单文件没有Main-Class条目.为什么是这样?

解决方法

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

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

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

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

猜你在找的Java相关文章