簡體   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