2013-08-24 7 views
15

मैं दूसरे मुख्य क्लास के लिए स्टार्टऑन बनाने के लिए ग्रैडल "एप्लिकेशन" प्लगइन का उपयोग करना चाहता हूं। क्या यह संभव है? यहां तक ​​कि यदि एप्लिकेशन प्लगइन में यह कार्यक्षमता नहीं है, तो क्या एक अलग मुख्य क्लास के लिए स्क्रिप्ट की दूसरी जोड़ी बनाने के लिए स्टार्टअप कार्य का लाभ उठाना संभव है?क्या ग्रेडल 'एप्लिकेशन' प्लगइन का उपयोग करके एकाधिक मुख्य कक्षाएं निर्दिष्ट करना संभव है

+0

यह उत्तर देखें: http://stackoverflow.com/questions/21241767/multiple-startscript-using-gradle-for-heroku – Phil

उत्तर

4

आप CreateStartScripts प्रकार के कई कार्य बना सकते हैं और प्रत्येक कार्य में आप एक अलग mainClassName कॉन्फ़िगर करते हैं। सुविधा के लिए, आप इसे एक लूप में कर सकते हैं।

+3

क्या कोई मौजूदा कोड है? दस्तावेज़ीकरण केवल एक अच्छी नौकरी नहीं करता है कि हम उन लोगों के लिए 'लूप में' कैसे करें, जो एक ही समय में ग्रोवी सीखते हैं और धीरे-धीरे सीखते हैं। – Core

10

अपने जड़ build.gradle को कुछ इस तरह करें:

// Creates scripts for entry points 
// Subproject must apply application plugin to be able to call this method. 
def createScript(project, mainClass, name) { 
    project.tasks.create(name: name, type: CreateStartScripts) { 
    outputDir  = new File(project.buildDir, 'scripts') 
    mainClassName = mainClass 
    applicationName = name 
    classpath  = project.tasks[JavaPlugin.JAR_TASK_NAME].outputs.files + project.configurations.runtime 
    } 
    project.tasks[name].dependsOn(project.jar) 

    project.applicationDistribution.with { 
    into("bin") { 
     from(project.tasks[name]) 
     fileMode = 0755 
    } 
    } 
} 

तो इसे कहते हैं या तो जड़ से या उप से इस प्रकार है:

// The next two lines disable the tasks for the primary main which by default 
// generates a script with a name matching the project name. 
// You can leave them enabled but if so you'll need to define mainClassName 
// And you'll be creating your application scripts two different ways which 
// could lead to confusion 
startScripts.enabled = false 
run.enabled = false 

// Call this for each Main class you want to expose with an app script 
createScript(project, 'com.foo.MyDriver', 'driver') 
+2

कोई भी मौका हम स्टार्टअप स्क्रिप्ट बना सकते हैं जो प्रोग्राम के कमांड लाइन तर्क सेट अप करता है? –

3

मैं इन उत्तरों के दोनों के कुछ हिस्सों संयुक्त अपेक्षाकृत सरल समाधान पर पहुंचने के लिए:

task otherStartScripts(type: CreateStartScripts) { 
    description "Creates OS specific scripts to call the 'other' entry point" 
    classpath = startScripts.classpath 
    outputDir = startScripts.outputDir 
    mainClassName = 'some.package.app.Other' 
    applicationName = 'other' 
} 

distZip { 
    baseName = archivesBaseName 
    classifier = 'app' 
    //include our extra start script 
    //this is a bit weird, I'm open to suggestions on how to do this better 
    into("${baseName}-${version}-${classifier}/bin") { 
     from otherStartScripts 
     fileMode = 0755 
    } 
} 

स्टार्टScripts तब बनाया जाता है जब आवेदक आयन प्लगइन लागू किया गया है।

+0

एप्लिकेशनडिस्ट्रिब्यूशन के बारे में कैसे करें (अन्य स्टार्टScripts) {'bin' में} – Joel

संबंधित मुद्दे

 संबंधित मुद्दे