ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@locus.apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs UpToDate.java CompileTask.java defaults.properties
Date Wed, 20 Sep 2000 14:49:38 GMT
bodewig     00/09/20 07:49:38

  Modified:    .        WHATSNEW
               docs     index.html
               src/main/org/apache/tools/ant/taskdefs CompileTask.java
                        defaults.properties
  Added:       src/main/org/apache/tools/ant/taskdefs UpToDate.java
  Log:
  New task <uptodate> that set's a property if a given target file is
  newer than a given set of source files.
  
  I've taken the freedom to merge ideas submitted by William and Hiroaki
  and to throw in some of my own.
  
  Submitted by:	William Ferguson <williamf@mincom.com>,
                  Hiroaki Nakamura <hnakamur@mc.neweb.ne.jp>
  
  Revision  Changes    Path
  1.30      +1 -1      jakarta-ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- WHATSNEW	2000/09/19 09:09:20	1.29
  +++ WHATSNEW	2000/09/20 14:49:34	1.30
  @@ -46,7 +46,7 @@
   --------------
   
   * New tasks: antstructure, cab, execon, fail, ftp, genkey, jlink,
  -junit, sql, javacc, jjtree, starteam, war, unwar.
  +junit, sql, javacc, jjtree, starteam, war, unwar, uptodate.
   
   * New tasks mparse pending documentation.
   
  
  
  
  1.111     +36 -1     jakarta-ant/docs/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/index.html,v
  retrieving revision 1.110
  retrieving revision 1.111
  diff -u -r1.110 -r1.111
  --- index.html	2000/09/20 11:31:09	1.110
  +++ index.html	2000/09/20 14:49:35	1.111
  @@ -25,7 +25,7 @@
     <li>Dave Walend (<a href="mailto:dwalend@cs.tufts.edu">dwalend@cs.tufts.edu</a>)</li>
   </ul>
   
  -<p>Version 1.2 - 2000/09/19</p>
  +<p>Version 1.2 - 2000/09/20</p>
   
   <hr>
   <h2>Table of Contents</h2>
  @@ -876,6 +876,7 @@
     <li><a href="#taskdef">Taskdef</a></li>
     <li><a href="#touch">Touch</a></li>
     <li><a href="#tstamp">Tstamp</a></li>
  +  <li><a href="#uptodate">Uptodate</a></li>
     <li><a href="#unzip">Unjar</a></li>
     <li><a href="#untar">Untar</a></li>
     <li><a href="#unzip">Unwar</a></li>
  @@ -3757,6 +3758,40 @@
   </table>
   <h3>Examples</h3>
   <pre>  &lt;tstamp/&gt;</pre>
  +<hr>
  +<h2><a name="uptodate">Uptodate</a></h2>
  +<h3>Description</h3>
  +<p>Sets a property if a Target file is more up to date than a set of
  +Source files. Source files are specified by nested &lt;srcfiles&gt;
  +elements, these are <a href="#fileset">FileSet</a>s.</p>
  +<p>The value part of the property being set is <i>true</i> if the timestamp
of the 
  +Target file is more recent than the timestamp of every Source file.</p>
  +<p>Normally, this task is used to set properties that are useful to avoid target
  +execution depending on the relative age of the specified files.</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">property</td>
  +    <td valign="top">the name of the property to set.</td>
  +    <td valign="top" align="center">Yes</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">targetfile</td>
  +    <td valign="top">the file for which we want to determine the status.</td>
  +    <td valign="top" align="center">Yes</td>
  +  </tr>
  +</table>
  +<h3>Examples</h3>
  +<pre>  &lt;uptodate property=&quot;xmlBuild.notRequired&quot; targetfile=&quot;${deploy}\xmlClasses.jar&quot;
