ant पर - चींटी का उपयोग करते हुए युद्ध बनाते समय जेएसपी की नकल नहीं की जा रही है




होना घर (2)

मुझे सटीक उत्तर नहीं पता है लेकिन यहां ऐप्प का उपयोग करने का मेरा तरीका है। XML webapps के लिए कोशिश करो। यह एक्लिप्स के अंदर काम करता है या कमांड लाइन से चलाता है। कुछ प्रमुख बिंदु हैं:

  • build.xml में compile-time पुस्तकालयों का संदर्भ है, जिसमें servlet-api.jar शामिल है
  • गतिशील मेटा- INF / MANIFEST.MF
  • संकलित, जार और युद्ध कार्यों के लिए अलग-अलग लक्ष्य, प्रत्येक प्रोजेक्ट कस्टम नियमों को आसान बनाने की अनुमति देते हैं
  • वेबपैड युद्ध में व्यक्तिगत नहीं है। क्लास फाइलें, लेकिन संकलित वेब- inf / lib / mywebapp.jar लाइब्रेरी फाइल सिस्टम कम से कम करने के लिए
  • आप वेब / वेब-आईएनएफ / वर्ग / फ़ोल्डर बना सकते हैं और कुछ .properties फ़ाइल या चरम मामले को "द्विआधारी प्रदान" वर्ग फ़ाइलें डाल सकते हैं। वे अन्य जेस्प, एचटीएमएल, जेएस फाइल्स के साथ युद्ध पैकेज के अंदर रखे जाते हैं।
  • फ़ोल्डर संरचना बहुत सुव्यवस्थित है, मैं विकास के दौरान टॉमकेट सेवा में सीधे mywebapp / web / फ़ोल्डर का उपयोग कर सकते हैं I प्रत्येक HTML, jsp आदि परिवर्तन रनटाइम पर प्रदर्शित होते हैं। वेबएप उदाहरण पुनः लोड करने के लिए जार टकराते हुए जार ट्रिगर करता है

वेबपेज परियोजना के लिए इस आम फ़ोल्डर संरचना का उपयोग करें
/mywebapp/ant.bat
/mywebapp/build.xml
/ Mywebapp / वर्गों /
/ Mywebapp / src /
/mywebapp/src/META-INF/MANIFEST.MF
/ Mywebapp / lib /
/ Mywebapp / वेब /
/mywebapp/web/WEB-INF/web.xml
/ Mywebapp / वेब / वेब-INF / lib /
/mywebapp/web/META-INF/context.xml

mywebapp / build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="mywebapp" default="build" basedir=".">
    <property name="name" value="${ant.project.name}" />
    <property name="classes" value="./classes" />
    <property name="src" value="./src" />
    <property name="webdir" value="./web" />    
    <property name="version" value="1.0"/>

    <property environment="env"/>

    <path id="libs"> 
        <pathelement location="lib/servlet-api.jar" />
        <pathelement location="web/WEB-INF/lib/somelib1.jar" />
        <pathelement location="web/WEB-INF/lib/somelib2.jar" />
        <pathelement location="web/WEB-INF/lib/gson-2.2.4.jar" />
    </path>

    <tstamp>
       <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
    </tstamp>


    <target name="updatemanifest" description="Update manifest">
       <buildnumber file="build.num"/>

       <copy file="${src}/META-INF/MANIFEST.MF" 
          todir="${classes}/META-INF/" overwrite="true" preservelastmodified="true"
       />

       <manifest file="${classes}/META-INF/MANIFEST.MF" mode="update">
          <attribute name="Implementation-Version" value="${version}.${build.number} (${TODAY})" />
          <attribute name="Implementation-Title"   value="${name}" />       
       </manifest>      
    </target>

    <target name="clean" description="Clean compiled classes">
        <delete dir="${classes}" />
    </target>

    <target name="compile" depends="clean" description="Compile classes">
        <mkdir dir="${classes}"/>
        <javac srcdir="${src}" destdir="${classes}" target="1.6" source="1.6" encoding="ISO-8859-1" 
            debug="true" debuglevel="lines,source"
            excludes="" includeantruntime="false" >
            <classpath refid="libs" />
            <compilerarg value="-Xlint:deprecation" />
        </javac>
    </target>

    <target name="jar" depends="updatemanifest" description="Create a .jar file">
        <echo message="Build release: ${release}" />        
        <jar
            manifest="${classes}/META-INF/MANIFEST.MF" 
            jarfile="${webdir}/WEB-INF/lib/${name}.jar" >
           <fileset dir="${classes}">
           </fileset>
        </jar>
    </target>

    <target name="war" depends="compile,jar" description="Create a .war file">
        <delete file="${name}.war" />
        <zip destfile="${name}.war"
            basedir="${webdir}"
            excludes="
                **/CVS*
                "
        />
    </target>

    <target name="build" depends="war" description="Build lib">
    </target>

</project>

src / META-INF / MANIFEST.MF

Implementation-Title: myappname   
Implementation-Version: 1.0.0 (2010-03-01)   
Implementation-Vendor: My Name Ltd.   
Implementation-URL: http://www.myname.com   

mywebapp / build.bat

call c:\apache-ant-1.7.0\bin\ant.bat build   
pause  

बनाएँ स्क्रिप्ट युद्ध पैकेज बनाता है और manifest.mf वेब- inf / lib / mywebapp.jar के भीतर अद्यतन संख्या, शीर्षक और संस्करण के लिए अद्यतन किया जाता है। बहुत आसान आप नए वेबपॉप परियोजनाओं के लिए एक टेम्पलेट के रूप में फ़ोल्डर सामग्री का उपयोग कर सकते हैं। बस नया प्रोजेक्ट नाम बनाने के लिए build.xml को संपादित करें

कुछ कंपेल-टाइम निर्भरताएं mywebapp / web-inf / lib फ़ोल्डर कहते हैं। गैर युद्ध-पैक लाइब्रेरी को केवल समय संकलन के लिए mywebapp / lib / फ़ोल्डर में डाल दिया जाता है। मुझे प्रोजेक्ट वर्जन कंट्रोल के भीतर प्रत्येक निर्भरता को रखना पसंद है, ताकि इस लिबिल फ़ोल्डर के लिए एक कारण हो। आप * .jar वाइल्डकार्ड एंटी वाक्यविन्यास का उपयोग कर सकते हैं, लेकिन मैं स्वयं दस्तावेज़ों के लिए प्रत्येक फाइल की व्याख्या करता हूं I

डेवलपमेंट टाइम के दौरान टोमकैट में इस्तेमाल होने वाली एक बोनस फाइल है यह टोमकेट पर वेबएफ़ को प्रकाशित करता है और परियोजना फ़ोल्डर में कोई बदलाव तत्काल देखा जाता है, क्लाइंट फ़ाइल परिवर्तन (html, js, jsp) के लिए यह बहुत आसान है।

  • यह फ़ाइल mywebapp / web / META-INF / context.xml फ़ाइल से एक कॉपी पेस्ट है लेकिन एक स्पष्ट डॉकबेज विशेषता जोड़ दी गई है।
  • यह टॉमकैट को सीधे परियोजना फ़ोल्डर से फ़ाइलों का उपयोग करने का निर्देश देता है, रनटाइम पर कोई पुनरीक्षण की आवश्यकता नहीं है
  • टॉमकैट प्रारंभ करें और इसे चलते रहें, आप एक ही टोमकैट इंस्टेंस के साथ कई वेबएप प्रोजेक्ट चला सकते हैं। कभी-कभी बड़ी विकास परियोजनाओं की आवश्यकता होती है
  • रिमोट डिबगिंग हुक में कुछ जावा जादू की आवश्यकता नहीं है

बिल्ला / conf / कैटालिना / स्थानीय होस्ट / mywebapp.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:/mywebapp/web"
    debug="0" reloadable="true" crossContext="true" >

<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="127.0.0.1" />
-->

<!--
   <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
-->

  <!-- pooled db connection -->
    <Resource name="jdbc/mywebappDB" auth="Container" type="javax.sql.DataSource" 
        maxActive="10" maxIdle="2" maxWait="20000" 
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
        username="myuserid" password="mypwd" 
        url="jdbc:sqlserver://mysqlserv1.com:1433;DatabaseName=MyDB;applicationName=mywebapp" 
        validationQuery="SELECT 1" 
    />
    <!-- <ResourceLink name="jdbc/mywebappDB" global="jdbc/mywebappDB" type="javax.sql.DataSource" /> -->


    <Resource name="jdbc/mywebappDB2" auth="Container" type="javax.sql.DataSource"
        maxActive="100" maxIdle="20" maxWait="10000"
        driverClassName="com.mysql.jdbc.Driver"
        username="myuserid" password="mypwd"
        url="jdbc:mysql://localhost:3306/myDB2?useUnicode=true&amp;characterEncoding=utf8"
        validationQuery="SELECT 1" removeAbandoned="true" removeAbandonedTimeout="300"
      />

</Context>

ps: चींटी निर्माण प्रणाली ठीक है चाहे कितने लोग कुछ कहें। जैसे ही आप कृपया साथ जाएं।

सरल वेब अनुप्रयोग की एक युद्ध बनाने के लिए मैं निम्नलिखित चींटी स्क्रिप्ट का उपयोग कर रहा हूं।

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="war">
    <path id="compile.classpath">
        <fileset dir="WebContent/WEB-INF/lib">
            <include name="*.jar" />
        </fileset>
    </path>
    <target name="compile">
        <javac destdir="WebContent/WEB-INF/classes" debug="true" srcdir="src">
            <classpath refid="compile.classpath" />
        </javac>
    </target>
    <target name="war" depends="compile">
        <war destfile="build/myproject.war" webxml="WebContent/WEB-INF/web.xml">
            <fileset dir="WebContent">
                <include name="**/*.jsp" />
            </fileset>
            <lib dir="WebContent/WEB-INF/lib" />
            <classes dir="WebContent/WEB-INF/classes" />
        </war>
    </target>
</project>

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


प्रोजेक्ट पर राइट क्लिक करें और गुण चुनें। जावा कंपाइलर पर जाएं और सुनिश्चित करें कि कंपाइलर अनुपालन स्तर 1.5 के बजाय 1.6 पर सेट है । मुझे लगता है कि चाल चलनी चाहिए।