কিভাবে যুদ্ধ ফাইল তৈরি করতে হয়


96

টমক্যাটে চালানোর জন্য যুদ্ধের ফাইল তৈরির (গ্রহনটি ব্যবহার করে) তৈরি করার সেরা অনুশীলনগুলি কী কী? টিউটোরিয়াল, লিঙ্ক, উদাহরণ অত্যন্ত প্রশংসা করা হয়।

উত্তর:


98

আপনি পিঁপড়াটি সেট আপ, সংকলন, যুদ্ধ এবং আপনার সমাধান স্থাপনের জন্য ব্যবহার করতে পারেন ।

<target name="default" depends="setup,compile,buildwar,deploy"></target>

তারপরে আপনি সেই পিঁপড়া লক্ষ্যটি চালানোর জন্য এক্লিপসে একটি ক্লিক সম্পাদন করতে পারেন। এখানে প্রতিটি পদক্ষেপের উদাহরণ রয়েছে:

পূর্বশর্ত

আমরা ধরে নেব যে আপনার কোডটি এমনভাবে সাজানো আছে:

  • ${basedir}/src: জাভা ফাইল, বৈশিষ্ট্য, এক্সএমএল কনফিগারেশন ফাইল
  • ${basedir}/web: আপনার জেএসপি ফাইলগুলি
  • ${basedir}/web/lib: রানটাইম সময়ে যে কোনও জেআর প্রয়োজন
  • ${basedir}/web/META-INF: আপনার প্রকাশ
  • ${basedir}/web/WEB-INF: আপনার ওয়েব। এক্সএমএল ফাইলগুলি

সেট আপ করুন

setupএমন একটি কার্য নির্ধারণ করুন যা বিতরণ ডিরেক্টরি তৈরি করে এবং যে কোনও শিল্পকর্মের অনুলিপি করে যা সরাসরি যুদ্ধের প্রয়োজন:

<target name="setup">
    <mkdir dir="dist" />
    <echo>Copying web into dist</echo>
    <copydir dest="dist/web" src="web" />
    <copydir dest="dist/web/WEB-INF/lib" src="${basedir}/../web/WEB-INF/lib" />
</target>

সংকলন

আপনার জাভা ফাইলগুলি ক্লাসে তৈরি করুন এবং যে কোনও জাভা-না-র নিদর্শনগুলি অন্তর্ভুক্ত রয়েছে তার অনুলিপি করুন srcযা রানটাইম (যেমন বৈশিষ্ট্য, এক্সএমএল ফাইল, ইত্যাদি) পাওয়া দরকার:

<target name="compile">
    <delete dir="${dist.dir}/web/WEB-INF/classes" />
    <mkdir dir="${dist.dir}/web/WEB-INF/classes" />
    <javac destdir="${dist.dir}/web/WEB-INF/classes" srcdir="src">
        <classpath>
            <fileset dir="${basedir}/../web/WEB-INF/lib">
                  <include name="*" />
            </fileset>
        </classpath>
    </javac>
    <copy todir="${dist.dir}/web/WEB-INF/classes">
        <fileset dir="src">
            <include name="**/*.properties" />
            <include name="**/*.xml" />
        </fileset>
    </copy>
</target>

ওয়ার তৈরি করুন

ওয়ার নিজেই তৈরি করুন:

<target name="buildwar">
    <war basedir="${basedir}/dist/web" destfile="My.war"
     webxml="${basedir}/dist/web/WEB-INF/web.xml">
        <exclude name="WEB-INF/**" />
        <webinf dir="${basedir}/dist/web/WEB-INF/">
            <include name="**/*.jar" />
        </webinf>
    </war>
</target>

মোতায়েন করুন

অবশেষে, আপনি সরাসরি টমকেট মোতায়েনের স্থানে WAR স্থাপনের জন্য একটি কার্য সেট করতে পারেন:

<target name="deploy">
    <copy file="My.war" todir="${tomcat.deploydir}" />
</target>

