Tomcatで実行する(eclipseを使用して)warファイルを作成するベストプラクティスは何ですか?チュートリアル、リンク、例は高く評価されています。
Tomcatで実行する(eclipseを使用して)warファイルを作成するベストプラクティスは何ですか?チュートリアル、リンク、例は高く評価されています。
回答:
Antを使用して、ソリューションをセットアップ、コンパイル、WAR、およびデプロイできます。
<target name="default" depends="setup,compile,buildwar,deploy"></target>
次に、Eclipseでワンクリックを実行して、そのAntターゲットを実行できます。以下に、各ステップの例を示します。
コードが次のように構成されていると想定します。
${basedir}/src
:Javaファイル、プロパティ、XML構成ファイル${basedir}/web
:JSPファイル${basedir}/web/lib
:実行時に必要なJAR${basedir}/web/META-INF
:あなたのマニフェスト${basedir}/web/WEB-INF
:web.xmlファイルsetup
配布ディレクトリを作成し、WARを直接行う必要があるアーティファクトをコピーするタスクを定義します。
<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ファイルなどのJava以外のアーティファクトをコピーします。
<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>
WAR自体を作成します。
<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をTomcatのデプロイ場所に直接デプロイするタスクを設定できます。
<target name="deploy">
<copy file="My.war" todir="${tomcat.deploydir}" />
</target>
これがすべてセットアップされたらdefault
、Eclipseからターゲットを起動するだけで、ソリューションがコンパイル、WAR、およびデプロイされます。
このアプローチの利点は、Eclipse内だけでなくEclipse内でも機能し、プロジェクトに取り組んでいる他の開発者と(たとえば、ソース管理を介して)展開戦略を簡単に共有できることです。
[Eclipseからエクスポート]を常に選択しました。warファイルを作成し、必要なすべてのファイルを含めます。プロジェクトをWebプロジェクトとして作成し、それを行うだけで済みます。Eclipseを使用すると、実行が非常に簡単になります。
私たちはすべてのJavaプロジェクトにMaven(Antの兄貴)を使用しており、非常に気の利いたWARプラグインを持っています。チュートリアルと使用法がそこにあります。
Antよりもはるかに簡単で、Eclipseと完全に互換性があり(maven eclipse: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>
warファイルはwar拡張子が付いたjarファイルですが、機能するのはコンテンツが実際にどのように構造化されているかです。
J2EE / Java EEチュートリアルを開始することができます。
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html
また、サーブレット仕様には詳細が含まれています。
http://java.sun.com/products/servlet/download.html
Eclipseで新しいWebプロジェクトを作成する場合(私はJava EEバージョンを指します)、構造が作成されます。また、Appserverがインストールされている場所を指定して、アプリケーションをデプロイして起動することもできます。
「Export-> WAR file」オプションを使用すると、warファイルを保存できます。
何をすべきかわからず、ゼロから始める場合は、Mavenがあなたを始める手助けをします。
以下の手順に従って、新しいwarプロジェクトの設定を完全に日食で取得できます。
mvn archetype:generate
mvn eclipse:eclipse
mvn package
Eclipseでサーバーをセットアップし、サーバーにプロジェクトを追加するだけで、戦争を実行またはデプロイして戦争自体を作成できます。他の人がMavenを使用することの欠点は、Mavenの規則を使用する必要があるということです。しかし、もしあなたが始めたばかりなら、慣習を作る前に慣習を学ぶことは良い考えだと思います。後で自分の好みの方法に変更/リファクタリングするのを止めるものは何もありません。
お役に立てれば。
Ant warタスクを使用する
私のプロジェクトSMSに使用するAntビルドコードを使用する
<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>
別のオプションは、Eclipseを使用して自動的にビルドすることです。もちろん、継続的な統合環境がある場合は、AntまたはMavenをお勧めします。エクスポートプロパティは毎回構成する必要があるため、エクスポートの代替方法はあまり便利ではありません。
手順:
「プロジェクトアーカイブ」サポートを有効にします。これはプロジェクトに依存する可能性があります(私はJava EE / Webプロジェクトで使用しました)。プロジェクトのルートディレクトリを右クリックします。構成->プロジェクトアーカイブサポートの追加。
「プロジェクトアーカイブ」のトップディレクトリに移動して新しいアーカイブを作成します。jarオプションしかありませんが、*。warというアーカイブ名を付けます。
Fileset-s、つまりどのファイルを含めるかを設定します。通常は、Web配置アセンブリ(プロジェクトプロパティ)の構成方法と同様に2つのファイルセットを構成します。
一部の構成ファイルを配置した場所や、さらに多くのファイルセットが必要な場合は、ファイルセットの除外プロパティを変更する必要があるかもしれませんが、一度設定すると、変更する必要がないという考え方です。
アーカイブを手動で構築するか、サーバーに直接公開します。Eclipseによって自動的にビルドされます
別の一般的なオプションはgradleです。
http://www.gradle.org/docs/current/userguide/application_plugin.html
ウェブアプリでwarファイルを作成するには:
build.gradleに、次を追加します。
apply plugin: 'war'
次に:
./gradlew war
上記の受け入れられた回答のレイアウトを使用してください。
Eclipseワークスペースも更新するシンプルなソリューション:
<?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>
標準のEclipse動的WebプロジェクトからWARファイルを作成するための単純なシェルコード。LinuxプラットフォームでRAMファイルシステム(/ 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
** Grails WebプロジェクトのEclips GaynemedでWarファイルを作成中**
1.プロジェクトのインポート:
2. datasource.groovyファイルを変更する
このように:url = "jdbc:postgresql://18.247.120.101:8432 / PGMS"
2.chnge AppConfig.xml
3.タスクマネージャーからJavaを終了します。
Eclipseでクリーンコマンドを実行する
プロジェクト名の後に「prod war」を実行します。
ログファイルを確認し、同じ日付のワークベンチのディレクトリで同じ.warファイルを見つけます。