如何创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中完美地获得新的战争项目设置。

  1. 下载并安装Maven
  2. 去命令行运行: mvn archetype:generate
  3. 按照提示的步骤 – select简单的Java Web项目(18)和一个合适的名称。
  4. 完成后运行: mvn eclipse:eclipse
  5. 启动Eclipse。 select文件 – >导入 – >现有项目。 select您运行mvn目标的目录。
  6. 这就是你现在应该有一个非常好的开始在日食战争项目
  7. 你可以通过运行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导出属性。

脚步:

  1. 启用“项目档案”支持; 这可能取决于你的项目(我在Java EE / Web项目中使用它)。 右键单击项目根目录 configuration – >添加项目档案支持。

  2. 去“Project Archives”顶部目录创build一个新的档案。 你只有jar选项,但是将你的档案命名为* .war。

  3. configurationFileset-s,即要包含哪些文件。 典型的做法是configuration两个文件集,类似于如何configurationWeb部署程序集(项目属性)。

    • 复制/ WebContent到/
    • 复制/构build/类到WEB-INF /类(在定义存档中的WEB-INF / classes目录后创build此文件集)
  4. 您可能需要根据放置某些configuration文件的位置来调整文件集排除属性,或者您可能需要更多的文件集,但是一旦configuration了这个configuration文件,您就不需要对其进行更改。

  5. 手动构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:

  1. 在eclips中运行干净的指令

  2. 按项目名称运行“prod war”。

  3. 检查日志文件并在同一date的工作台目录中find相同的.war文件。