ক্লিক করুন এবং যান!

একবার এই সমস্ত সেট আপ হয়ে গেলে, কেবলমাত্র defaultগ্রহন থেকে লক্ষ্যটি চালু করা সংকলন, যুদ্ধ এবং আপনার সমাধান স্থাপন করবে dep

এই পদ্ধতির সুবিধাটি হ'ল এটি Eclipse এর বাইরে পাশাপাশি Eclipse এর মধ্যেও কাজ করবে এবং আপনার স্থাপনার কৌশলটি (যেমন উত্স নিয়ন্ত্রণের মাধ্যমে) আপনার বিকাশকারীরা যারা আপনার প্রকল্পে কাজ করছেন তাদের সাথে সহজেই ভাগ করে নেওয়া যেতে পারে।


ভাল আমি এটি টমক্যাট স্থাপন করতে চাই। আমি কীভাবে তারের পরিবর্তন করব?

আপনি দয়া করে বিস্তারিত বলতে পারেন? যতক্ষণ না $ om tomcat.deploydir your আপনার টমকেট প্রসঙ্গ স্থাপনা ডিরেক্টরিতে নির্দেশ করে, এটি করা উচিত। না?
ডেভিড সিট্রন

4
যুদ্ধের লক্ষ্যে অপ্রয়োজনীয় '<বাদে নাম = "ওয়েব-আইএনএফ / **" />' রয়েছে। আপনি এই ফোল্ডারে * .class ফাইলগুলি তৈরি করেছেন এবং এগুলি বাদ দিয়ে কাজ করে না। যুদ্ধের লক্ষ্য থেকে কাজ করে এই বর্জনিত রেখাটি সরান।
ankitjaininfo

4
এই উত্তরটি অযথা জটিল।
অ্যালেক্স আর

38

আমি সবসময় স্রেফ গ্রহস্ব থেকে রফতানি নির্বাচন করেছি। এটি যুদ্ধ ফাইল তৈরি করে এবং প্রয়োজনীয় সমস্ত ফাইল অন্তর্ভুক্ত করে। আপনাকে প্রকল্পের তৈরির প্রকল্পটি একটি ওয়েব প্রকল্প হিসাবে তৈরি করা হবে যা আপনার করা দরকার। গ্রহণটি খুব সহজ করে তোলে।


ধন্যবাদ! এবং যার মূল্য রয়েছে তার জন্য আপনি "ফাইল" মেনু থেকে "রফতানি" নির্বাচন করুন, তারপরে "একটি রপ্তানি গন্তব্য নির্বাচন করুন" টাইপ "ওয়ার" এ এবং যুদ্ধ ফাইল বিকল্পটি উপস্থিত হবে।
ব্র্যাড পার্কস 0

4
দ্রুত এবং নোংরা ওয়েব অ্যাপ্লিকেশনগুলির জন্য আমার পছন্দ। যুদ্ধ পরীক্ষা চালানোর জন্য একটি পিপীলিকা স্ক্রিপ্ট লেখা কেবল খুব বেশি কাজ।
রেনান

পিঁপড়া ফাইল তৈরির পরিবর্তে অন্য সমাধানে আপনি যে ফোল্ডারে WAR ফাইলটি মোড়তে চান সেটি যেতে হবে এবং "jar -cvf name.war *" এই আদেশটি কার্যকর করতে হবে।
এমসি

এর জন্য ধন্যবাদ, মাভেন বা পিঁপড়া কনফিগার করার চেয়ে অনেক বেশি সহজ (যখন এটি প্রয়োজন হয় না)।
সাইমন

23

আমরা আমাদের সমস্ত জাভা প্রকল্পের জন্য মাভেন (পিঁপড়ার বড় ভাই) ব্যবহার করি এবং এটিতে খুব নিফটি ওয়ার প্লাগইন রয়েছে। টিউটোরিয়াল এবং ব্যবহার সেখানে পাওয়া যাবে।

