سؤال

ما هي أفضل الممارسات لإنشاء ملفات الحرب (باستخدام الكسوف) لتشغيل على هر?دروس, روابط, الأمثلة هي موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

يمكنك استخدام النمل إعداد وتجميع ، الحرب, و نشر الحل الخاص بك.

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

يمكنك ثم تنفيذ نقرة واحدة في الكسوف أن النمل الهدف.هنا أمثلة على كل من الخطوات التالية:

شروط مسبقة

سوف نفترض أن لديك رمز المنظمة مثل:

  • ${basedir}/src:ملفات جافا, خصائص, XML ملفات التكوين
  • ${basedir}/web:الخاص بك ملفات JSP
  • ${basedir}/web/lib:أي الجرار المطلوبة في وقت التشغيل
  • ${basedir}/web/META-INF:البيان
  • ${basedir}/web/WEB-INF:الخاص بك web.xml الملفات

إعداد

تعريف 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>

تجميع

بناء الخاصة بك جافا الملفات إلى فئات و نسخ أكثر من أي Java القطع الأثرية الموجودة تحت src ولكن تحتاج إلى أن تكون متاحة في وقت التشغيل (على سبيل المثالخصائص ملفات XML ، إلخ.):

<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>

نشر

أخيرا, يمكنك إعداد مهمة لنشر الحرب مباشرة إلى الخاص بك القط نشر الموقع:

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

انقر فوق ويذهب!

مرة واحدة كل هذا ، ببساطة إطلاق default الهدف من الكسوف سوف تجميع الحرب ، ونشر الحل الخاص بك.

وميزة هذا النهج هو أنه سوف يعمل خارج الكسوف وكذلك داخل الكسوف و يمكن استخدامها بسهولة مشاركة استراتيجية نشر (مثلا ، عبر مصدر التحكم) مع المطورين الآخرين الذين هم أيضا العمل على المشروع الخاص بك.

نصائح أخرى

ولقد دائما اختيار فقط تصدير من الكسوف. إنه يبني ملف الحرب ويشمل جميع الملفات الضرورية. يوفر لك إنشاء المشروع كمشروع شبكة الإنترنت أن كل ما عليك القيام به. كسوف يجعل من السهل جدا القيام به.

ونحن نستخدم مخضرم (شقيق النمل الكبير) لجميع مشاريع جافا لدينا، ولها البرنامج المساعد WAR أنيق جدا. دروس واستخدام يمكن العثور عليها هناك.

وانه من الاسهل بكثير من النملة، متوافقة تماما مع الكسوف (استخدام <م> مخضرم الكسوف: الكسوف لإنشاء مشاريع الكسوف). وسهلة لتكوين

مخضرم المفضل

مخضرم WAR المساعد

وتكوين عينة:

<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>

الحرب الملف هو ببساطة ملف جرة مع امتداد الحرب, ولكن ما يجعل العمل هو كيف محتويات هو في الواقع منظم.

J2EE/Java EE البرنامج التعليمي يمكن أن تكون البداية:

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

و بريمج مواصفات يحتوي على التفاصيل:

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

إذا قمت بإنشاء مشروع جديد على شبكة الإنترنت في الكسوف (وأنا أشير إلى Java EE الإصدار), هيكل هو خلق لك و يمكنك أيضا أقول ذلك حيث Appserver تثبيت و نشر والبدء في التطبيق بالنسبة لك.

باستخدام "تصدير->الحرب الملف" الخيار سوف تتيح لك حفظ ملف الحرب.

إذا كنت غير متأكد من ما يجب القيام به و بدأت من الصفر ثم مخضرم يمكن أن تساعد في الحصول على انك بدأته.

من خلال اتباع الخطوات التالية يمكنك الحصول على حرب جديدة الإعداد المشروع تماما في الكسوف.

  1. تحميل وتثبيت مخضرم
  2. تذهب سطر الأوامر تشغيل: mvn archetype:generate
  3. اتبع دفع خطوات اختيار بسيط جافا ويب المشروع (18) اسم مناسب.
  4. عندما يتم الانتهاء من تشغيل: mvn eclipse:eclipse
  5. بداية الكسوف.اختر ملف> استيراد> القائمة المشروع.حدد الدليل حيث قمت بتشغيل mvn الأهداف.
  6. هذا هو يجب أن يكون لديك الآن جيد جدا بداية الحرب المشروع في الكسوف
  7. يمكنك إنشاء الحرب نفسها عن طريق تشغيل mvn package أو نشرها من خلال إعداد ملقم في الكسوف ببساطة إضافة إضافة المشروع إلى الخادم.

