2013-01-14 58 views
5

को तैनात करने के लिए Google एपेंगिन मेवेन प्लगइन का उपयोग करके मैं अपने Google ऐप इंजन क्लाउड स्पेस में जैक्स-आरएस लाइब्रेरी का उपयोग करके एक सेवा को तैनात करने के लिए एक सरल आधार प्रोजेक्ट बनाने की कोशिश कर रहा हूं। समस्या यह है कि मुझे नहीं पता कि प्लगइन को सही तरीके से कॉन्फ़िगर कैसे करें ताकि लक्ष्य फ़ोल्डर के नीचे वेबपैप निर्देशिका को न देख सकें। जैक्स-आरएस प्रोजेक्ट की संरचना वेब.एक्सएमएल और अन्य सभी वेब-आईएनएफ फाइलों को वेबएप निर्देशिका के बजाय संसाधन निर्देशिका के अंतर्गत रखती है। क्या मेरे पहले से निर्मित और ज़िप्ड अप युद्ध फ़ाइल को तैनात करने के लिए मेवेन प्लगइन को कॉन्फ़िगर करने का कोई तरीका है?जैक्स-आरएस युद्ध

यह त्रुटि है मैं

देख

[जानकारी] अपडेट कर रहा है Google अनुप्रयोग इंजन में webapp निर्देशिका सी ढूंढने में असमर्थ: \ देव \ gameTrunk \ सर्वर \ लक्ष्य \ HOMMTG-server-1.0 उपयोग: ऐपसीएफजी [विकल्प] [] []

कार्य में से एक होना चाहिए: सहायता: किसी विशिष्ट कार्रवाई के लिए सहायता प्रिंट करें।
download_app: पहले अपलोड किए गए ऐप संस्करण को डाउनलोड करें।
request_logs: अपाचे सामान्य लॉग प्रारूप में अनुरोध लॉग लिखें।
रोलबैक: एक प्रगति अद्यतन रोलबैक। प्रारंभ करें: निर्दिष्ट सर्वर संस्करण प्रारंभ करें।

और यह सब appengine प्लगइन लक्ष्य के साथ चला जाता है ...

यह मेरा पोम

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <version>2.5.1</version> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <archiveClasses>true</archiveClasses> 
       <webResources> 
        <!-- in order to interpolate version from pom into appengine-web.xml --> 
        <resource> 
         <directory>${basedir}/src/main/resources/WEB-INF</directory> 
         <filtering>true</filtering> 
         <targetPath>WEB-INF</targetPath> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>com.google.appengine</groupId> 
      <artifactId>appengine-maven-plugin</artifactId> 
      <version>${appengine.target.version}</version> 
     </plugin> 
    </plugins> 

Thats सिर्फ प्लगइन्स हिस्सा है, लेकिन इसके लगभग ठीक गेस्टबुक उदाहरण परियोजना के रूप में ही है WEB-INF निर्देशिका के लिए पथ को छोड़कर

उत्तर

1

(नीचे दिए गए निर्देश maven-gae-plugin पर लागू होते हैं, ऐपेंगिन-मैवेन-प्लगइन नहीं। क्या मैंने आपको बताया है कि Google ? Ucks मुक्त स्रोत आज)

में मैं आपको अपने एक संपत्ति अपने webapp निर्देशिका की ओर इशारा करते appDir कहा जाता है, इस तरह Maven-gae-प्लगइन में जोड़ना होगा लगता है:

<plugin> 
     <groupId>net.kindleit</groupId> 
     <artifactId>maven-gae-plugin</artifactId> 
     <configuration> 
      <appDir>PATH-TO-YOUR-BUILT-EXPLODED-WAR-PATH</appDir> 
     </configuration> 
    </plugin> 

हालांकि, मैं तनाव होना चाहिए कि बदलते Maven में पथ अवांछनीय परिणाम का उत्पादन (आप स्रोत और वस्तु संकेत मिश्रण कर रहे हैं, अपने .ignore फ़ाइलों में गड़बड़ होगा मिलता है, और अन्य अजीब बातें)

ध्यान दें कि आप कहीं अपने पैक युद्ध की जरूरत है। इसे हासिल करने का एक तरीका एक और .war प्रोजेक्ट बनाना और निर्भरता का उपयोग करना है- इसमें अनपैक करें। देखें http://maven.apache.org/plugins/maven-dependency-plugin/unpack-dependencies-mojo.html

