blob: d22c00319617a09ed155a28e631e8715deff6559 [file] [log] [blame]
// 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}.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") + ".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();