এটি পিঁপড়ের চেয়ে অনেক সহজ, Eclipse এর সাথে পুরোপুরি সামঞ্জস্যপূর্ণ ( ম্যવેন ইক্লিপস ব্যবহার : Eclipse প্রজেক্টগুলি তৈরি করতে গ্রহ্ফ ব্যবহার করুন ) এবং কনফিগার করা সহজ।

মাভেনের হোমপেজ

ম্যাভেন ওয়ার প্লাগইন

নমুনা কনফিগারেশন:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1-alpha-2</version>
    <configuration>
        <outputDirectory>${project.build.directory}/tmp/</outputDirectory>
        <workDirectory>${project.build.directory}/tmp/war/work</workDirectory>
        <webappDirectory>${project.build.webappDirectory}</webappDirectory>
        <cacheFile>${project.build.directory}/tmp/war/work/webapp-cache.xml</cacheFile>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
            <nonFilteredFileExtension>png</nonFilteredFileExtension>
            <nonFilteredFileExtension>gif</nonFilteredFileExtension>
            <nonFilteredFileExtension>jsp</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
        <webResources>
            <resource>
                <directory>src/main/webapp/</directory>
                <targetPath>WEB-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </webResources>
        <warName>Application</warName>
    </configuration>
</plugin>

4
আমি আপনাকে আপনার বক্তব্য ফিরিয়ে দিয়েছি (যদিও এটি আমিই এটিকে সরিয়েছি)। মাভেন অবশ্যই একটি যুক্তিসঙ্গত পছন্দ যদি আপনি "চান কনফিগারেশন ওভার কনফিগারেশন" এর তাদের বিশেষ সংস্করণটির সাথে (চান?) ফিট হয়ে যান।
ডেভিড সিট্রন

4
আমি এটিকে পছন্দ করি =) আমি একটি দুর্দান্ত বড় প্রকল্পে মুখ্যমন্ত্রী হিসাবে কাজ করছি এবং আমার জন্য প্রকল্পের কনফিগারেশনের গুরুতর কাজটি করার প্রশংসা করছি। এছাড়াও, প্লাগইন সমর্থন দুর্দান্ত। ওয়ারিয়াল-প্লাগইন, শিয়ারফায়ার এবং চেকস্টাইলের সাথে পাঁচ মিনিটের মধ্যে একটি মাল্টি-মডিউল প্রজেক্ট তৈরি করতে এবং চালাতে সক্ষম হওয়াই ট্রিট। পিপীলিকা, যদিও আরও উন্মুক্ত এবং তর্কসাপেক্ষভাবে আরও শক্তিশালী, তুলনায় একটি ঝামেলা। যাইহোক, মাভেন পিঁপড়ার একটি সাবসেট, সুতরাং সেখানে কোনও স্ক্রিপ্টিং করার দরকার হলে আপনাকে স্বাগতম you're
মাইকেক

4
মাভেনের এক্সএমএল কাঠামোটি এএনটি-র উপর ভিত্তি করে এবং এএনটিকে মাভেনের উপসেট হিসাবে অন্তর্ভুক্ত করা হয়েছে।
মাইকেক

14

যুদ্ধ ফাইল হ'ল একটি যুদ্ধের এক্সটেনশন সহ একটি জার ফাইল, তবে এটি কীভাবে কাজ করে তা হ'ল সামগ্রী কীভাবে কাঠামোগত হয়।

J2EE / জাভা EE টিউটোরিয়াল শুরু হতে পারে:

http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebCompferences3.html

এবং সার্লেলেট স্পেসিফিকেশনটিতে বিষাক্ত বিবরণ রয়েছে:

http://java.sun.com/products/servlet/download.html

আপনি যদি Eclipse এ একটি নতুন ওয়েব প্রকল্প তৈরি করেন (আমি জাভা EE সংস্করণ উল্লেখ করছি), আপনার জন্য কাঠামোটি তৈরি করা হয়েছে এবং আপনি এটিও বলতে পারেন যে আপনার অ্যাপসভারটি কোথায় ইনস্টল করা আছে এবং এটি আপনার জন্য আবেদন স্থাপন এবং শুরু করবে lo

