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'
    )
  }
}

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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...