如何创建war文件如何创建war文件(How to create war files)

2019-05-13 10:43发布

什么是创建WAR文件(使用eclipse)在Tomcat运行的最佳做法? 教程,链接,实例高度赞赏。

Answer 1:

您可以使用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 :你的清单
  • ${basedir}/web/WEB-INF :你的web.xml文件

建立

定义setup创建分发目录和副本需要直接争战任何文物的任务:

<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之外以及工作,并可以用来轻松共享部署策略(例如,通过源头控制)与其他开发者谁也致力于您的项目。



Answer 2:

我一直只是选择的出口从Eclipse中。 它建立在战争的文件,包括所有必要的文件。 提供您创建的项目作为一个Web项目是所有你需要做的。 Eclipse使这样做很简单的。



Answer 3:

我们使用Maven(Ant的大哥),为我们所有的Java项目,它有一个非常漂亮的WAR插件。 教程和使用可以在那里找到。

这是比蚂蚁更容易了很多,与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>


Answer 4:

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版本),结构为您创建,你也可以告诉它安装在您的应用程序服务器在那里,它将部署并启动应用程序为您服务。

使用“导出 - > WAR文件”选项可以让您保存战争文件。



Answer 5:

如果你不知道该怎么做,从头开始,然后Maven可以帮助您开始。

通过遵循下面的步骤,你可以在Eclipse中完全得到了新的战争项目设置。

  1. 下载并安装的Maven
  2. 进入命令行运行: mvn archetype:generate
  3. 按照提示步骤 - 选择简单的java web项目(18)和一个合适的名字。
  4. 当它完成运行: mvn eclipse:eclipse
  5. 启动Eclipse。 选择文件 - >导入 - >现有项目。 选择您跑MVN目标的目录。
  6. 就是这样,你现在应该有一个很好的开始在Eclipse中一战项目
  7. 您可以通过运行创造了战争本身mvn package或通过建立在Eclipse中的服务器和简单的添加添加项目到服务器上进行部署。

正如一些人所说的使用maven的缺点是,你必须使用maven的约定。 但我认为,如果你是刚刚起步,学习的约定是一个好主意,你开始做自己的面前。 没有什么能阻止你在以后改变/重构到您自己的首选方法。

希望这可以帮助。



Answer 6:

使用Ant的战争任务



Answer 7:

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



Answer 8:

另一种选择是自动建立它使用Eclipse。 当然,如果你有持续集成环境,建议Ant或Maven。 因为你必须配置每次出口性质的出口替代方案是不是很方便。

脚步:

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

  2. 你去在“项目档案”顶级目录创建一个新的存档。 你只有罐子的选择,但你的名字存档*的.war。

  3. 配置文件集-S,即要包括哪些文件。 典型的是配置两个文件集类似Web部署大会(项目属性)的配置方式。

    • 复制/的WebContent到/
    • 复制/编译/类WEB-INF / classes目录(定义在归档中的WEB-INF / classes目录后创建这个文件集)
  4. 您可能需要tweek文件集排除属性取决于您放置一些配置文件,或者你可能需要更多的文件集,但这个想法是,一旦你配置这个你不需要去改变它。

  5. 手动建立档案或直接发布到服务器; 但也自动的Eclipse为你建



Answer 9:

另一种常见的选择是gradle这个。

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

要建立一个Web应用程序WAR文件:

在的build.gradle,添加:

apply plugin: 'war'

然后:

./gradlew war

从上述接受的答案使用的布局。



Answer 10:

在WEB-INF文件夹之外使用此命令。 这应该创建一个WAR文件。 这是我知道的一个快捷的方法。

您将需要JDK 1.7+安装来实现这一壮举和环境变量指向你的JDK的bin目录。

jar -cvf projectname.war *

参考链接



Answer 11:

简单的解决方案,其也可刷新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>


Answer 12:

从一个标准的创建WAR文件简单的shell代码的Eclipse动态Web项目。 在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


Answer 13:

**发动战争文件中Grails的项目ECLIPS Gaynemed **

1,引进项目:

2.Change DataSource.groovy文件

就像这样:URL = “的jdbc:在PostgreSQL://18.247.120.101:8432 /甘糖酯”

2.chnge AppConfig.xml

3.kill从任务管理器在Java:

  1. 在运行清洁文摘COMAND

  2. 运行“刺战”按项目名称fowllowed。

  3. 检查日志文件,发现在同一日期工作台的目录相同的.war文件。



文章来源: How to create war files