"এক্সপোর্ট-> ওয়ার ফাইল" বিকল্পটি ব্যবহার করা আপনাকে যুদ্ধের ফাইলটি সংরক্ষণ করতে দেয়।


12

যদি আপনি নিশ্চিত না হন এবং স্ক্র্যাচ থেকে শুরু করছেন তবে মাভেন আপনাকে শুরু করতে সহায়তা করতে পারে।

নীচের পদক্ষেপগুলি অনুসরণ করে আপনি গ্রহনে পুরোপুরি একটি নতুন যুদ্ধ প্রকল্পের সেটআপ পেতে পারেন।

  1. মাভেন ডাউনলোড এবং ইনস্টল করুন
  2. কমান্ড লাইন চলুন: mvn archetype:generate
  3. অনুরোধকৃত পদক্ষেপগুলি অনুসরণ করুন - সাধারণ জাভা ওয়েব প্রকল্প (18) এবং একটি উপযুক্ত নাম চয়ন করুন।
  4. এটি রান শেষ হলে: mvn eclipse:eclipse
  5. গ্রহণ শুরু করুন। ফাইল -> আমদানি -> বিদ্যমান প্রকল্প চয়ন করুন। যে ডিরেক্টরিটি আপনি mvn লক্ষ্যগুলি দৌড়েছিলেন তা নির্বাচন করুন।
  6. এটিই এখন আপনার গ্রহণে একটি যুদ্ধ প্রকল্পের খুব ভাল সূচনা করা উচিত
  7. আপনি নিজেই যুদ্ধ চালাতে mvn packageবা এটি স্থাপনের মাধ্যমে সূর্যগ্রহণে একটি সার্ভার স্থাপন করে এবং সার্ভারে প্রজেক্টটি যুক্ত করে যুক্ত করতে পারেন।

যেমন কিছু অন্যান্য বলেছেন যে ম্যাগেন ব্যবহারের ক্ষয়ক্ষতি হ'ল আপনাকে মভেন কনভেনশনগুলি ব্যবহার করতে হবে। তবে আমি মনে করি আপনি নিজের তৈরি শুরু করার আগে যদি আপনি সবে শুরু করে থাকেন তবে সম্মেলনগুলি শেখা একটি ভাল ধারণা। পরবর্তী সময়ে আপনাকে নিজের পছন্দসই পদ্ধতিতে পরিবর্তন / রিফ্যাক্টরিং থামানোর কিছু নেই।

আশাকরি এটা সাহায্য করবে.



3

আমার প্রজেক্টের এসএমএসের জন্য এন্টি বিল্ড কোড ব্যবহার করুন this

<property name="WEB-INF" value="${basedir}/WebRoot/WEB-INF" />
<property name="OUT" value="${basedir}/out" />
<property name="WAR_FILE_NAME" value="mywebapplication.war" />
<property name="TEMP" value="${basedir}/temp" />

<target name="help">
    <echo>
        --------------------------------------------------
        compile - Compile
        archive - Generate WAR file
        --------------------------------------------------
    </echo>
</target>

<target name="init">
    <delete dir="${WEB-INF}/classes" />
    <mkdir dir="${WEB-INF}/classes" />
</target>

<target name="compile" depends="init">
    <javac srcdir="${basedir}/src" 
                destdir="${WEB-INF}/classes" 
                classpathref="libs">
    </javac>
</target>

<target name="archive" depends="compile">
    <delete dir="${OUT}" />
    <mkdir dir="${OUT}" />
    <delete dir="${TEMP}" />
    <mkdir dir="${TEMP}" />
    <copy todir="${TEMP}" >
        <fileset dir="${basedir}/WebRoot">
        </fileset>
    </copy>
    <move file="${TEMP}/log4j.properties" 
                    todir="${TEMP}/WEB-INF/classes" />
    <war destfile="${OUT}/${WAR_FILE_NAME}" 
                    basedir="${TEMP}" 
                    compress="true" 
                    webxml="${TEMP}/WEB-INF/web.xml" />
    <delete dir="${TEMP}" />
</target>

<path id="libs">
    <fileset includes="*.jar" dir="${WEB-INF}/lib" />
</path>


3

WEB-INF ফোল্ডারের বাইরে নিম্নলিখিত কমান্ডটি ব্যবহার করুন। এটি আপনার যুদ্ধ ফাইল তৈরি করা উচিত এবং আমি জানি দ্রুততম পদ্ধতি।

(আপনার জেডিকে ১.7++ ইনস্টলড এবং এনভায়রনমেন্ট ভেরিয়েবলের দরকার হবে যা আপনার জেডিকে এর বিন ডিরেক্টরিতে নির্দেশ করবে))

jar -cvf projectname.war *

রেফারেন্স লিংক


যদি আপনি গ্রহণ করেন 'jar' is not recognized as an internal or external commandতবে চেষ্টা করুন"%JAVA_HOME%\bin\jar" -cvf projectname.war *
জাওয়াদ আল শায়খ

2

আরেকটি বিকল্প হ'ল এটি Elpipse ব্যবহার করে স্বয়ংক্রিয়ভাবে তৈরি করা। অবশ্যই আপনার যদি অবিচ্ছিন্ন একীকরণের পরিবেশ থাকে তবে পিঁপড়া বা মাভেনের প্রস্তাব দেওয়া হয়। রফতানি বিকল্পটি খুব সুবিধাজনক নয় কারণ আপনাকে প্রতিবার রফতানি বৈশিষ্ট্যগুলি কনফিগার করতে হবে।

পদক্ষেপ:

  1. "প্রকল্প সংরক্ষণাগার" সমর্থন সক্ষম করুন; এটি আপনার প্রকল্পের উপর নির্ভর করে (আমি এটি জাভা ইই / ওয়েব প্রকল্পে ব্যবহার করেছি)। প্রকল্পের মূল ডিরেক্টরিটি ডান ক্লিক করুন; কনফিগার -> প্রকল্প সংরক্ষণাগার সমর্থন যোগ করুন।

  2. "প্রোজেক্ট আর্কাইভস" শীর্ষ ডিয়ারে গিয়ে একটি নতুন সংরক্ষণাগার তৈরি করুন। আপনার কাছে কেবল জার বিকল্প রয়েছে তবে আপনার সংরক্ষণাগার নাম রাখুন * .war।

  3. ফাইলসেট-গুলি কনফিগার করুন, অর্থাৎ কোন ফাইল অন্তর্ভুক্ত করা উচিত। টিপিক্যাল হ'ল ওয়েব ডিপ্লোয়মেন্ট অ্যাসেমব্লি (প্রকল্পের সম্পত্তি) কনফিগার করা হয়েছে এমন একইভাবে দুটি ফাইলসেট কনফিগার করা।

    • অনুলিপি / ওয়েবসন্ট
    • ওয়েব / আইএনএফ / ক্লাসে অনুলিপি / বিল্ড / ক্লাস করুন (আপনি সংরক্ষণাগারে ওয়েবে-আইএনএফ / ক্লাস ডিরেক্টরিটি সংজ্ঞায়নের পরে এই ফাইলসেটটি তৈরি করুন)
  4. আপনি কিছু কনফিগার ফাইল রেখেছেন তার উপর নির্ভর করে আপনার ফাইলসেটটি বাদ দিয়ে সম্পত্তি পরিবর্তন করতে হবে বা আপনার আরও ফাইলসেটের প্রয়োজন হতে পারে, তবে ধারণাটি হ'ল একবার এটি কনফিগার করার পরে আপনার এটি পরিবর্তন করার দরকার নেই।

  5. সংরক্ষণাগারটি ম্যানুয়ালি তৈরি করুন বা সরাসরি সার্ভারে প্রকাশ করুন; তবে গ্রহন দ্বারা আপনার জন্য স্বয়ংক্রিয়ভাবে নির্মিত


