繁体   English   中英

Gradle任务缺少jar文件的主类

[英]Main class for jar file missing for Gradle task

我一直在尝试使用JavaExec类型的任务执行jar文件JavaExec 但是gradle给了我no main class specified的错误。 我是新手,所以如果有人可以详细说明,那就太好了。 这是我写的任务:

task executeSqlScriptRunnerBeforeTenantCreation(type:JavaExec) {
    description "Execute ssr.runner to install certificates into the device"
    doLast {
        if(scriptRunnerVariables.get('SSR_INTERSECT_MOCK') == 'true') {

            println "Executing SQL Script Runner..."
            println "Adding certificates for mocked intersect service"

            if(scriptRunnerVariables.get('SSR_DB_TYPE') == 'SQL_SERVER') {
                classpath =  file("{$workingDir}\\ssr.runner.jar")
                main =  '-jar' 
                args '-dbtype', "${scriptRunnerVariables.get('SSR_DB_TYPE')}", '-dbhost', "${scriptRunnerVariables.get('SSR_DB_HOST')}", '-dbinstance', 
                "${scriptRunnerVariables.get('SSR_DB_INSTANCE')}", '-dbname', "${scriptRunnerVariables.get('SSR_DB_NAME')}", '-dbuser', "${scriptRunnerVariables.get('SSR_DB_USER')}",
                '-dbpass', "${scriptRunnerVariables.get('SSR_DB_PASS')}", '-sqlscriptpath', "${scriptRunnerVariables.get('SSR_INTERSECT_MOCK_DB_SCRIPT')}"  
            }    
        }
    }
}

首先,您要混合两个阶段: 执行配置 无需为预定义任务添加doLast 这里 然后,这就是(大概)脚本的外观:

task executeSqlScriptRunnerBeforeTenantCreation(type:JavaExec) {
    description "Execute ssr.runner to install certificates into the device"

    if(scriptRunnerVariables.get('SSR_INTERSECT_MOCK') == 'true') {
        println "Configuring SQL Script Runner..."
        println "Adding certificates for mocked intersect service"

        if(scriptRunnerVariables.get('SSR_DB_TYPE') == 'SQL_SERVER') {
            main = '<FULLY QUALIFIED NAME OF CLASS YOU NEED TO RUN>' 
            classpath =  file("{$workingDir}\\ssr.runner.jar")            
            args '-dbtype', 
                 "${scriptRunnerVariables.get('SSR_DB_TYPE')}", 
                 '-dbhost', 
                 "${scriptRunnerVariables.get('SSR_DB_HOST')}", 
                 '-dbinstance', 
                 "${scriptRunnerVariables.get('SSR_DB_INSTANCE')}", 
                 '-dbname', 
                 "${scriptRunnerVariables.get('SSR_DB_NAME')}", 
                 '-dbuser', 
                 "${scriptRunnerVariables.get('SSR_DB_USER')}",
                 '-dbpass', 
                 "${scriptRunnerVariables.get('SSR_DB_PASS')}", 
                 '-sqlscriptpath', 
                 "${scriptRunnerVariables.get('SSR_INTERSECT_MOCK_DB_SCRIPT')}"  
            }
        }
    }
}

main配置错误,应该传递需要运行的Java类的完全限定名称(带有包)。 当然,什么是通过配置 classpathmainargs配置阶段等都将在执行阶段中运行只有在两个表达式if块评估为true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM