带有gradle的影子插件的清单问题
我正在使用GradleV3.4和shadow插件v1.2.4。我在build.gradle文件中使用以下命令将jar文件发布到本地maven repo带有gradle的影子插件的清单问题,gradle,build.gradle,gradle-shadow-plugin,Gradle,Build.gradle,Gradle Shadow Plugin,我正在使用GradleV3.4和shadow插件v1.2.4。我在build.gradle文件中使用以下命令将jar文件发布到本地maven repo mainClassName = 'some.thing.SomeClient' jar { manifest { attributes( 'Class-Path': configurations.compile.collect { it.getName() }
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时,将错误复制到下面
错误
该问题是由gradle.properties中的mainClassName属性导致的异常。将其从gradle.properties中删除修复了该问题 也可能是在应用插件后设置了mainClassName,这似乎是一个错误。快速而肮脏的解决方案是在应用插件之前设置属性,如:
我已经发布了包含和不包含mainclassname的jar文件,我也检查了jar中的manifest文件以进行确认。不管我为发布的jar文件选择了哪个选项,我仍然会得到相同的错误。我的gradle.settings中有mainClassName属性——将其从gradle.settings中删除修复了这个问题
/**
* 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).
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'
// ...