2

আর একটি সাধারণ বিকল্প গ্রেডল।

http://www.gradle.org/docs/current/userguide/application_plugin.html

একটি ওয়েব অ্যাপ্লিকেশন আপনার যুদ্ধ ফাইল তৈরি করতে:

Build.gradle এ, যুক্ত করুন:

apply plugin: 'war'

তারপরে:

./gradlew war

উপরে গৃহীত উত্তর থেকে বিন্যাসটি ব্যবহার করুন।


0

সহজ সমাধান যা গ্রহণের কর্মক্ষেত্রকে সতেজ করে তোলে:

<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="default">    
    <target name="default">
        <war destfile="target/MyApplication.war" webxml="web/WEB-INF/web.xml">
            <fileset dir="src/main/java" />
            <fileset dir="web/WEB-INF/views" />
            <lib dir="web/WEB-INF/lib"/>
            <classes dir="target/classes" />
        </war>
        <eclipse.refreshLocal resource="MyApplication/target" depth="infinite"/>
    </target>
</project>

0

স্ট্যান্ডার্ড ইক্লিপ্স ডায়নামিক ওয়েব প্রকল্প থেকে ওয়ার ফাইলগুলি তৈরির জন্য সরল শেল কোড। লিনাক্স প্ল্যাটফর্মে র‌্যাম ফাইল সিস্টেম (/ dev / shm) ব্যবহার করে।

#!/bin/sh

UTILITY=$(basename $0)

if [ -z "$1" ] ; then
    echo "usage: $UTILITY [-s] <web-app-directory>..."
    echo "       -s ..... With source"
    exit 1
fi

if [ "$1" == "-s" ] ; then
    WITH_SOURCE=1
    shift
fi

while [ ! -z "$1" ] ; do
    WEB_APP_DIR=$1

    shift

    if [ ! -d $WEB_APP_DIR ] ; then
        echo "\"$WEB_APP_DIR\" is not a directory"
        continue
    fi

    if [ ! -d $WEB_APP_DIR/WebContent ] ; then
        echo "\"$WEB_APP_DIR\" is not a Web Application directory"
        continue
    fi

    TMP_DIR=/dev/shm/${WEB_APP_DIR}.$$.tmp
    WAR_FILE=/dev/shm/${WEB_APP_DIR}.war

    mkdir $TMP_DIR

    pushd $WEB_APP_DIR > /dev/null
    cp -r WebContent/* $TMP_DIR
    cp -r build/* $TMP_DIR/WEB-INF
    [ ! -z "$WITH_SOURCE" ] && cp -r src/* $TMP_DIR/WEB-INF/classes
    cd $TMP_DIR > /dev/null
    [ -e $WAR_FILE ] && rm -f $WAR_FILE
    jar cf $WAR_FILE .
    ls -lsF $WAR_FILE
    popd > /dev/null

    rm -rf $TMP_DIR
done

-3

** গ্রিল ওয়েব প্রকল্পে গাইনেমেডের এক্সিলিপসে যুদ্ধ ফাইল তৈরি করা **

1. আমদানি প্রকল্প:

2. ডেটাসোর্স.groovy ফাইল পরিবর্তন করুন

এটির মতো: url = "jdbc: postgresql: //18.247.120.101: 8432 / PGMS"

2.chnge AppConfig.xml

3. টাস্ক ম্যানেজার থেকে জাভা কিল:

  1. গ্রহনে ক্লিন কোমন্ড চালান

  2. প্রকল্পের নাম দ্বারা চালিত 'প্রোড ওয়ার' চালান।

  3. লগ ফাইলটি পরীক্ষা করুন এবং একই তারিখের সাথে ওয়ার্কব্যাঞ্চের ডিরেক্টরিতে একই .war ফাইলটি সন্ধান করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.