Создание ear-File с помощью ant - PullRequest
0 голосов
/ 28 апреля 2011

Я новичок в муравье, я сослался на многие сайты, мне нужен build.xml для моего проекта, который состоит из двух модулей у меня есть файл application.xml, который представляет соответствующий военный файл

поэтому мой вопрос: достаточно ли добавить файл application.xml

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

будет ли это относиться к соответствующим файлам войны или мне нужно скомпилировать весь сценарий, пожалуйста, дайте мне знать. как решить это.

1 Ответ

3 голосов
/ 29 апреля 2011

Я не на 100% уверен, что вы спрашиваете.

Чтобы использовать задачу <ear>, вам уже нужно скомпилировать необходимые банки и войны.

Если эти банки и войны уже построены, вы просто обращаетесь к ним вваша <ear> задача, как вы делали в своем примере.application.xml должно уже существовать до того, как вы построите свое ухо.application.xml не строит банки и войны, вы должны это сделать.

Если вы еще не построили войны и банки, вам нужно сделать это в первую очередь.Общая схема build.xml выглядит примерно так:

<project name="foo" basedir="." default="package">

    <!-- Some standard properties you've defined -->
    <property name="target.dir" value="${basedir}/target"/>
    <property name="xxx" value="yyy"/>
    <property name="xxx" value="yyy"/>
    <property name="xxx" value="yyy"/>

    <!-- Compile properties that allow overrides -->

    <property name="javac.nowarn" value="false"/>
    <property name="javac.listfiles" value="false"/>
    <property name="javac.srcdir" value="source"/>
    <property name="javac.distdir" value="${target.dir}/classes"/>


    <target name="clean"
        description="cleans everything nice and shiny">
        <delete dir="${target.dir}"/>
    </target>

    <target name="compile"
        description="Compiles everything">

        <mkdir dir="${javac.distdir}"/>
        <javac srcdir="${javac.srcdir}"
            destdir="${javac.destdir}"
            [...]
            [...]/>
    </target>

    <target name="package.jar"
        depends="compile"
        description="Package jarfile">

        <jar destfile="${target.dir}/jarname.jar"
            [...]
            [...]/>
    </target>

    <target name="package.jar2"
        depends="compile"
        description="Package jarfile">

        <jar destfile="${target.dir}/jarname2.jar"
            [...]
            [...]/>
    </target>

    <target name="package.war"
        depends="compile"
        description="Package jarfile">

        <war destfile="${target.dir}/jarname.jar"
            [...]
            [...]/>
    </target>

    <target name="package"
        depends="package.jar"
        description="Make the ear">

        <ear destfile="${target.dir}/earfile.ear"
            [...]/>
    </target>
</project>

По сути, она состоит из набора целей , и каждая цель выполняет одну задачу.Вы можете иметь цели в зависимости от других целей.Например, этот конкретный build.xml автоматически запустит задачу package.Задача пакета зависит от задачи package.jar, которая зависит от задачи compile.Таким образом, файл build.xml сначала вызовет compile, затем package.jar, затем package.

. Важно помнить, что вы не указываете порядок событий.Вы позволяете Ant понять это, и вы позволяете Ant выяснить, что вам нужно делать.Допустим, вы изменили исходный файл Java.Ant знает, что он должен перекомпилировать только один файл.Он также знает, что может потребоваться перестроить jarfile, содержащий этот файл классов.И тогда он знает, что должен восстановить слух.Большинство задач могут понять это самостоятельно, и вы не делаете clean для каждой сборки.(Вы замечаете, что цель clean не вызывается package или compile. Вы должны вызывать ее вручную).

Единственное, что я рекомендую, - это попытаться сохранить свою работуПлощадь чистая.Любые файлы, которые вы создаете, должны быть помещены в каталог ${target.dir}.Таким образом, когда вы делаете clean, вам нужно только удалить этот каталог.

Надеюсь, это ответит на ваш вопрос.

...