j2ee打造可执行war包

1.  下载jetty

注意: Jetty 9.x 需要 JDK 1.7 支持。下表是Jetty各版本状态一览。

版本JDK版本
ServletJSP状态
9.01.73.0 (3.1 on branch)2.2稳定
8.x1.63.02.2成熟
7.x1.5,
J2ME
2.52.1成熟
6.x1.4-1.52.52.0过时

下载地址: http://download.eclipse.org/jetty/

2.   启动类

package net.codaview;

import java.io.File;
import java.net.URL;
import java.security.ProtectionDomain;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

public class EmbeddedServer {

    public static void main(String[] args) throws Exception {
        int port = Integer.parseInt(System.getProperty("port", "8080"));
        Server server = new Server(port);

        ProtectionDomain domain = EmbeddedServer.class.getProtectionDomain();
        URL warLocation = domain.getCodeSource().getLocation();

        WebAppContext webapp = new WebAppContext();
        webapp.setContextPath("/");
        webapp.setDescriptor(warLocation.toExternalForm() + "/WEB-INF/web.xml");
        webapp.setServer(server);
        webapp.setWar(warLocation.toExternalForm());
        String tempDir = new File(warLocation.getPath()).getParent() + "/tmp";
        webapp.setTempDirectory(new File(tempDir));

        server.setHandler(webapp);
        server.start();
        server.join();
    }
}


3.   ant脚本

<project>
    <target name="war">
        <!-- web根路径 -->
        <property name="webapp.dir" location="${basedir}/webapp" />
        <!-- jetty  -->
        <property name="jetty.dir" location="${basedir}/webapp/WEB-INF/jetty" />
        <!-- 临时目录 ,放置打包过程中产生的文件 -->
        <property name="temp.dir" location="${basedir}/temp" />

        <!-- 创建临时目录 -->
        <mkdir dir="${temp.dir}" />
        
        <!-- 拷贝web下所有文件到临时目录 -->
        <copy todir="${temp.dir}">
            <fileset dir="${webapp.dir}">
                <exclude name="WEB-INF/jetty/*" />
                <exclude name="WEB-INF/tmp/*" />
            </fileset>
        </copy>
        
        <!-- 解压jetty -->
        <unjar dest="${temp.dir}">
            <fileset dir="${jetty.dir}">
                <include name="jetty-continuation-7.6.9.v20130131.jar" />
                <include name="jetty-http-7.6.9.v20130131.jar" />
                <include name="jetty-io-7.6.9.v20130131.jar" />
                <include name="jetty-jmx-7.6.9.v20130131.jar" />
                <include name="jetty-security-7.6.9.v20130131.jar" />
                <include name="jetty-server-7.6.9.v20130131.jar" />
                <include name="jetty-servlet-7.6.9.v20130131.jar" />
                <include name="jetty-util-7.6.9.v20130131.jar" />
                <include name="jetty-webapp-7.6.9.v20130131.jar" />
                <include name="jetty-xml-7.6.9.v20130131.jar" />
                <include name="annotations-api-6.0.37.jar" />
                <include name="catalina-6.0.37.jar" />
                <include name="ecj-4.2.2.jar" />
                <include name="el-api-6.0.37.jar" />
                <include name="jasper-6.0.37.jar" />
                <include name="jasper-el-6.0.37.jar" />
                <include name="javax.servlet.jsp-api-2.2.1.jar" />
                <include name="jsp-api-6.0.37.jar" />
                <include name="juli-6.0.37.jar" />
                <include name="servlet-api-6.0.37.jar" />
            </fileset>
            <patternset>
                <exclude name="META-INF/**/*" />
                <exclude name="images/**/*" />
                <exclude name=".options" />
                <exclude name="about.html" />
                <exclude name="jetty-dir.css" />
                <exclude name="jdtCompilerAdapter.jar" />
                <exclude name="plugin*" />
            </patternset>
        </unjar>

        <!-- 复制启动类 -->
        <copy todir="${temp.dir}">
            <fileset dir="${webapp.dir}/WEB-INF/classes" includes="net/codaview/EmbeddedServer.class" />
        </copy>

        <!-- 创建war包 -->
        <war destfile="runnable.war" webxml="${webapp.dir}/web.xml">
            <fileset dir="${temp.dir}" includes="**/*" />
            <classes dir="${webapp.dir}/WEB-INF/classes" />
            <lib dir="${webapp.dir}/WEB-INF/lib" />
            <manifest>
                <attribute name="Main-Class" value="net.codaview.EmbeddedServer" />
            </manifest>
        </war>

        <!-- 删除临时目录 -->
        <delete dir="${temp.dir}" />
    </target>
</project>


4. 运行

java -jar runnable.war


5. 来源 stackoverflow

转载于:https://my.oschina.net/coda/blog/187028

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值