2011-10-23 8 views
5

आम तौर पर, मैं सर्वर इंस्टेंस पर एक सर्वर इंस्टेंस का निर्माण करके, एक कनेक्टर, हैंडलर और LifeCycleListener सेट करके जेटी शुरू करूंगा, उसके बाद सर्वर इंस्टेंस पर start() पर कॉल करें। मुझे गड़बड़ी में jettyRun कार्य के साथ ऐसा करने का सबसे अच्छा विचार नहीं है। प्रलेखन मुझे भ्रमित कर रहा है, और मुझे अभी तक यह उदाहरण नहीं मिला है कि यह कार्य कैसे काम करता है, पृष्ठ के अलावा gradle jettyRun के पृष्ठ के बाद।ग्रैडल जेटटीरुन: यह बात कैसे काम करती है?

यह कार्य मुझे अपील कर रहा है क्योंकि यह निष्पादन के तुरंत बाद कथित रूप से लौटता है। जेनकिंस से चलने के बाद सेलेनियम परीक्षण चलाने के लिए यह सहायक है। मैंने इसे JavaExec कार्य के माध्यम से करने की कोशिश की, लेकिन यह काम नहीं करेगा क्योंकि JavaExec कार्य अंतर्निहित JVM टर्मिनेट तक समाप्त नहीं होता है।

+0

आप internals के बारे में जानना चाहते हैं, तो तुम क्यों [स्रोत कोड] (https://github.com/gradle/gradle/tree/master/subprojects/jetty/src/main का अध्ययन नहीं करते/जावा/org/Gradle/api/plugins/जेटी)? –

+0

आप हमेशा अपने आप को जांच सकते हैं - ['org.gradle.api.plugins.jetty.JettyRun'] (http://svn.codehaus.org/gradle/gradle-core/tags/REL-0.7/src/main/groovy /org/gradle/api/plugins/jetty/JettyRun.java) –

+0

चींटी जेट्टी कार्य का उपयोग करके मेरा जवाब यहां देखें http://stackoverflow.com/a/18021790/39334 – stolsvik

उत्तर

4

ऐसा लगता है जैसे आप जेटी को इन-कंटेनर एकीकरण परीक्षणों के लिए शुरू करना चाहते हैं। स्रोत कोड पर एक नज़र होने के अलावा इन दोनों पदों आप मिलना चाहिए शुरू कर दिया:

प्रमुख विशेषता आप देख रहे हैं, पृष्ठभूमि में जेट्टी शुरू, jettyRun.daemon = true है।

+0

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

2

build.gradle में एकीकरण परीक्षण के लिए मैं जो उपयोग कर रहा हूं वह नीचे जैसा दिखता है। मुझे लगता है कि यह कोड सरल और सहज है।

test { 
    exclude '**/*IntegrationTest*' 
} 

task integrationTest(type: Test) { 
    include '**/*IntegrationTest*' 
    doFirst { 
     jettyRun.httpPort = 8080 // Port for test 
     jettyRun.daemon = true 
     jettyRun.execute() 
    } 
    doLast { 
     jettyStop.stopPort = 8091 // Port for stop signal 
     jettyStop.stopKey = 'stopKey' 
     jettyStop.execute() 
    } 
} 
+0

मुझे इस कोड का उपयोग करने में परेशानी हो रही है, ऐसा लगता है जैसे जेटीस्टॉप काम नहीं करता है, क्योंकि कार्य पूरा होने के बाद, जेटी अभी भी चल रही है, कोई विचार क्या हो सकता है? – Darvex

+0

@Darvex जांचें कि 8091 पोर्ट पहले से उपयोग में है या नहीं। –

+0

मैंने इसे विभिन्न बंदरगाहों के साथ आजमाया है, या तो मैं दुर्भाग्यपूर्ण हूं, या इसके लिए कुछ और है। किसी भी तरह से, मैं एक नज़र रखना होगा – Darvex

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