创建 war 文件(使用 eclipse)以在 tomcat 上运行的最佳实践是什么?教程、链接、示例受到高度赞赏。

有帮助吗?

解决方案

您可以使用 蚂蚁 设置、编译、 战争, ,并部署您的解决方案。

<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 创建分发目录并复制任何需要直接 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 文件构建到类中,并复制位于其下的任何非 Java 工件 src 但需要在运行时可用(例如属性、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使得它非常简单。

我们使用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>

war文件只是一个带有war扩展名的jar文件,但它的工作原理是内容的实际结构。

J2EE / Java EE教程可以是一个开始:

http://java.sun.com/j2ee/教程/ 1_3-FCS / DOC / WebComponents3.html

Servlet规范包含血腥细节:

http://java.sun.com/products/servlet/download.html

如果您在Eclipse中创建一个新的Web项目(我指的是Java EE版本),那么为您创建结构,您也可以告诉它您的Appserver安装位置,它将为您部署和启动应用程序

使用“Export-&gt; WAR文件”选项将让您保存war文件。

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

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

  1. 下载并安装 Maven
  2. 执行命令行运行: mvn archetype:generate
  3. 按照提示的步骤 - 选择简单的Java Web项目(18)和合适的名称。
  4. 完成后运行: mvn eclipse:eclipse
  5. 启动Eclipse。选择文件 - &gt;导入 - &gt;现有项目。选择运行mvn目标的目录。
  6. 那就是你现在应该在eclipse的战争项目中有一个非常好的开始
  7. 您可以通过运行 mvn package 来创建war本身,或者通过在eclipse中设置服务器并仅添加将项目添加到服务器来部署它。
  8. 正如其他一些人所说,使用maven的缺点是你必须使用maven约定。但我想如果你刚刚开始,在你开始自己制作之前学习惯例是一个好主意。没有什么可以阻止你在以后更改/重构你自己喜欢的方法。

    希望这有帮助。

使用ant构建代码 我用它作为我的项目短信

<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。导出替代方案不是很方便,因为您必须每次都配置导出属性。

脚步:

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

  2. 去“Project Archives”顶部目录中创建一个新的存档。您只有 jar 选项,但将存档命名为 *.war。

  3. 配置 Fileset-s,即要包含哪些文件。典型的是配置两个文件集,类似于配置 Web 部署程序集(项目属性)。

    • 将 /WebContent 复制到 /
    • 将 /build/classes 复制到 WEB-INF/classes (在存档中定义 WEB-INF/classes 目录后创建此文件集)
  4. 您可能需要调整文件集排除属性,具体取决于放置某些配置文件的位置,或者您可能需要更多文件集,但想法是一旦配置了此属性,就不需要更改它。

  5. 手动构建存档或直接发布到服务器;但也由 Eclipse 自动为您构建

另一个常见的选择是gradle。

http://www.gradle.org/docs/current/userguide /application_plugin.html

在网络应用中构建war文件:

在build.gradle中,添加:

apply plugin: 'war'

然后:

./gradlew war

使用上面接受的答案中的布局。

在WEB-INF文件夹外使用此命令。这应该创建你的war文件。这是我所知道的最快捷的方法。

您需要安装JDK 1.7+才能实现此壮举和环境变量,这些变量指向JDK的bin目录。

jar -cvf projectname.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 <*>)

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

**在Eclips中制作战争文件Gilsnemed of grails web project **

1.进口项目:

2.更改datasource.groovy文件

像这样:url =&quot; jdbc:postgresql://18.247.120.101:8432 / PGMS&quot;

2.chnge AppConfig.xml

3.从任务管理器中获取Java:

  1. 在eclips中运行清洁命令

  2. 以项目名称运行'prod war'。

  3. 检查日志文件,并在工作台目录中查找相同日期的.war文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top