使用ANT将Web应用程序目录与可执行jar打包

时间:2016-04-14 11:04:30

标签: java ant jetty embedded-jetty openrefine

我正在开发一个使用ANT的开源项目,它可以执行所有类型的有用目标。 其中一个在同一目录中生成一个可执行jar和一个webapp目录。我试图找到用jar包装webapp目录的方法,那里有大量的信息,但没有提供适合我问题的例子。

Open Refine是一款出色的数据清理工具,您可以使用带有不同启动参数的脚本来启动它。 它是使用jetty Web服务器和用于UI的Web应用程序构建的。 Architecture here。 它使用ANT进行部署管理,其中有一个创建Linux工具包的任务:

<target name="linux" depends="jar, prepare_webapp">
    <mkdir dir="${linux.dir}"/>

    <copy todir="${linux.dir}/server/lib">
        <fileset dir="${server.lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
    </copy>

    <copy file="${build.dir}/${fullname}-server.jar" tofile="${linux.dir}/server/lib/${fullname}-server.jar"/>

    <copy todir="${linux.dir}/webapp">
        <fileset dir="${built.webapp.dir}">
            <include name="**"/>
        </fileset>
    </copy>

    <mkdir dir="${linux.dir}/licenses"/>
    <fixcrlf srcDir="${basedir}/licenses" destDir="${linux.dir}/licenses" eol="lf"/>

    <fixcrlf srcDir="${basedir}" destDir="${linux.dir}" eol="lf">
        <include name="refine"/>
        <include name="refine.ini"/>
        <include name="README.txt"/>
        <include name="LICENSE.txt"/>
    </fixcrlf>

    <mkdir dir="${dist.dir}"/>
    <tar longfile="gnu" compression="gzip" destfile="${dist.dir}/openrefine-linux-${version}.tar.gz">
       <tarfileset dir="${linux.dir}/.." filemode="755">
           <include name="${release.name}/refine"/>
       </tarfileset>        
       <tarfileset dir="${linux.dir}/..">
           <include name="${release.name}/**"/>
           <exclude name="${release.name}/refine"/>
       </tarfileset>        
    </tar>
</target>

此任务创建一个Web目录,该目录在上一个任务中使用:

<target name="prepare_webapp" depends="jar_webapp, build">
    <mkdir dir="${built.webapp.dir}" />

    <copy todir="${built.webapp.dir}">
        <fileset dir="${webapp.dir}">
            <include name="**/*"/>
            <exclude name="WEB-INF/classes/**"/>
            <exclude name="WEB-INF/lib-src/**"/>
            <exclude name="WEB-INF/lib/icu4j*.jar"/>
        </fileset>
    </copy>

并使用另一个ANT目标准备Jar如下:

<target name="jar_webapp" depends="prepare_jar, build_webapp">
    <jar destfile="${build.dir}/${fullname}.jar" basedir="${webapp.classes.dir}"/>
</target>

运行ant linux的结果是一个可执行jar和一个webapp目录,是否可以将整个东西打包为一个胖罐?

0 个答案:

没有答案