]> source.dussan.org Git - aspectj.git/commitdiff
ignore invalid aspectj-home's when seeking aspectj libs
authorwisberg <wisberg>
Thu, 3 Feb 2005 18:25:55 +0000 (18:25 +0000)
committerwisberg <wisberg>
Thu, 3 Feb 2005 18:25:55 +0000 (18:25 +0000)
build/src/org/aspectj/internal/tools/ant/taskdefs/AntBuilder.java
lib/build/build.jar

index 94ea3a23839404acc8a15a90e4db537651384bf3..b494363b56e7031131c4625140dcacebf0c7e4e4 100644 (file)
@@ -49,7 +49,7 @@ import org.aspectj.internal.tools.build.Util;
  */
 public class AntBuilder extends Builder {
     /*
-     * XXX This just constructs and uses Ant Task objects, 
+     * warning: This just constructs and uses Ant Task objects, 
      * which in some cases causes the tasks to fail.
      */
 
@@ -126,7 +126,7 @@ public class AntBuilder extends Builder {
         }
     }
 
-    private final Project project; // XXX s.b. used only in setupTask
+    private final Project project;
 
     protected AntBuilder(Project project, File tempDir, boolean useEclipseCompiles,
         Messager handler) {
@@ -506,7 +506,7 @@ public class AntBuilder extends Builder {
     static class AspectJSupport {
         static final String AJCTASK = "org.aspectj.tools.ant.taskdefs.AjcTask";
         static final String ASPECTJRT_JAR_VARIABLE = "ASPECTJRT_LIB";
-        static final String ASPECTJLIB_RPATH = "/lib/aspectj/lib";
+        static final String LIBASPECTJ_RPATH = "/lib/aspectj";
         static final Map nameToAspectjrtjar = new HashMap();
         static final String NONE = "NONE";
         
@@ -545,16 +545,26 @@ public class AntBuilder extends Builder {
         }
 
         static Path getAspectJLib(Project project, Module module, String name) {
-            String libDir = project.getProperty("aspectj.home");
-            if (null == libDir) {
-                libDir = project.getProperty("ASPECTJ_HOME");
-            }
-            if (null != libDir) {
-                libDir += File.separator + "lib";
-            } else {
-                libDir = module.getFullPath(ASPECTJLIB_RPATH);
+            Path result = null;
+            String[] libDirNames = { "aspectj.home", "ASPECTJ_HOME", LIBASPECTJ_RPATH};
+            String[] libDirs = new String[libDirNames.length];
+            for (int i = 0; i < libDirNames.length; i++) {
+                if (LIBASPECTJ_RPATH == libDirNames[i]) {
+                    libDirs[i] = module.getFullPath(LIBASPECTJ_RPATH);
+                } else {
+                    libDirs[i] = project.getProperty(libDirNames[i]);
+                }
+                if (null != libDirs[i]) {
+                    libDirs[i] += File.separator + "lib";
+                    result = new Path(project, libDirs[i] + File.separator + name);
+                    String path = result.toString();
+                    if (new File(path).canRead()) {
+                        return result;
+                    }
+                }                
             }
-            return new Path(project, libDir + File.separator + name);
+            String m = "unable to find " + name + " in " + Arrays.asList(libDirs);
+            throw new BuildException(m);
         }
                 
         
@@ -572,8 +582,9 @@ public class AntBuilder extends Builder {
          */
         static Task aspectJTask(Javac javac, Path toolsJar, Path runtimeJar) {        
             Object task = null;
+            String url = null;
             try {
-                String url = "file:" + toolsJar.toString().replace('\\', '/');
+                url = "file:" + toolsJar.toString().replace('\\', '/');
                 ClassLoader loader = new URLClassLoader(new URL[] {new URL(url)});
                 Class c = loader.loadClass(AJCTASK);
                 task = c.newInstance();
@@ -593,7 +604,10 @@ public class AntBuilder extends Builder {
             } catch (BuildException e) {
                 throw e;
             } catch (Throwable t) {
-                throw new BuildException(t);
+                StringBuffer sb = new StringBuffer();
+                sb.append("classpath=");
+                sb.append(url);
+                throw new BuildException(sb.toString(), t);
             }
             return (Task) task;
         }
index ffefc51033793a31137ab481f0f426401012f3b2..b491e4099d31ce82bb064dfa47d9ea5f88996937 100644 (file)
Binary files a/lib/build/build.jar and b/lib/build/build.jar differ