Index: build/android/ant/create-test-jar.js |
diff --git a/build/android/ant/create-test-jar.js b/build/android/ant/create-test-jar.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..542a89e978feada38ddf99562bd856bc1ca0a623 |
--- /dev/null |
+++ b/build/android/ant/create-test-jar.js |
@@ -0,0 +1,70 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+/** |
+ * Combines classes from javac.custom.classpath property and ${out.dir}/classes |
+ * into a single jar file ${ant.project.name}-debug.jar and places the file in |
+ * ${lib.java.dir}. |
+ */ |
+ |
+importClass(java.io.File); |
+importClass(org.apache.tools.ant.types.Reference); |
+importClass(org.apache.tools.ant.types.FileSet); |
+importClass(org.apache.tools.ant.types.ZipFileSet); |
+importClass(org.apache.tools.ant.taskdefs.Zip); |
+ |
+var echo = project.createTask("echo"); |
+var jarTask = project.createTask("jar"); |
+ |
+// Do not allow duplicates in the jar, the default behavior of Jar task |
+// is "add" which means duplicates are allowed. |
+// This can cause a class file to be included multiple times, setting the |
+// duplicate to "preserve" ensures that only the first definition is included. |
+ |
+var duplicate = Zip.Duplicate(); |
+duplicate.setValue("preserve"); |
+jarTask.setDuplicate(duplicate); |
+ |
+var destFile = project.getProperty("ant.project.name") + "-debug.jar"; |
+var destPath = File(project.getProperty("test.lib.java.dir") + "/" + destFile); |
+jarTask.setDestFile(destPath); |
+ |
+// Include all the jars in the classpath. |
+var javacCustomClasspath = |
+ project.getReference("javac.custom.classpath").list(); |
+ |
+for (var i in javacCustomClasspath) { |
+ var fileName = javacCustomClasspath[i] |
+ var fileExtension = fileName.split("\\.").pop(); |
+ if(fileExtension == "jar") |
+ { |
+ var zipFileSet = ZipFileSet(); |
+ zipFileSet.setIncludes("**/*.class"); |
+ zipFileSet.setSrc(File(fileName)); |
+ jarTask.addFileset(zipFileSet); |
+ } |
+} |
+ |
+// Add the compiled classes in ${out.dir}/classes. |
+var projectClasses = FileSet(); |
+projectClasses.setIncludes("**/*.class"); |
+projectClasses.setDir(File(project.getProperty("out.dir") + "/classes")); |
+jarTask.addFileset(projectClasses); |
+ |
+// Exclude manifest and resource classes. |
+var appPackagePath = |
+ (project.getProperty("project.app.package")).replace('.','/'); |
+var excludedClasses = ["R.class", "R$*.class", "Manifest.class", |
+ "Manifest$*.class", "BuildConfig.class"] |
+ |
+var exclusionString = ""; |
+for (var i in excludedClasses) { |
+ exclusionString += appPackagePath+ "/" + excludedClasses[i] + " "; |
+} |
+ |
+jarTask.setExcludes(exclusionString); |
+echo.setMessage("Creating test jar: " + |
+ jarTask.getDestFile().getAbsolutePath()); |
+echo.perform(); |
+jarTask.perform(); |