1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 * Combines classes from javac.custom.classpath property and ${out.dir}/classes
7 * into a single jar file ${ant.project.name}.jar and places the file in
11 importClass(java
.io
.File
);
12 importClass(org
.apache
.tools
.ant
.types
.Reference
);
13 importClass(org
.apache
.tools
.ant
.types
.FileSet
);
14 importClass(org
.apache
.tools
.ant
.types
.ZipFileSet
);
15 importClass(org
.apache
.tools
.ant
.taskdefs
.Zip
);
17 var jarTask
= project
.createTask("jar");
19 // Do not allow duplicates in the jar, the default behavior of Jar task
20 // is "add" which means duplicates are allowed.
21 // This can cause a class file to be included multiple times, setting the
22 // duplicate to "preserve" ensures that only the first definition is included.
24 var duplicate
= Zip
.Duplicate();
25 duplicate
.setValue("preserve");
26 jarTask
.setDuplicate(duplicate
);
28 var destPath
= File(project
.getProperty("TEST_JAR_PATH"));
29 jarTask
.setDestFile(destPath
);
31 // Include all the jars in the classpath.
32 var javacCustomClasspath
=
33 project
.getReference("javac.custom.classpath").list();
35 for (var i
in javacCustomClasspath
) {
36 var fileName
= javacCustomClasspath
[i
]
37 var fileExtension
= fileName
.split("\\.").pop();
38 if(fileExtension
== "jar")
40 var zipFileSet
= ZipFileSet();
41 zipFileSet
.setIncludes("**/*.class");
42 zipFileSet
.setSrc(File(fileName
));
43 jarTask
.addFileset(zipFileSet
);
47 // Add the compiled classes in ${out.dir}/classes.
48 var projectClasses
= FileSet();
49 projectClasses
.setIncludes("**/*.class");
50 projectClasses
.setDir(File(project
.getProperty("out.dir") + "/classes"));
51 jarTask
.addFileset(projectClasses
);
53 // Exclude manifest and resource classes.
55 (project
.getProperty("project.app.package")).replace('.','/');
56 var excludedClasses
= ["R.class", "R$*.class", "Manifest.class",
57 "Manifest$*.class", "BuildConfig.class"]
59 var exclusionString
= "";
60 for (var i
in excludedClasses
) {
61 exclusionString
+= appPackagePath
+ "/" + excludedClasses
[i
] + " ";
64 jarTask
.setExcludes(exclusionString
);