如何从jar
变量中获取Main-Class
任务来设置mainClassName
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