【问题标题】:How do I create an EAR file with an ant build including certain files?如何使用包含某些文件的 ant 构建创建 EAR 文件?
【发布时间】:2009-08-12 16:36:23
【问题描述】:

我正在使用 eclipse 使用 ant 构建一个 ear 文件。我正在使用 oc4j,我想确保构建中包含 orion-application.xml。我目前正在使用但不起作用的是:

 构建ear文件复制>
        目标>

将它添加到耳朵的正确方法是什么?

【问题讨论】:

    标签: java ant jakarta-ee oc4j ear


    【解决方案1】:

    Ant EAR task

    应该进入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>
    

    【讨论】:

    • 效果很好!我在理解文档时遇到了一些困难。
    • 效果很好,虽然我收到了一个恼人的警告:“选定的 ear 文件包含一个 META-INF/application.xml,它将被忽略(请使用 appxml 属性来执行 ear 任务)”
    • 恼人的警告可能是因为您的 META-INF 文件夹中也有 application.xml,并且 ANT 任务尝试通过 appxml="blah blah" 插入 application.xml
    • @ChssPly76 嗨,我能够生成耳朵,但它是空的!知道我正在从构建的结果(文件夹构建)中生成耳朵,但是正在发生的事情是耳朵是在构建完成之前生成的!因此,当再次执行构建时,我会根据需要得到我的耳朵(因为构建已经在第一次完成)。我可以配置 build.xml 以便在构建完成后执行耳朵的生成吗?
    【解决方案2】:

    试试这个代码:

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

    【讨论】:

    • 虽然这没有足够的支持,但我认为这比“接受”的答案更全面,因为它涵盖了所有变体——war、jar、appxml、manifest、app-inf/lib 和 meta-信息。
    【解决方案3】:

    首先,用这个来建立一场战争;

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

    比同一个 Ant 任务中的 EAR。

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 2013-01-06
      • 1970-01-01
      • 2013-02-18
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多