2010-11-17 10 views
30

मैं एक Gradle कार्य जो प्रतियां अपने स्थानीय बिल्ला उदाहरण के लिए युद्ध फ़ाइलें उत्पन्न लिखने के लिए कोशिश कर रहा हूँ करने के लिए युद्ध कॉपी:Gradle: बिल्ला निर्देशिका

यह काम नहीं कर रहा है और मुझे यकीन है कि यह कैसे डिबग करने के लिए नहीं कर रहा हूँ:

task deploylocal() << { 
    println "Copy from ${buildDir}\\libs into ${tomcatHome}/webapps" 
    copy{ 
     from "${buildDir}\\libs" 
     into "${tomcatHome}/webapps" 
     include '*.war' 
    } 
    } 

अगला क्या करना है इसके बारे में कोई विचार?

उत्तर

7

वैकल्पिक रूप से, आप लाभ उठाने के लिए gradle-tomcat-plugin

+0

के बिना भी काम करना चाहिए धन्यवाद, मैं इसके बजाय इसका उपयोग कर सकता हूं! – Dave

0

कृपया, सुनिश्चित करें कि युद्ध संग्रह deploylocal से पहले बंडल हो रहा है।

task deploylocal(dependsOn: build) << { 

नायब वहाँ जावा प्लगइन में एक सम्मेलन संपत्ति libsDir नामित है: हो सकता है, आप किसी निर्भरता को परिभाषित कर सकते हैं। यह आपको बेहतर तरीके से बिल्ड/libs निर्देशिका का संदर्भ देने की अनुमति देता है:

task deploylocal(dependsOn: build) << { 
    println "Copy from ${libsDir.getPath()} into ${tomcatHome}/webapps" 
    copy{ 
     from libsDir 
     into "${tomcatHome}/webapps" 
     include '*.war' 
    } 
    } 
0

सबसे पहले, डीबग करने का प्रयास कर रहा है। कार्य निष्पादन के आदेश की जांच करें; देखें कि युद्ध फ़ाइल के उत्पादन के बाद यह चल रहा है या नहीं। यूपी-टू-डेट कहता है या नहीं।

समस्या इस कार्य और आउटपुट के बीच किसी भी निर्भरता की कमी हो सकती है जिसे आप प्रतिलिपि बनाना चाहते हैं।

इस सामान्य कार्य को प्रतिलिपि कार्य के उदाहरण के साथ बदलने का प्रयास करें, और इसे उस प्रति फ़ाइल फ़ाइल पर निर्भर करें जिसे आप प्रतिलिपि बनाने का प्रयास कर रहे हैं।

कुछ इस तरह:

task deployLocal(type: Copy) { 
    dependsOn configurations.archives.buildArtifacts 
    from configurations.archives.allArtifacts*.file 
    into("$tomcatHome/webapps") 
} 
43

युद्ध कार्य कलाकृतियों उत्पन्न के बारे में पता है।

task deployToTomcat(type: Copy) { 
    from war.archivePath 
    into "${tomcatHome}/webapps" 
} 
+1

[केन] (http://stackoverflow.com/users/1375187/ken) [टिप्पणियां] (http://stackoverflow.com/suggested-edits/260494) कि आपने 'dependOn घोषित नहीं किया होगा: 'युद्ध': तथ्य यह है कि आप 'war.archivePath' से प्रतिलिपि बना रहे हैं एक निहित निर्भरता है। – Rup

+0

मैं विधि कॉल 'कॉपी' के बजाय' कॉपी 'कार्य प्रकार का उपयोग करने की अनुशंसा करता हूं। विधि कॉल आपको यूपी-टू-डेट चेक प्रदान नहीं करता है। –

+0

'कॉपी' कार्य का उपयोग करने के लिए अद्यतन कोड! –

6

आप Gradle Cargo plugin एक शॉट दे सकता है सक्षम हो सकता है। यह आपको एक स्थानीय फ़ाइल के साथ-साथ रिमोट टोमकैट में एक WAR फ़ाइल को तैनात करने देता है।

11

आप निश्चित रूप से टॉमकैट प्लगइन का उपयोग कर सकते हैं। मेरा सेटअप मुझे बॉक्स युद्ध & टॉमकैट विकल्प के बाहर उपयोग/संशोधित करने से रोकता है।

मुझे व्यक्तिगत रूप से निम्नलिखित स्वाद पसंद है (मेरे build.gradle से कॉपी किया गया)।

tomcat_home='tomcat_location' 
tomcat_bin=tomcat_home + '/bin' 
tomcat_start=tomcat_bin + '/startup.sh' 
tomcat_stop=tomcat_bin + '/shutdown.sh' 
tomcat_webapps = tomcat_home + '/webapps' 

task tom << { 
    if (project.hasProperty('start')) { 
     startTom() 
    } else if (project.hasProperty('stop')) { 
     stopTom() 
    } else if (project.hasProperty('deployNstart')) { 
     stopTom() 
     webappsCopy() 
     startTom() 
    } else { 
     throw new RuntimeException('unrecognized option') 
    } 
} 

def stopTom() { 
    executeCmd(tomcat_stop) 
} 

def startTom() { 
    executeCmd(tomcat_start) 
} 


def executeCmd(command) { 
    proc = command.execute() 
    proc.waitFor() 
} 

def webappsCopy() { 
    copy { 
     from 'war file location' // could be exploded or war itself 
     into tomcat_webapps 
    } 
} 

-

$ gradle tom -Pstart 
$ gradle tom -Pstop 
$ gradle tom -PdeployNstart 

इस संभावित आगे बढ़ने सकता है, के रूप में मैं और अधिक आदेशों जोड़ें/से संबंधित विकल्प - आप कमांड लाइन से 'टॉम' कार्य में विभिन्न विकल्पों आप शामिल फोन बिलाव। कुछ संकेत:

  1. gradle.properties में चले जाने के स्थान आदि इतना है कि यह अलग वातावरण में काम कर सकता था।
  2. अपने टॉमकैट सर्वर पोर्ट को विकल्प और संदेश ठीक ट्यून करने के लिए मतदान करें।
  3. प्लगइन/कार्य कोड पर जाएं जिसे पुन: उपयोग किया जा सकता है।

इस सीमित संस्करण मेरे लिए काम करता अभी :-)

11

मैं के साथ इस पूरा किया: इसे इस तरह से चल रहा है

task deploy (dependsOn: war){ 
    copy { 
     from "build/libs" 
     into "C:/dev/jetty-distribution-9.1.4.v20140401/webapps" 
     include "*.war" 
    } 
} 

:

gradle deploy 
0

वास्तव में बाद में एक इस प्रतिस्थापित ग्रेडल प्लगइन के साथ कार्यक्षमता और

द्वारा तैनाती चलाएं
gradle cargoRunLocal 
संबंधित मुद्दे