ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dona...@apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs Ear.java
Date Tue, 03 Apr 2001 12:49:54 GMT
donaldp     01/04/03 05:49:54

  Added:       docs/manual/CoreTasks ear.html
               src/main/org/apache/tools/ant/taskdefs Ear.java
  Log:
  Added Ear task
  
  Submitted By: Les Hughes [mailto:leslie.hughes@rubus.com]
  
  Revision  Changes    Path
  1.1                  jakarta-ant/docs/manual/CoreTasks/ear.html
  
  Index: ear.html
  ===================================================================
  <html>
  
  <head>
  <meta http-equiv="Content-Language" content="en-us">
  <title>Ant User Manual</title>
  </head>
  
  <body>
  
  <h2><a name="ear">Ear</a></h2>
  <h3>Description</h3>
  <p>An extension of the <a href="jar.html">Jar</a> task with special
  treatment for files that should end up in an Enterprise Application archive.</p>
  <p>(The Ear task is a shortcut for specifying the particular layout of a EAR file.

  The same thing can be accomplished by using the <i>prefix</i> and <i>fullpath</i>
  attributes of zipfilesets in a Zip or Jar task.)</p>
  <p>The extended zipfileset element from the zip task (with attributes <i>prefix</i>,
<i>fullpath</i>, and <i>src</i>) is available in the War task.</p>
  
  <h3>Parameters</h3>
  <table border="1" cellpadding="2" cellspacing="0">
    <tr>
      <td valign="top"><b>Attribute</b></td>
      <td valign="top"><b>Description</b></td>
      <td align="center" valign="top"><b>Required</b></td>
    </tr>
    <tr>
      <td valign="top">earfile</td>
      <td valign="top">the ear-file to create.</td>
      <td valign="top" align="center">Yes</td>
    </tr>
    <tr>
      <td valign="top">appxml</td>
      <td valign="top">The deployment descriptor to use (META-INF/application.xml).</td>
      <td valign="top" align="center">Yes</td>
    </tr>
    <tr>
      <td valign="top">basedir</td>
      <td valign="top">the directory from which to jar the files.</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">compress</td>
      <td valign="top">Not only store data but also compress them, defaults to true</td>
      <td align="center" valign="top">No</td>
    </tr>
    <tr>
      <td valign="top">includes</td>
      <td valign="top">comma separated list of patterns of files that must be
        included. All files are included when omitted.</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">includesfile</td>
      <td valign="top">the name of a file. Each line of this file is
        taken to be an include pattern</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">excludes</td>
      <td valign="top">comma separated list of patterns of files that must be
        excluded. No files (except default excludes) are excluded when omitted.</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">excludesfile</td>
      <td valign="top">the name of a file. Each line of this file is
        taken to be an exclude pattern</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">defaultexcludes</td>
      <td valign="top">indicates whether default excludes should be used or not
        (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">manifest</td>
      <td valign="top">the manifest file to use.</td>
      <td valign="top" align="center">No</td>
    </tr>
    <tr>
      <td valign="top">whenempty</td>
      <td valign="top">Behavior to use if no files match.</td>
      <td valign="top" align="center">No</td>
    </tr>
  </table>
  <h2>Example</h2>
  <pre>
      &lt;ear earfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml"&gt;
        &lt;fileset dir="${build.dir}" includes="*.jar,*.war"/&gt;
      &lt;/ear&gt;
  </pre>
  <hr>
  <p align="center">Copyright &copy; 2000,2001 Apache Software Foundation. All rights
  Reserved.</p>
  
  </body>
  </html>
  
  
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Ear.java
  
  Index: Ear.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000 The Apache Software Foundation.  All rights 
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:  
   *       "This product includes software developed by the 
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written 
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.tools.ant.taskdefs;
  
  import org.apache.tools.ant.*;
  import org.apache.tools.ant.types.ZipFileSet;
  
  import java.io.*;
  import java.util.Vector;
  import java.util.zip.*;
  
  /**
   * Creates a EAR archive. Based on WAR task
   * 
   * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
   * @author <a href="mailto:leslie.hughes@rubus.com">Les Hughes</a> 
   */
  public class Ear extends Jar {
  
      private File deploymentDescriptor;
      private boolean descriptorAdded;    
  
      public Ear() {
          super();
          archiveType = "ear";
          emptyBehavior = "create";
      }
  
      public void setEarfile(File earFile) {
          super.setZipfile(earFile);
      }
      
      public void setAppxml(File descr) {
          deploymentDescriptor = descr; 
          if (!deploymentDescriptor.exists())
              throw new BuildException("Deployment descriptor: " + deploymentDescriptor +
" does not exist.");
  
          // Create a ZipFileSet for this file, and pass it up.
          ZipFileSet fs = new ZipFileSet();
          fs.setDir(new File(deploymentDescriptor.getParent()));
          fs.setIncludes(deploymentDescriptor.getName());
          fs.setFullpath("META-INF/application.xml");
          super.addFileset(fs);
      }
  
  
      public void addArchives(ZipFileSet fs) {
          // We just set the prefix for this fileset, and pass it up.
          // Do we need to do this? LH
          log("addArchives called",Project.MSG_DEBUG);
          fs.setPrefix("/");
          super.addFileset(fs);
      }
  
  
      protected void initZipOutputStream(ZipOutputStream zOut)
          throws IOException, BuildException
      {
          // If no webxml file is specified, it's an error.
          if (deploymentDescriptor == null) {
              throw new BuildException("appxml attribute is required", location);
          }
          
          super.initZipOutputStream(zOut);
      }
  
      protected void zipFile(File file, ZipOutputStream zOut, String vPath)
          throws IOException
      {
          // If the file being added is WEB-INF/web.xml, we warn if it's not the
          // one specified in the "webxml" attribute - or if it's being added twice, 
          // meaning the same file is specified by the "webxml" attribute and in
          // a <fileset> element.
          if (vPath.equalsIgnoreCase("META-INF/aplication.xml"))  {
              if (deploymentDescriptor == null || !deploymentDescriptor.equals(file) || descriptorAdded)
{
                  log("Warning: selected "+archiveType+" files include a META-INF/application.xml
which will be ignored " +
                      "(please use appxml attribute to "+archiveType+" task)", Project.MSG_WARN);
              } else {
                  super.zipFile(file, zOut, vPath);
                  descriptorAdded = true;
              }
          } else {
              super.zipFile(file, zOut, vPath);
          }
      }
  
      /**
       * Make sure we don't think we already have a web.xml next time this task
       * gets executed.
       */
      protected void cleanUp() {
          descriptorAdded = false;
          super.cleanUp();
      }
  }
  
  
  

Mime
View raw message