java - gradle 构建中缺少 mainClassName 属性的 Gradle 错误

标签 java gradle

我有两个子项目的 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'.

我的配置:
根 - 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')
}

根 - setting.gradle:
include 'app'
include 'core'

APP 项目 - 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。

最佳答案

application插件在捆绑应用程序时需要知道主类。

在您的情况下,您应用 application每个子项目的插件,而无需为每个子项目指定主类。

我遇到了同样的问题,并通过指定与 apply plugin: 'application' 相同级别的“mainClassName”来修复它。 :

apply plugin: 'application'
mainClassName = 'com.something.MyMainClass'

如果你想在 gradle.properties 中指定它文件你可能必须把它写成:projectName.mainClassName = ..

关于java - gradle 构建中缺少 mainClassName 属性的 Gradle 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36917530/

相关文章:

java - @GenerateValue ID 尝试复制现有数据库 MySQL Java 中条目的主键

java - @Transactional 注解的方法是否等待 Spring 中的成功提交?

android - 使用Gradle将Unirest添加到Android Studio

android-studio - 在 Android Studio 中调试 gradle 文件

java - 为什么当我在 System.out.println 语句之外调用 System.nanoTime() 时,我的程序运行得很快?

java - 在xml中设置bean后,如何实例化对象?

java - 为什么 Retrofit 无法解决 Android 上的“无连接 - 检查互联网连接”问题?

gradle - 使用适用于Java的Google Cloud Translation客户端库时遇到错误(Android)

gradle - 如何为特定项目禁用 war 插件

groovy - Gradle ant 构建文件在配置阶段不可用