java - 使用来自 mainClassName 的 gradle 设置 Main-Class header

标签 java gradle jar build.gradle manifest.mf

如何获取 jar 任务以从 mainClassName 变量设置 Main-Class header ?

thufir@dur:~/NetBeansProjects/props$ 
thufir@dur:~/NetBeansProjects/props$ gradle clean assembleDist;java -jar build/libs/props.jar 

BUILD SUCCESSFUL in 1s
6 actionable tasks: 6 executed

Publishing build scan...
https://gradle.com/s/qwirajeu4guhq

no main manifest attribute, in build/libs/props.jar
thufir@dur:~/NetBeansProjects/props$ 
thufir@dur:~/NetBeansProjects/props$ cat build.gradle 
plugins {
    id 'com.gradle.build-scan' version '1.8' 
    id 'java'
    id 'application'
}

buildScan {
    licenseAgreementUrl = 'https://gradle.com/terms-of-service'
    licenseAgree = 'yes'
}

buildScan {
    publishAlways()
}

sourceCompatibility = 1.9
targetCompatibility = 1.9

mainClassName = 'net.bounceme.dur.props.Main'

jar {
    manifest {
//    attributes 'Main-Class': mainClassName
    attributes 'Class-Path': configurations.compile.collect { it.getName() }.join(' ')
    }
}

repositories {
    jcenter()
}

dependencies {
    // This dependency is found on compile classpath of this component and consumers.
  //  compile 'com.google.guava:guava:22.0'

    // Use JUnit test framework
//    testCompile 'junit:junit:4.12'
}


thufir@dur:~/NetBeansProjects/props$ 

最佳答案

version '1.0'

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

mainClassName = 'blah.blah.blah.blah.myMain'

jar {
  manifest {
    attributes(
      'Main-Class': mainClassName
    )
  }
}

这将产生一个 MANIFEST.MF :

Manifest-Version: 1.0
Main-Class: blah.blah.blah.blah.myMain

关于java - 使用来自 mainClassName 的 gradle 设置 Main-Class header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46864359/

相关文章:

Android Library Project 作为已编译的 JAR 库

java - 从父类类型字段访问子类方法

java - 如何在 Spring Boot 应用程序中的其他类中 Autowiring bean?

java - 无法使用 JMF 播放 mp3 流

java - 如何在 Hibernate 和 Gradle 中使用模板?

java - Maven:自动安装外部JAR

java - 用于本地 Spring Boot 开发的 Docker-Compose

java - Android Studio 中的 Gradle 构建问题

在 buildSrc 下找不到 gradle 插件依赖项

java - 如何使用相同的字符串在 IDE 和 .jar 中加载资源