java - 如何创建 war 文件

标签 java eclipse tomcat war

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

最佳答案

您可以使用 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:你的 list
  • ${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>

编译

将您的 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

创建 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>

点击即可!

设置完所有这些后,只需从 Eclipse 启动 default 目标即可编译、WAR 并部署您的解决方案。

这种方法的优势在于它可以在 Eclipse 之外以及在 Eclipse 内部工作,并且可以用来与其他正在处理您的项目的开发人员轻松地共享您的部署策略(例如通过源代码控制)。

关于java - 如何创建 war 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001714/

相关文章:

java - 一个应用程序代码具有多个上下文路径/部署以连接到不同的数据库

java - 设置可执行 Jar 文件的图标

java - 方法参数的编译时验证

c - 如何在 eclipse 中重命名(重构)c 宏

c - 使 Eclipse 列出(仅)所有枚举类型变量赋值的枚举条目

java - 附加到某些 javascript 文件的非法字符

java - JSP 的 web.xml 配置

java - Gradle JavaExec 任务因以下任务之间的循环依赖而失败

java - 如何在 logcat 中打印 arraylist 内容的值?

java - java 中有一些 api 等于 openSSL 吗?