2013-05-02 9 views
44

से युद्ध फ़ाइल जेनरेट करें मेरे पास एक टॉमकैट सर्वर काम कर रहा है, और वहां मेरे पास एक वेबपैप फ़ोल्डर my_web_app है।टॉमकैट वेबएप फ़ोल्डर

मैंने परियोजना को तैनात नहीं किया; मेरे पास केवल उस एप्लिकेशन का फ़ोल्डर है (TOMCAT_DIR/webapps/my_web_app के रूप में)।

मुझे एक WAR फ़ाइल की आवश्यकता है। मैं इस वेबैप से .war फ़ाइल कैसे बना सकता हूं?

उत्तर

105

आप अपने मौजूदा फ़ोल्डर से .war फ़ाइल वापस बना सकते हैं।

इस आदेश

cd /to/your/folder/location 
jar -cvf my_web_app.war * 
+0

परियोजनाओं का उपयोग करने वाले पुस्तकालयों के बारे में क्या है जो टॉमकार के lib फ़ोल्डर में हैं? क्या उन्हें युद्ध फ़ाइल के अंदर रखा जाना चाहिए? क्या वह युद्ध फ़ाइल जेबॉस जैसे किसी अन्य सर्वलेट कंटेनर में काम करेगी? –

+0

@ketan क्या कमांड को किसी भी इनपुट फाइल या मैनिफेस्ट की आवश्यकता होती है क्योंकि मुझे एक त्रुटि मिली है (कह रही है कि कमांड इनपुट या मेनिफेस्ट फाइलों की आवश्यकता है) जब मैंने आपके चरणों का पालन किया था? क्या तुम मेरी मदद कर सकते हो? इसके अलावा, मैं प्राप्त त्रुटि के लिए ब्राउज़ किया गया लेकिन यह (http://stackoverflow.com/questions/23422470/getting-error-while-creating-war-file) मदद नहीं करता है। –

+0

मैंने वेबपैक के परिणामों से युद्ध फ़ाइल बनाने के लिए इसका इस्तेमाल किया, और टोमकैट ने इसे पसंद किया। – jkerak

22

इसकी सिर्फ अपनी परियोजना के एक WAR फ़ाइल बनाने की तरह, आप कई मायनों में यह कर सकते हैं (ग्रहण से, कमांड लाइन, Maven) का उपयोग करना।

आप कमांड लाइन से करना चाहते हैं, आदेश

jar -cvf my_web_app.war * 

है जिसका मतलब है, (ग "my_web_app.war नाम की एक फ़ाइल में इस निर्देशिका में सब कुछ सेक" = बनाने के लिए, वी = वर्बोज़, एफ = फाइल)

+0

एक 3 झंडे के स्पष्टीकरण की तरह है (मैंने इसे कहीं और नहीं देखा है।) –

4

ग्रहण से आपकी परियोजना की युद्ध फ़ाइल बनाने का एक तरीका है।

पहले एक निम्न कोड के साथ कोई xml फ़ाइल बनाएँ,

अपने प्रोजेक्ट के नाम के साथ HistoryCheck बदलें।

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HistoryCheck" basedir="." default="default"> 
    <target name="default" depends="buildwar,deploy"></target> 
    <target name="buildwar"> 
     <war basedir="war" destfile="HistoryCheck.war" webxml="war/WEB-INF/web.xml"> 
      <exclude name="WEB-INF/**" /> 
      <webinf dir="war/WEB-INF/"> 
       <include name="**/*.jar" /> 
      </webinf> 
     </war> 
    </target> 
    <target name="deploy"> 
     <copy file="HistoryCheck.war" todir="." /> 
    </target> 
</project> 

अब, परियोजना एक्सप्लोरर में सही है कि एक्सएमएल फ़ाइल और भागो जैसे-> चींटी निर्माण

आप अपने प्रोजेक्ट फ़ोल्डर में अपनी परियोजना के युद्ध फ़ाइल देख सकते हैं पर क्लिक करें।

+0

यह त्रुटि प्राप्त करना ... लक्ष्य बिल्डवार परियोजना में मौजूद नहीं है "। इसका उपयोग लक्ष्य डिफ़ॉल्ट से किया जाता है। –

1

एक अलग निर्देशिका में युद्ध फ़ाइल बनाएं जहां सामग्री अन्यथा है, jar कमांड उस फ़ाइल को ज़िप करने का प्रयास कर सकता है जो इसे बना रहा है।

#!/bin/bash 

set -euo pipefail 

war=app.war 
src=contents 

# Clean last war build 
if [ -e ${war} ]; then 
    echo "Removing old war ${war}" 
    rm -rf ${war} 
fi 

# Build war 
if [ -d ${src} ]; then 
    echo "Found source at ${src}" 
    cd ${src} 
    jar -cvf ../${war} * 
    cd .. 
fi 

# Show war details 
ls -la ${war} 
संबंधित मुद्दे