كما أن البعض الآخر قال السلبي من استخدام مخضرم هو أن لديك لاستخدام الاتفاقيات مخضرم.ولكن أعتقد إذا كنت بدأت للتو, التعلم الاتفاقيات فكرة جيدة قبل البدء في جعل الخاصة بك.لا يوجد شيء لوقف لكم تغيير/إعادة بيع ديون الخاصة بك الأسلوب المفضل في وقت لاحق.

ويساعد هذا الأمل.

استخدم كود البناء النمل أنا استخدم هذا لمشروعي SMS

<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>

سيكون هناك خيار آخر لبناء تلقائيا باستخدام الكسوف.بالطبع إذا كان لديك بيئة التكامل المستمر النمل أو مخضرم هو الموصى بها.تصدير بديلة ليست مريحة جدا لأن لديك لتكوين كل مرة التصدير خصائص.

الخطوات:

  1. تمكين "أرشيف" الدعم ؛ هذا قد تعتمد على المشروع الخاص بك (اعتدت على Java EE/مشروع ويب).انقر بزر الماوس الأيمن فوق المشروع جذر الدليل ، تكوين -> إضافة أرشيف الدعم.

  2. اذهب و إنشاء أرشيف جديد في "أرشيف" أعلى dir.لديك فقط جرة الخيار ، ولكن الاسم الذي الأرشيف *.الحرب.

  3. تكوين Fileset-s, i.e ما هي الملفات التي ستدرج.نموذجي تكوين اثنين filesets مماثلة كيفية نشر ويب الجمعية (project) تكوين.

    • نسخ /WebContent إلى /
    • نسخ /بناء/دروس ويب-INF/الطبقات (إنشاء هذا fileset بعد تعريف ويب-INF/فصول الدليل فى الأرشيف)
  4. قد تحتاج إلى tweek fileset استبعاد الممتلكات اعتمادا حيث يمكنك وضع بعض ملفات التكوين أو قد تحتاج أكثر filesets ، ولكن الفكرة هي أنه بمجرد تكوين هذا أنت لا تحتاج إلى تغيير ذلك.

  5. بناء الأرشيف يدويا أو نشر مباشرة إلى الخادم ؛ ولكن هو أيضا تلقائيا بنيت لك من قبل الكسوف

وخيار شائع آخر هو gradle.

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

لبناء ملف الحرب الخاصة بك في تطبيق ويب:

في build.gradle، إضافة:

apply plugin: 'war'

وبعد ذلك:

./gradlew war

استخدم تخطيط من الإجابة مقبولة أعلاه.

استخدم هذا الأمر خارج مجلد WEB-INF. وهذا ينبغي إنشاء ملف الحرب الخاصة بك. هذا هو أسرع طريقة وأنا أعلم.

وسوف تحتاج JDK 1.7+ تثبيت لتحقيق هذا الانجاز ومتغيرات البيئة التي تشير إلى الدليل بن لJDK الخاصة بك.

jar -cvf projectname.war *

المرجعي لينك

والحل أبسط مما ينعش أيضا مساحة العمل الكسوف:

<?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>

وكود التبسيط شل لإنشاء ملفات WAR من معيار الكسوف مشروع ويب ديناميكية. يستخدم RAM نظام الملفات (/ ديف / 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

**صنع الحرب الملف في Eclips Gaynemed من الكؤوس مشروع ويب **

1.مشروع استيراد:

2.تغيير مصدر البيانات.الملف groovy

مثل هذا:url="jdbc:كيو://18.247.120.101:8432/PGMS"

2.chnge AppConfig.xml

3.قتل جافا من إدارة المهام:

  1. تشغيل تنظيف comand في eclips

  2. تشغيل 'همز الحرب' fowllowed قبل اسم المشروع.

  3. التحقق من ملف سجل و تجد نفس .الحرب الملف في دليل منضدة مع نفس التاريخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top