我有两个子项目的 graddle 配置,当我想要 构建 项目时,会抛出以下错误:
Executing external task 'build'...
:core:compileJava
:core:processResources UP-TO-DATE
:core:classes
:core:jar
:core:startScripts FAILED
FAILURE: Build failed with an exception.
* What went wrong:
A problem was found with the configuration of task ':core:startScripts'.
> No value has been specified for property 'mainClassName'.
我的配置:ROOT - build.gradle:
subprojects {
apply plugin: 'java'
apply plugin: 'application'
group = 'pl.morecraft.dev.morepianer'
repositories {
mavenLocal()
mavenCentral()
}
run {
main = project.getProperty('mainClassName')
}
jar {
manifest {
attributes 'Implementation-Title': project.getProperty('name'),
'Implementation-Version': project.getProperty('version'),
'Main-Class': project.getProperty('mainClassName')
}
}
}
task copyJars(type: Copy, dependsOn: subprojects.jar) {
from(subprojects.jar)
into project.file('/jars')
}
ROOT - setting.gradle:
include 'app'
include 'core'
应用程序项目 - build.gradle:
EMPTY
核心项目 - build.gradle:
dependencies {
compile 'com.google.dagger:dagger:2.4'
compile 'com.google.dagger:dagger-compiler:2.4'
}
以及两个子项目(类似)- gradle.properties:
version = 0.1-SNAPSHOT
name = MorePianer Core Lib
mainClassName = pl.morecraft.dev.morepianer.core.Core
我尝试在很多地方添加 mainClassName 属性,但它不起作用。这甚至更奇怪,它在几天前就按原样工作了。我是第一次使用 gradle,我正在考虑切换回 maven。
原文由 Mateusz Stefaniak 发布,翻译遵循 CC BY-SA 4.0 许可协议
application
插件在捆绑应用程序时需要知道主类。在您的情况下,您为每个子项目应用了
application
插件,而没有为每个子项目指定主类。我遇到了同样的问题,并通过在与
apply plugin: 'application'
相同的级别指定“mainClassName”来修复它:如果你想在
gradle.properties
文件中指定它,你可能必须将它写成:projectName.mainClassName = ..