0

Java Web アプリケーションがあります。Antファイルを使用してTomcatサーバーに戦争として展開しています。私はそれをうまくやることができました。以下のbuild.xmlを見つけてください 今の課題は、warルートフォルダーにコピーされるWebフォルダーの下のアプリケーションに100000個の画像があることです。

war ファイルのルート フォルダーに 100000 個のイメージを含む war を作成すると、大きな頭痛の種になります。

JSPまたはJavaコードで何かを変更するたびに、新しいwarが再びwarフォルダーに100000個の画像をコピーし、warファイルの作成に1時間以上かかります。

戦争中の画像フォルダが展開のたびに何度もコピーされないようにするにはどうすればよいですか?

<!-- setting classpath -->


<path id="base.class.path">
    <pathelement location="lib/joda-time-1.6.1.jar" />
    <pathelement location="lib/fedExTrackingWebService.jar" />
    ....
    .....
</path>

 <property file="build.properties"/>

    <path id="classpath">
        <fileset dir="${lib.dir}"/>
    </path>

    <target name="clean">
        <echo>Cleaning the ${build.dir}</echo>
        <delete dir="${build.dir}"/>
        <delete dir="${dist.dir}"/>
    </target>

    <target name="init" depends="clean">
        <echo>Creating the build directory</echo>
        <mkdir dir="${build.dir}/WEB-INF/classes"/>
        <mkdir dir="${build.dir}/WEB-INF/lib"/>
        <mkdir dir="${dist.dir}"/>
    </target>

    <target name="compile" depends="init">
        <echo>Compile the source files</echo>
        <javac srcdir="${src.dir}" destdir="${build.dir}/WEB-INF/classes">
            <classpath refid="base.class.path"/>                
        </javac>
    </target>

    <target name="copy" depends="compile">
        <copy todir="${build.dir}/WEB-INF">
            <fileset dir="${web.dir.webinf}/WEB-INF"/>
        </copy>
        <copy todir="${build.dir}">
            <fileset dir="${web.dir}"/>
        </copy>
        <copy todir="${build.dir}/WEB-INF/lib">
            <fileset dir="${lib.dir}">
                            </fileset>
        </copy>
    </target>


    <target name="war">
        <echo>Building the war file</echo>
        <war destfile="${dist.dir}/${ant.project.name}.war" webxml="${build.dir}/WEB-INF/web.xml">
            <fileset dir="${build.dir}"/>
        </war>
    </target>

    <target name="deploy_local" depends="war">
        <echo>Deploying .war to local Tomcat</echo>
        <copy todir="${tomcat.dir}/webapps">
            <fileset dir="${dist.dir}">
                <include name="${ant.project.name}.war"/>
            </fileset>
        </copy>
    </target> 

4

1 に答える 1

1

war ファイルを段階的に変更してみてください:

<target name="war" update="true">

事前にイメージを war ファイルに含めてから、コピー タスクのファイルセットから除外することができます。

例えば:

<target name="copy" depends="compile">
    <copy todir="${build.dir}">
        <fileset dir="${web.dir}">
           <exclude name="images/**"/>
        </fileset>
    </copy>

duplicate="preserve"また、ant war タスクに追加することを検討することもできます。それがあなたの問題に直接関係しているとは思わないが、それでも。

しかし、マニュアルに従って:

Zip 形式では、同じ完全修飾名の複数のファイルが 1 つのアーカイブ内に存在できることに注意してください。これは、疑いを持たないユーザーにさまざまな問題を引き起こすことが文書化されています。この動作を回避したい場合は、複製属性をデフォルトの「追加」以外の値に設定する必要があります。

また、ここにブログ投稿があります。

于 2013-08-04T01:43:43.540 に答える