]> source.dussan.org Git - aspectj.git/commitdiff
- if a module has no source files, rather than aborting, create a minimal file for...
authorwisberg <wisberg>
Thu, 3 Apr 2003 01:26:49 +0000 (01:26 +0000)
committerwisberg <wisberg>
Thu, 3 Apr 2003 01:26:49 +0000 (01:26 +0000)
- if a required module has exported libraries, add those to the compile classpath of the requiring module.

build/src/org/aspectj/internal/tools/ant/taskdefs/AntBuilder.java

index 0cfd097b77e34aac652f1d8b2d2fc3f78b07c2fa..233adce1ec88f1d21b1a6fb87cbc7010827d7dd0 100644 (file)
@@ -12,6 +12,8 @@
 package org.aspectj.internal.tools.ant.taskdefs;
 
 import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -207,11 +209,32 @@ public class AntBuilder extends Builder {
         // I suspect it requires the proper adapter setup.
         Javac javac = new Javac(); 
         setupTask(javac, "javac");
+        javac.setDestdir(classesDir);
+        if (!classesDir.mkdirs()) {
+            errors.add("unable to create classes directory");
+            return false;
+        }
         // -- source paths
         Path path = new Path(project);
+        boolean hasSourceDirectories = false;
         for (Iterator iter = module.getSrcDirs().iterator(); iter.hasNext();) {
             File file = (File) iter.next();
             path.createPathElement().setLocation(file);
+            if (!hasSourceDirectories) {
+                hasSourceDirectories = true;
+            }
+        }
+        if (!hasSourceDirectories) { // none - dump minimal file and exit
+            File minFile = new File(classesDir, module.name);
+            try {
+                FileWriter fw = new FileWriter(minFile);
+                fw.write(module.name);
+                fw.close();
+            } catch (IOException e) {
+                // ignore
+            }
+            // XXX signal?
+            return true; // nothing to compile - ok
         }
         javac.setSrcdir(path);
         path = null;
@@ -219,21 +242,28 @@ public class AntBuilder extends Builder {
         // -- classpath
         Path classpath = new Path(project);
         boolean hasLibraries = false;
-        // modules
-        for (Iterator iter = module.getRequired().iterator(); iter.hasNext();) {
-            Module required = (Module) iter.next();            
-            classpath.createPathElement().setLocation(required.getModuleJar());
+        // required libraries
+        for (Iterator iter = module.getLibJars().iterator(); iter.hasNext();) {
+            File file = (File) iter.next();            
+            classpath.createPathElement().setLocation(file);
             if (!hasLibraries) {
                 hasLibraries = true;
             }
         }
-        // libraries
-        for (Iterator iter = module.getLibJars().iterator(); iter.hasNext();) {
-            File file = (File) iter.next();            
-            classpath.createPathElement().setLocation(file);
+        // required modules and their exported libraries
+        for (Iterator iter = module.getRequired().iterator(); iter.hasNext();) {
+            Module required = (Module) iter.next();            
+            classpath.createPathElement().setLocation(required.getModuleJar());
             if (!hasLibraries) {
                 hasLibraries = true;
             }
+            // also put on classpath libraries exported from required module
+            // XXX exported modules not supported
+            for (Iterator iterator = required.getExportedLibJars().iterator();
+                iterator.hasNext();
+                ) {
+                classpath.createPathElement().setLocation((File) iterator.next());
+            }
         }
         // need to add system classes??
         boolean inEclipse = true; // XXX detect, fork only in eclipse
@@ -244,11 +274,6 @@ public class AntBuilder extends Builder {
         // -- set output directory
         classpath.createPathElement().setLocation(classesDir);
         javac.setClasspath(classpath);
-        javac.setDestdir(classesDir);
-        if (!classesDir.mkdirs()) {
-            errors.add("unable to create classes directory");
-            return false;
-        }
         // misc
         javac.setDebug(true);
         // compile