如何创build战争文件
创buildwar文件(使用eclipse)在tomcat上运行的最佳实践是什么? 教程,链接,例子,高度赞赏。
您可以使用Ant来设置,编译, WAR和部署您的解决scheme。
<target name="default" depends="setup,compile,buildwar,deploy"></target>
然后,您可以在Eclipse中执行一次单击来运行该Ant目标。 以下是每个步骤的示例:
前提条件
我们假设你的代码是这样组织的:
-
${basedir}/src
:Java文件,属性,XMLconfiguration文件 -
${basedir}/web
:您的JSP文件 -
${basedir}/web/lib
:运行时所需的任何JAR -
${basedir}/web/META-INF
:您的清单 -
${basedir}/web/WEB-INF
:您的web.xml文件
build立
定义一个创build分发目录的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文件构build到类中,并复制驻留在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>
build立战争
创buildWAR本身:
<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>
点击并去!
完成所有这些设置后,只需从Eclipse启动default
目标即可编译WAR,并部署解决scheme。
这种方法的优点是它可以在Eclipse之外以及在Eclipse之内工作,并且可以用来轻松地与其他开发人员共享您的部署策略(例如,通过源代码pipe理)。
我一直select从Eclipse导出。 它build立战争文件,并包括所有必要的文件。 提供您创build该项目作为一个Web项目,这是你所需要做的。 Eclipse使得它非常简单。
我们所有的Java项目都使用Maven(Ant的大哥哥),并且它有一个非常漂亮的WAR插件。 教程和用法可以在那里find。
它比Ant更容易,完全兼容Eclipse(使用maven eclipse:eclipse来创buildEclipse项目)并且易于configuration。
Maven的主页
Maven WAR插件
示例configuration:
<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>
战争文件只是一个带有战争扩展名的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中创build新的Web项目(我指的是Java EE版本),则会为您创build结构,并且还可以告诉它您的Appserver的安装位置,并将为您部署和启动该应用程序。
使用“导出 – > WAR文件”选项可以让你保存战争文件。
如果你不知道该怎么做,并从头开始,那么Maven可以帮助你开始。
按照下面的步骤,您可以在eclipse中完美地获得新的战争项目设置。
- 下载并安装Maven
- 去命令行运行:
mvn archetype:generate
- 按照提示的步骤 – select简单的Java Web项目(18)和一个合适的名称。
- 完成后运行:
mvn eclipse:eclipse
- 启动Eclipse。 select文件 – >导入 – >现有项目。 select您运行mvn目标的目录。
- 这就是你现在应该有一个非常好的开始在日食战争项目
- 你可以通过运行
mvn package
创build战争本身,或者通过在eclipse中设置一个服务器来部署它,并简单地添加项目到服务器。
正如其他一些人所说,使用maven的缺点是你必须使用maven约定。 但是我觉得如果你刚刚开始,学习惯例是一个好主意,然后再开始做自己的事情。 没有什么可以阻止你在稍后改变/重构自己喜欢的方法。
希望这可以帮助。
使用Ant战争任务
使用ant构build代码我将其用于我的项目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>
另一个select是使用Eclipse自动构build它。 当然,如果你有持续的集成环境,推荐使用Ant或者Maven。 导出替代方式不是很方便,因为您必须每次configuration导出属性。
脚步:
-
启用“项目档案”支持; 这可能取决于你的项目(我在Java EE / Web项目中使用它)。 右键单击项目根目录 configuration – >添加项目档案支持。
-
去“Project Archives”顶部目录创build一个新的档案。 你只有jar选项,但是将你的档案命名为* .war。
-
configurationFileset-s,即要包含哪些文件。 典型的做法是configuration两个文件集,类似于如何configurationWeb部署程序集(项目属性)。
- 复制/ WebContent到/
- 复制/构build/类到WEB-INF /类(在定义存档中的WEB-INF / classes目录后创build此文件集)
-
您可能需要根据放置某些configuration文件的位置来调整文件集排除属性,或者您可能需要更多的文件集,但是一旦configuration了这个configuration文件,您就不需要对其进行更改。
-
手动构build存档或直接发布到服务器; 但也是由Eclipse为您自动构build的
另一个常见的select是gradle。
http://www.gradle.org/docs/current/userguide/application_plugin.html
在Web应用程序中构build您的战争文件:
在build.gradle中,添加:
apply plugin: 'war'
然后:
./gradlew war
使用上面接受的答案的布局。
更简单的解决scheme,它也刷新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>
用于从标准EclipsedynamicWeb项目创buildWAR文件的简单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
在WEB-INF文件夹外使用这个命令。 这应该创build你的战争文件。 这是我知道的最快捷的方法。
您将需要安装JDK 1.7+以实现指向JDK的bin目录的这个专长和环境variables。
jar -cvf projectname.war *
参考链接
**在Eclips Gaynemed的Grails web项目中制作战争文件**
1,import项目:
2.更改datasource.groovy文件
像这样:url =“jdbc:postgresql://18.247.120.101:8432 / PGMS”
2.chnge AppConfig.xml
3.从任务pipe理器中杀死Java:
-
在eclips中运行干净的指令
-
按项目名称运行“prod war”。
-
检查日志文件并在同一date的工作台目录中find相同的.war文件。