如何创建war文件

94 java eclipse tomcat war

创建war文件(使用eclipse)在tomcat上运行的最佳实践是什么?教程,链接,示例非常感谢.

Dav*_*ron 97

您可以使用Ant来设置,编译,WAR和部署解决方案.

<target name="default" depends="setup,compile,buildwar,deploy"></target>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在Eclipse中执行一次单击以运行该Ant目标.以下是每个步骤的示例:

前提条件

我们假设您的代码组织如下:

  • ${basedir}/src:Java文件,属性,XML配置文件
  • ${basedir}/web:您的JSP文件
  • ${basedir}/web/lib:运行时需要的任何JAR
  • ${basedir}/web/META-INF:你的清单
  • ${basedir}/web/WEB-INF:您的web.xml文件

建立

定义setup创建分发目录的任务,并复制需要直接进行WARred的所有工件:

<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>
Run Code Online (Sandbox Code Playgroud)

将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>
Run Code Online (Sandbox Code Playgroud)

构建WAR

创建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>
Run Code Online (Sandbox Code Playgroud)

部署

最后,您可以设置任务以将WAR直接部署到Tomcat部署位置:

<target name="deploy">
    <copy file="My.war" todir="${tomcat.deploydir}" />
</target>
Run Code Online (Sandbox Code Playgroud)

点击即可!

完成所有这些后,只需default从Eclipse 启动目标即可编译,WAR和部署您的解决方案.

这种方法的优点是,它会的Eclipse在Eclipse之外以及工作,并可以用来轻松共享部署策略(例如,通过源头控制)与其他开发者谁也致力于您的项目.

  • 这个答案是不必要的复杂. (2认同)

Mec*_*are 37

我总是选择从Eclipse导出.它构建war文件并包含所有必需的文件.提供您创建项目作为Web项目,您只需要做.Eclipse使得它非常简单.

  • 我选择快速和脏的网络应用程序.编写一个ant脚本只是为了获得测试WAR out太多了. (4认同)

mik*_*kek 23

我们使用Maven(Ant的大哥哥)来完成我们所有的java项目,并且它有一个非常漂亮的WAR插件.可以在那里找到教程和用法.

它比Ant容易得多,与Eclipse完全兼容(使用maven eclipse:eclipse创建Eclipse项目)并且易于配置.

Maven的主页

Maven WAR插件

示例配置:

<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>
Run Code Online (Sandbox Code Playgroud)

  • 除了Maven的XML结构基于ANT,并且ANT被合并为Maven的子集. (4认同)

box*_*ats 14

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文件.


Pab*_*jim 12

如果您不确定该怎么做并且从头开始,那么Maven可以帮助您入门.

按照以下步骤,您可以在eclipse中完美地设置新的战争项目.

  1. 下载并安装Maven
  2. 去命令行运行: mvn archetype:generate
  3. 按照提示的步骤 - 选择简单的Java Web项目(18)和合适的名称.
  4. 完成后运行: mvn eclipse:eclipse
  5. 启动Eclipse.选择文件 - >导入 - >现有项目.选择运行mvn目标的目录.
  6. 那就是你现在应该有一个非常好的开始在日食的战争项目
  7. 您可以通过mvn package在eclipse中设置服务器来运行或部署它来创建战争本身,只需添加将项目添加到服务器即可.

正如其他一些人所说,使用maven的缺点是你必须使用maven约定.但我想如果你刚刚开始,在你开始自己制作之前学习惯例是一个好主意.没有什么可以阻止你在以后改变/重构你自己喜欢的方法.

希望这可以帮助.


XCh*_*kuX 5

在 WEB-INF 文件夹外部使用以下命令。这应该会创建您的 war 文件,并且是我所知道的最快的方法。

(您需要安装 JDK 1.7+ 以及指向 JDK 的 bin 目录的环境变量。)

jar -cvf projectname.war *
Run Code Online (Sandbox Code Playgroud)

参考链接