创建战争文件(使用eclipse)以在tomcat上运行的最佳实践是什么?教程,链接,示例受到高度赞赏。
创建战争文件(使用eclipse)以在tomcat上运行的最佳实践是什么?教程,链接,示例受到高度赞赏。
Answers:
<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
任务,该任务创建分发目录并复制需要直接警告的所有工件:
<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
但需要在运行时可用的任何非Java构件(例如属性,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>
创建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
Servlet规范包含详细信息:
http://java.sun.com/products/servlet/download.html
如果您在Eclipse中创建一个新的Web项目(我指的是Java EE版本),则将为您创建该结构,还可以告诉该结构您的Appserver的安装位置,它将为您部署并启动该应用程序。
使用“导出-> WAR文件”选项将使您保存war文件。
如果您不确定该怎么做并且从头开始,那么Maven可以帮助您入门。
通过执行以下步骤,您可以在Eclipse中完美地完成新的战争项目设置。
mvn archetype:generate
mvn eclipse:eclipse
mvn package
或通过在eclipse中设置服务器并简单地将项目添加到服务器中来部署来创建战争。就像其他人所说的那样,使用Maven的缺点是您必须使用Maven约定。但是我认为,如果您刚刚起步,那么在开始编写自己的约定之前,学习约定是一个好主意。没有任何事情可以阻止您以后再更改/重构为自己的首选方法。
希望这可以帮助。
使用ant构建代码我将其用于我的项目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>
另一个选择是使用Eclipse自动构建它。当然,如果您具有持续集成环境,则建议使用Ant或Maven。导出替代方法不是很方便,因为您每次必须配置导出属性。
脚步:
启用“项目档案”支持;这可能取决于您的项目(我在Java EE / Web项目上使用了它)。右键单击项目根目录;配置->添加项目档案支持。
在“项目档案”顶部目录中创建一个新档案。您只有jar选项,但将其命名为* .war。
配置文件集,即要包含的文件。典型的是配置两个文件集,类似于Web部署程序集(项目属性)的配置方式。
您可能需要将文件集的exclude属性设置为tweek,这取决于放置一些配置文件的位置,或者您可能需要更多的文件集,但其想法是,一旦配置了此文件,就无需更改它。
手动建立档案或直接发布到服务器;但是Eclipse也会自动为您构建
另一个常见的选择是gradle。
http://www.gradle.org/docs/current/userguide/application_plugin.html
要在网络应用中构建战争文件:
在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文件的简单Shell代码。在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中制作战争文件**
1.导入项目:
2.更改datasource.groovy文件
像这样:url =“ jdbc:postgresql://18.247.120.101:8432 / PGMS”
2.chnge AppConfig.xml
3.从任务管理器中杀死Java:
在日食中运行干净的命令
运行项目名称后面的“ prod war”。
检查日志文件,并在具有相同日期的工作台目录中找到相同的.war文件。