Tomcat üzerinde çalıştırmak için savaş dosyaları oluşturmanın (tutulmayı kullanarak) en iyi uygulamaları nelerdir? öğreticiler, bağlantılar, örnekler çok takdir edilmektedir.
Tomcat üzerinde çalıştırmak için savaş dosyaları oluşturmanın (tutulmayı kullanarak) en iyi uygulamaları nelerdir? öğreticiler, bağlantılar, örnekler çok takdir edilmektedir.
Yanıtlar:
Sen kullanabilirsiniz Ant kurmak, derlemek WAR ve çözümünüzü dağıtmak.
<target name="default" depends="setup,compile,buildwar,deploy"></target>
Daha sonra bu Ant hedefini çalıştırmak için Eclipse'de tek bir tıklama uygulayabilirsiniz. Aşağıda, adımların her birine ilişkin örnekler verilmiştir:
Kodunuzun şu şekilde organize edildiğini varsayacağız:
${basedir}/src
: Java dosyaları, özellikleri, XML yapılandırma dosyaları${basedir}/web
: JSP dosyalarınız${basedir}/web/lib
: Çalışma zamanında gerekli tüm JAR'lar${basedir}/web/META-INF
: Bildiriminiz${basedir}/web/WEB-INF
: Web.xml dosyalarınızsetup
Dağıtım dizinini oluşturan ve doğrudan WARred edilmesi gereken tüm yapıları kopyalayan bir görev tanımlayın :
<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 dosyalarınızı sınıflar halinde oluşturun ve altında bulunan src
ancak çalışma zamanında bulunması gereken Java dışı yapıların (ör. Özellikler, XML dosyaları vb.) Üzerine kopyalayın :
<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>
SAVAŞ'ın kendisini yaratın:
<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>
Son olarak, WAR'ı doğrudan Tomcat konuşlandırma konumunuza dağıtmak için bir görev oluşturabilirsiniz:
<target name="deploy">
<copy file="My.war" todir="${tomcat.deploydir}" />
</target>
Tüm bunlar ayarlandıktan sonra, default
hedefi Eclipse'den başlatmak, çözümünüzü derleyecek, SAVAŞACAK ve dağıtacaktır.
Bu yaklaşımın avantajı, Eclipse dışında ve Eclipse içinde de çalışacak olması ve dağıtım stratejinizi (örneğin kaynak kontrolü aracılığıyla) projenizde çalışan diğer geliştiricilerle kolayca paylaşmak için kullanılabilmesidir.
Her zaman Eclipse'den Dışa Aktar'ı seçtim. Savaş dosyasını oluşturur ve gerekli tüm dosyaları içerir. Projeyi yapmanız gereken tek şey bir web projesi olarak oluşturmanızı sağlamak. Eclipse, bunu yapmayı çok kolaylaştırır.
Tüm java projelerimiz için Maven (Ant'ın ağabeyi) kullanıyoruz ve çok şık bir WAR eklentisine sahip. Öğreticiler ve kullanım burada bulunabilir.
Ant'tan çok daha kolay, Eclipse ile tamamen uyumlu ( Eclipse projeleri oluşturmak için maven eclipse: eclipse kullanın) ve yapılandırması kolaydır.
Örnek Yapılandırma:
<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>
Bir savaş dosyası, basitçe bir savaş uzantılı bir jar dosyasıdır, ancak onu çalıştıran şey, içeriğin gerçekte nasıl yapılandırıldığıdır.
J2EE / Java EE öğreticisi bir başlangıç olabilir:
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html
Ve Servlet spesifikasyonu kanlı ayrıntıları içerir:
http://java.sun.com/products/servlet/download.html
Eclipse'de yeni bir web projesi oluşturursanız (Java EE sürümünden bahsediyorum), yapı sizin için oluşturulur ve ayrıca ona, Uygulama Sunucunuzun nerede kurulduğunu söyleyebilir ve sizin için uygulamayı dağıtıp başlatır.
"Export-> WAR dosyası" seçeneğini kullanmak, savaş dosyasını kaydetmenize izin verir.
Ne yapacağınızdan emin değilseniz ve sıfırdan başlıyorsanız, Maven başlamanıza yardımcı olabilir.
Aşağıdaki adımları takip ederek, tutulmada mükemmel bir şekilde yeni bir savaş projesi kurgusu elde edebilirsiniz.
mvn archetype:generate
mvn eclipse:eclipse
mvn package
Tutulma sırasında bir sunucu kurarak ve sadece projeyi sunucuya ekleyerek savaşı çalıştırarak veya konuşlandırarak savaşın kendisini yaratabilirsiniz .Bazılarının dediği gibi, maven kullanmanın dezavantajı, maven geleneklerini kullanmak zorunda olmanızdır. Ama bence yeni başlıyorsanız, kendi kurallarınızı oluşturmaya başlamadan önce kuralları öğrenmek iyi bir fikirdir. Daha sonraki bir noktada kendi tercih ettiğiniz yönteme geçmenizi / yeniden düzenlemenizi durduracak hiçbir şey yoktur.
Bu yardımcı olur umarım.
Karınca savaşı görevini kullanın
Karınca derleme kodunu kullan Proje SMS'im için bunu kullanıyorum
<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>
WEB-INF klasörünün dışında aşağıdaki komutu kullanın. Bu, savaş dosyanızı oluşturmalı ve bildiğim en hızlı yöntem.
(JDK 1.7+ kurulu ve JDK'nızın bin dizinine işaret eden ortam değişkenlerine ihtiyacınız olacak.)
jar -cvf projectname.war *
'jar' is not recognized as an internal or external command
deneyin"%JAVA_HOME%\bin\jar" -cvf projectname.war *
Diğer bir seçenek de Eclipse kullanarak otomatik olarak oluşturmaktır. Elbette sürekli entegrasyon ortamınız varsa Ant veya Maven önerilir. Dışa aktarma alternatifi çok uygun değildir çünkü dışa aktarma özelliklerini her seferinde yapılandırmanız gerekir.
ADIMLAR:
"Proje Arşivleri" desteğini etkinleştirin; bu, projenize bağlı olabilir (Java EE / Web projesinde kullandım). Proje kök dizinine sağ tıklayın; Yapılandır -> Proje Arşivleri Desteği Ekle.
Gidin ve "Proje Arşivleri" üst dizininde yeni bir arşiv oluşturun. Yalnızca jar seçeneğiniz var, ancak arşivlediğiniz adı * .war.
Dosya kümelerini, yani hangi dosyaların ekleneceğini yapılandırın. Tipik olarak, Web Dağıtımı Derlemesinin (proje özelliği) yapılandırılmasına benzer iki dosya kümesini yapılandırmaktır.
Bazı yapılandırma dosyalarını nereye yerleştirdiğinize bağlı olarak, fileset exclude özelliğini tweeklemeniz gerekebilir veya daha fazla dosya grubuna ihtiyacınız olabilir, ancak fikir, bunu yapılandırdıktan sonra değiştirmenize gerek olmamasıdır.
Arşivi manuel olarak oluşturun veya doğrudan sunucuya yayınlayın; ancak Eclipse tarafından sizin için otomatik olarak oluşturulmuştur
Diğer bir yaygın seçenek gradle'dır.
http://www.gradle.org/docs/current/userguide/application_plugin.html
Savaş dosyanızı bir web uygulamasında oluşturmak için:
Build.gradle'da şunu ekleyin:
apply plugin: 'war'
Sonra:
./gradlew war
Yukarıdaki kabul edilen cevaptaki düzeni kullanın.
Eclipse çalışma alanını da yenileyen daha basit çözüm:
<?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>
Standart bir Eclipse dinamik Web Projesinden WAR dosyaları oluşturmak için basit Kabuk kodu. Linux platformunda RAM Dosya sistemi (/ dev / shm) kullanır.
#!/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
** Grails web projesinin Eclips Gaynemed'de Savaş dosyası oluşturma **
1. ithalat projesi:
2. datasource.groovy dosyasını değiştirin
Şunun gibi: url = "jdbc: postgresql: //18.247.120.101: 8432 / PGMS"
2.chnge AppConfig.xml
3. Java'yı Görev Yöneticisi'nden öldürün:
tutulmalarda temiz komut çalıştır
proje adına göre aktarılan 'prod war' çalıştırın.
Günlük dosyasını kontrol edin ve aynı .war dosyasını aynı tarihe sahip workbench dizininde bulun.