(संदर्भ: https://github.com/maven-gae-plugin/maven-gae-plugin/blob/master/maven-gae-plugin/src/main/java/net/kindleit/gae/EngineGoalBase.java)

(सिर्फ मामले में, GAE के लिए एक JAX-आरएस आधारित परियोजना मैंने कुछ समय पहले लिखा था है, और इसके लिए खुला है एक सिंहावलोकन के लिए https://github.com/ipeirotis/ReadabilityMetrics/ देखें।)

+0

हम्म, मैं खोल विकल्प है कि अगर यह ऐप्लिकेशन इंजन-Maven-प्लगइन का उपयोग करने के लिए एक ही रास्ता है की कोशिश करेंगे। क्या आपको पता है कि प्लगइन कॉन्फ़िगरेशन विकल्पों का वर्णन करने के लिए कुछ दस्तावेज़ हैं और वितरण के लिए इसकी अपेक्षा/वितरण की क्या अपेक्षा है? – Flostation

+0

@aldrinleal, आपको यह सुनिश्चित appDir है appengine-Maven-प्लगइन में एक वैध विन्यास कर रहे हैं? मैं [कच्चे स्रोत] में यह दिखाई नहीं देता (http://code.google.com/p/appengine-maven-plugin/source/browse/src/main/java/com/google/appengine/AbstractAppCfgMojo.java)। ध्यान दें कि यह maven-gae-plugin में एक वैध पैरामीटर है जो एपेंगिन-मेवेन-प्लगइन से अलग है। – yorkw

+0

अच्छा है। मुझे नहीं पता था कि एक एपेंगेन-मेवेन-प्लगइन था। और तुम सही हो - AppDir hardcoded है (देखें http://code.google.com/p/appengine-maven-plugin/source/browse/src/main/java/com/google/appengine/appcfg/Update.java) – aldrinleal

2

वर्तमान में युद्ध सामग्री के लिए एक अलग निर्देशिका का उपयोग करने के लिए appengine-maven-plugin को कॉन्फ़िगर करने का कोई तरीका नहीं है। यह संभवतः एक मल्टीमॉड्यूल बिल्ड बनाने के लिए सबसे अच्छा होगा, जहां एक सबमिशन ने युद्ध निर्देशिका को इकट्ठा करने के लिए केवल मैवेन-एंटी-प्लगइन का उपयोग किया था और उसके बाद उस पर प्लगइन चलाया था। मुझे नहीं लगता कि हम प्लगइन में कॉन्फ़िगर करने योग्य बनाना चाहते हैं, क्योंकि यह वास्तव में मैवेन-वॉर-प्लगइन के साथ संरेखित नहीं होता है, और यह कॉन्फ़िगर करने से आपके प्रोजेक्ट को मैवेन-वॉर-प्लगइन का उपयोग करने के लिए सेट करना मुश्किल हो जाएगा भविष्य में।जब तक आप ऐप्लिकेशन इंजन-web.xml में संस्करण संख्या के प्रक्षेप चाहते

विन्यास आप वर्तमान में अपने पोम में युद्ध-प्लगइन के लिए है आवश्यक नहीं है। मुझे आपके पोम को स्थापित करने में मदद करने में प्रसन्नता हो रही है ताकि आधिकारिक Google App Engine Maven प्लगइन आपके लिए सही तरीके से काम कर सके।

+0

में आया था, मेरे पास आपको यह मशीन देने के लिए मेरी मशीन नहीं है लेकिन मेरी परियोजना का सारांश यह है कि मैं जाक्स-आरएस पुस्तकालयों के साथ युद्ध कर रहा हूं जो उपयोग करता है सभी आईएनएफ निर्देशिकाओं को पकड़ने के लिए मानक संसाधन निर्देशिका। एक अलग परियोजना का उत्पादन यह है कि युद्ध फ़ाइल। मेरे पास ऐप इंजन पर अपलोड करने के लिए सिर्फ एक अलग परियोजना है। लेकिन यह केवल मेरे द्वारा प्रदान किए जाने वाले युद्ध का उपयोग करने के लिए कॉन्फ़िगर करने योग्य प्रतीत नहीं होता है। आप ज़िपित युद्ध फ़ाइल के साथ ऐसा करने के लिए एक रास्ता के बारे में सोच सकते हैं, तो मैं लेकिन रुचि होगी अगर इसकी संभव नहीं मैं सिर्फ निर्माण के हिस्से के रूप में यह विस्फोट करेंगे। मेरा मुद्दा तब बन जाता है, ऐप इंजन प्लगइन का खुलासा करने की क्या ज़रूरत है? – Flostation

+1

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

+0

धन्यवाद मैट! आपने धमाल मचाया। – Flostation