Change instance initializer in About.java to static.  Most of the work, though, was on the Ant files such that once the filtered copies have already been generated, they will re-generate IFF the gwt OR svn versions have changed (i.e. after an svn up).

Review by: scottb

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3646 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/common.ant.xml b/dev/common.ant.xml
index 58266be..4353204 100755
--- a/dev/common.ant.xml
+++ b/dev/common.ant.xml
@@ -19,8 +19,11 @@
   <target name="build" depends="compile" description="Build and package this project">
     <mkdir dir="${gwt.build.lib}" />
     <gwt.jar>
-      <fileset dir="src" excludes="**/package.html" />
-      <fileset dir="${gwt.core.root}/src" excludes="**/package.html" />
+      <fileset dir="src" excludes="**/package.html"/>
+      <fileset dir="${gwt.core.root}/src">
+        <exclude name="**/package.html"/>
+        <exclude name="com/google/gwt/dev/About.properties"/>
+      </fileset>
       <fileset dir="${gwt.core.root}/super" excludes="**/package.html" />
       <fileset dir="${javac.out}" />
       <fileset dir="${gwt.core.build}/bin" />
diff --git a/dev/core/build.xml b/dev/core/build.xml
index 5b6a713..bcc6f13 100755
--- a/dev/core/build.xml
+++ b/dev/core/build.xml
@@ -57,12 +57,12 @@
 
   <property name="filter.pattern" value="com/google/gwt/dev/About.properties" />
 
-  <target name="-filter.src" description="Creates filtered copies of source files" unless="filter.uptodate">
-    <delete dir="${src.filtered}" failonerror="false" />
-    <gwt.revfilter todir="${src.filtered}" >
+  <target name="-filter.props" description="Creates filtered About.properties with version info"
+     unless="filter.uptodate">
+    <gwt.revfilter todir="${javac.out}">
       <fileset dir="src" includes="${filter.pattern}" />
     </gwt.revfilter>
-    <touch file="${src.filtered}/gwt.version-${gwt.version}" />
+    <touch file="${filter.sentinel}" />
   </target>
 
   <target name="build" depends="build.alldeps.jar" description="Compiles this project">
@@ -76,22 +76,8 @@
     <mkdir dir="${javac.out-dummy}" />
     <gwt.javac srcdir="src-dummy" destdir="${javac.out-dummy}" />
 
-    <!-- Files with hardcoded version information must be filtered -->
-    <property name="src.filtered" location="${project.build}/src-filtered" />
-    <condition property="filter.uptodate">
-      <and>
-        <available file="${src.filtered}/gwt.version-${gwt.version}" />
-        <uptodate>
-          <srcfiles dir="src" includes="${filter.pattern}" />
-          <globmapper from="*" to="${src.filtered}/*" />
-        </uptodate>
-      </and>
-    </condition>
-    <antcall target="-filter.src" />
-
     <mkdir dir="${javac.out}" />
     <gwt.javac srcdir="super" excludes="com/google/gwt/dev/jjs/intrinsic/"/>
-    <gwt.javac srcdir="${src.filtered}" />
     <gwt.javac srcdir="src" excludes="${filter.pattern}">
       <classpath>
         <pathelement location="${javac.out-dummy}" />
@@ -102,8 +88,21 @@
       </classpath>
     </gwt.javac>
     <copy todir="${javac.out}">
-      <fileset dir="src" includes="**/*.properties"/>
-                </copy>
+      <fileset dir="src" includes="**/*.properties" excludes="${filter.pattern}"/>
+    </copy>
+
+    <!-- Files with hardcoded version information must be filtered -->
+    <gwt.getsvninfo />
+    <condition property="filter.uptodate">
+      <and>
+        <available file="${filter.sentinel}" />
+        <uptodate>
+          <srcfiles dir="src" includes="${filter.pattern}" />
+          <globmapper from="*" to="${javac.out}/*" />
+        </uptodate>
+      </and>
+    </condition>
+    <antcall target="-filter.props" />
   </target>
 
   <target name="checkstyle" description="Static analysis of source">
diff --git a/dev/core/src/com/google/gwt/dev/About.java b/dev/core/src/com/google/gwt/dev/About.java
index 98d15f1..b64eb5a 100644
--- a/dev/core/src/com/google/gwt/dev/About.java
+++ b/dev/core/src/com/google/gwt/dev/About.java
@@ -32,13 +32,10 @@
 
   public static String GWT_VERSION;
 
-  {
-    Class<? extends About> myClass = this.getClass();
-    String propsPath = myClass.getName().replace('.', '/').concat(".properties");
+  static {
     Properties props = new Properties();
     try {
-      InputStream instream = myClass.getClassLoader().getResourceAsStream(
-          propsPath);
+      InputStream instream = About.class.getResourceAsStream("About.properties");
       props.load(instream);
     } catch (IOException iox) {
       // okay... we use default values, then.