Как мне создать файл EAR со сборкой муравья, включая определенные файлы?

Я использую eclipse для создания файла для ушей с помощью ant. Я использую oc4j и хочу убедиться, что orion-application.xml включен в сборку. В настоящее время я использую, но не работаю:

   <target name="ear" depends="">
        <echo>Building the ear file</echo>
        <copy todir="${build.dir}/META-INF">
            <fileset dir="${conf.dir}" includes="orion-application.xml"/>
        </copy>
        <ear destfile="${dist.dir}/${ant.project.name}.ear" 
                appxml="${conf.dir}/application.xml">
            <fileset dir="${dist.dir}" includes="*.jar,*.war"/>
        </ear>
    </target>

Как правильно добавить это к уху?


person user149100    schedule 12.08.2009    source источник


Ответы (3)


задача Ant EAR

Все, что должно быть в папке META-INF, должно быть указано через вложенный <metainf> набор файлов:

<ear destfile="${dist.dir}/${ant.project.name}.ear" 
  appxml="${conf.dir}/application.xml">
  <metainf dir="${build.dir/META-INF}"/>
  <fileset dir="${dist.dir}" includes="*.jar,*.war"/>
</ear>
person ChssPly76    schedule 12.08.2009
comment
Сработало отлично! Мне было немного трудно понять документацию. - person user149100; 12.08.2009
comment
Работает хорошо, хотя я получаю раздражающее предупреждение: выбранные файлы уха включают META-INF / application.xml, который будет проигнорирован (пожалуйста, используйте атрибут appxml для задачи уха) - person stian; 30.06.2011
comment
Раздражающее предупреждение, возможно, связано с тем, что у вас есть application.xml в вашей папке META-INF, а задача ANT пытается вставить application.xml с помощью appxml = blah blah - person amitsalyan; 18.06.2014
comment
@ ChssPly76 Привет, я могу сгенерировать ухо, но оно пустое! зная, что я создаю ухо из результата сборки (сборки папки), но что происходит, так это то, что ухо создается до завершения сборки! Поэтому при повторном выполнении сборки я получаю желаемое (потому что сборка уже была сделана в первый раз). Как я могу настроить build.xml так, чтобы он выполнял генерацию уха после завершения сборки? - person ziMtyth; 16.05.2018

Попробуйте этот код:

    <ear destfile="deploy/iapp.ear"
         appxml="workspace/appEAR/EarContent/META-INF/application.xml">
        <fileset file="workspace/appEJB/appEJB.jar" />
        <fileset file="workspace/appWAR/appWAR.war" />
        <zipfileset file="workspace/appLIB/appLIB.jar"
                    prefix="APP-INF/lib" />
        <zipfileset dir="lib/fop" includes="*.jar" prefix="APP-INF/lib" />
        <zipfileset dir="lib/poi" includes="*.jar" prefix="APP-INF/lib" />
        <zipfileset dir="lib/gxt" includes="*.jar" prefix="APP-INF/lib" />          
        <metainf dir="workspace/appEAR/EarContent/META-INF">
            <exclude name="**/application.xml" />
            <exclude name="**/MANIFEST.MF" />
        </metainf>
        <manifest>
            <attribute name="Weblogic-Application-Version"
                       value="${deploy.revision}" />
        </manifest>
    </ear>
person sasah    schedule 25.02.2013
comment
Хотя здесь недостаточно голосов, я думаю, что это более исчерпывающий ответ, чем «принятый» ответ, поскольку он охватывает все варианты - war, jar, appxml, manifest, app-inf / lib и meta-inf. - person Rakesh N; 21.04.2014

Во-первых, построите войну, используя это;

http://ant.apache.org/manual/Tasks/war.html

чем EAR в той же задаче Ant.

http://ant.apache.org/manual/Tasks/ear.html

Поместите это в структуру каталогов вашего java-проекта:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="test_ear" name="myProject">
    <property name="build.dir" value="WebContent"/>
<target name="test_ear">
    <war destfile="C:/projects/test1.war" needxmlfile='false'>
      <fileset dir="${build.dir}" excludes="*build*.xml"/>
    </war>
    <ear destfile="C:/projects/test1EAR.ear" appxml="WebContent/META-INF/application.xml">
      <fileset dir="C:/projects/" includes="*.jar,*.war"/>
    </ear>
</target>
</project>
person SmartCoder    schedule 19.05.2011