&gt;
  +    &lt;srcfiles dir= &quot;${src}/xml&quot; includes=&quot;**/*.dtd&quot;
/&gt;
  +  &lt;/uptodate&gt;</pre>
  +<p>sets the property <code><i>xmlBuild.notRequired</i></code>
to the value &quot;true&quot;
  +if the <i>${deploy}/xmlClasses.jar</i> is more up to date than any of the DTD
files in the <i>${src}/xml</i> directory.</p>
   <hr>
   <h2><a name="unzip">Unjar/Unwar/Unzip</a></h2>
   <h3>Description</h3>
  
  
  
  1.3       +4 -0      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/CompileTask.java
  
  Index: CompileTask.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/CompileTask.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CompileTask.java	2000/07/19 15:12:33	1.2
  +++ CompileTask.java	2000/09/20 14:49:36	1.3
  @@ -65,6 +65,8 @@
    * which otherwise would require multiple executions of Ant.
    *
    * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
  + *
  + * @deprecated use &lt;taskdef&gt; elements nested into &lt;target&gt;s
instead
    */
   
   public class CompileTask extends Javac {
  @@ -84,6 +86,8 @@
        * do all the real work in init
        */
       public void init() {
  +        log("!! CompileTask is deprecated. !!");
  +        log("Use <taskdef> elements nested into <target>s instead");
   
           // create all the include entries from the task defs
           for (Enumeration e=taskList.elements(); e.hasMoreElements(); ) {
  
  
  
  1.40      +1 -0      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties
  
  Index: defaults.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- defaults.properties	2000/09/15 11:41:18	1.39
  +++ defaults.properties	2000/09/20 14:49:37	1.40
  @@ -44,6 +44,7 @@
   mail=org.apache.tools.ant.taskdefs.SendEmail
   fail=org.apache.tools.ant.taskdefs.Exit
   war=org.apache.tools.ant.taskdefs.War
  +uptodate=org.apache.tools.ant.taskdefs.UpToDate
   
   # optional tasks
   script=org.apache.tools.ant.taskdefs.optional.Script
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/UpToDate.java
  
  Index: UpToDate.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", "Tomcat", 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.*;
  import java.io.*;
  import java.util.Enumeration;
  import java.util.Date;
  import java.util.Vector;
  
  /**
   * Will set the given property if the specified target has a timestamp
   * greater than all of the source files.
   *
   * @author William Ferguson <a href="mailto:williamf@mincom.com">williamf@mincom.com</a>

   * @author Hiroaki Nakamura <a href="mailto:hnakamur@mc.neweb.ne.jp">hnakamur@mc.neweb.ne.jp</a>
   * @author <a href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a>
   */
  
  public class UpToDate extends MatchingTask {
  
      private String _property;
      private File _targetFile;
      private Vector sourceFileSets = new Vector();
  
      /**
       * The property to set if the target file is more up to date than each of
       * the source files.
       *
       * @param property the name of the property to set if Target is up to date.
       */
      public void setProperty(String property) {
          _property = property;
      }
  
      /**
       * The file which must be more up to date than each of the source files
       * if the property is to be set.
       *
       * @param file the file which we are checking against.
       */
      public void setTargetFile(File file) {
          _targetFile = file;
      }
  
      /**
       * Nested <srcfiles> element.
       */
      public void addSrcfiles(FileSet fs) {
          sourceFileSets.addElement(fs);
      }
  
      /**
       * Sets property to true if target file has a more recent timestamp than
       * each of the source files.
       */
      public void execute() throws BuildException {
  
          if (sourceFileSets.size() == 0) {
            throw new BuildException("At least one <srcfiles> element must be set");
          }
  
          if (_targetFile == null) {
            throw new BuildException("The targetfile attribute must be set");
          }
  
          // if not there then it can't be up to date
          if (!_targetFile.exists()) return; 
  
          Enumeration enum = sourceFileSets.elements();
          boolean upToDate = true;
          while (upToDate && enum.hasMoreElements()) {
              FileSet fs = (FileSet) enum.nextElement();
              DirectoryScanner ds = fs.getDirectoryScanner(project);
              upToDate = upToDate && scanDir(fs.getDir(project), _targetFile, 
                                             ds.getIncludedFiles());
          }
  
          if (upToDate) {
              this.project.setProperty(_property, "true");
              log("File \"" + _targetFile.getAbsolutePath() + "\" is up to date.",
                  Project.MSG_VERBOSE);
          }
      }
  
      protected boolean scanDir(File srcDir, File destFile, String files[]) {
          long destLastModified = destFile.lastModified();
          long now = (new Date()).getTime();
          if (destLastModified > now) {
              log("Warning: destfile modified in the future: " +
                  destFile.getPath(), Project.MSG_WARN);
          }
  
          for (int i = 0; i < files.length; i++) {
              File srcFile = new File(srcDir, files[i]);
  
              long srcLastModified = srcFile.lastModified();
              if (srcLastModified > now) {
                  log("Warning: file modified in the future: " +
                      files[i], Project.MSG_WARN);
              }
  
              if (srcLastModified > destLastModified) {
                  return false;
              }
          }
          return true;
      }
  }
  
  
  

Mime
View raw message