gradle 影子插件的清单问题
manifest issue for shadow plugin with gradle
我正在使用 gradle v3.4 和影子插件 v1.2.4。我正在使用我的 build.gradle 文件
中的以下内容将 jar 文件发布到我的本地 Maven 仓库
mainClassName = 'some.thing.SomeClient'
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
// 'Main-Class': 'some.thing.SomeClient'
)
}
}
shadowJar {
baseName = 'commons-java'
classifier = null
version = '0.0.1-SNAPSHOT'
}
artifacts {
archives shadowJar
}
jar.dependsOn shadowJar
发布后,我尝试在另一个项目中使用此依赖项,如下所示,但在我 运行 gradle build
/**
* jar/shadow jar (shadow jar extends jar task to create fat jar)
*/
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
//'Main-Class': 'some.thing.SomeClient'
)
}
}
shadowJar {
baseName = 'something-java-client'
classifier = null
version = '0.0.1-SNAPSHOT'
}
artifacts {
archives shadowJar
}
jar.dependsOn shadowJar
错误
The value of a manifest attribute must not be null (Key=Main-Class).
问题是由 gradle.properties 中的 mainClassName 属性导致的异常引起的。从 gradle.properties 中删除它解决了这个问题。
也有可能是mainClassName
是应用插件后设置的,好像是known issue. The quick and dirty solution is to set the property before applying the plugin, like this:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
}
}
plugins {
id "application"
}
mainClassName = 'some.thing.SomeClient'
apply plugin: 'com.github.johnrengelman.shadow'
// ...
我正在使用 gradle v3.4 和影子插件 v1.2.4。我正在使用我的 build.gradle 文件
中的以下内容将 jar 文件发布到我的本地 Maven 仓库mainClassName = 'some.thing.SomeClient'
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
// 'Main-Class': 'some.thing.SomeClient'
)
}
}
shadowJar {
baseName = 'commons-java'
classifier = null
version = '0.0.1-SNAPSHOT'
}
artifacts {
archives shadowJar
}
jar.dependsOn shadowJar
发布后,我尝试在另一个项目中使用此依赖项,如下所示,但在我 运行 gradle build
/**
* jar/shadow jar (shadow jar extends jar task to create fat jar)
*/
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
//'Main-Class': 'some.thing.SomeClient'
)
}
}
shadowJar {
baseName = 'something-java-client'
classifier = null
version = '0.0.1-SNAPSHOT'
}
artifacts {
archives shadowJar
}
jar.dependsOn shadowJar
错误
The value of a manifest attribute must not be null (Key=Main-Class).
问题是由 gradle.properties 中的 mainClassName 属性导致的异常引起的。从 gradle.properties 中删除它解决了这个问题。
也有可能是mainClassName
是应用插件后设置的,好像是known issue. The quick and dirty solution is to set the property before applying the plugin, like this:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
}
}
plugins {
id "application"
}
mainClassName = 'some.thing.SomeClient'
apply plugin: 'com.github.johnrengelman.shadow'
// ...