diff --git a/java/java.go b/java/java.go index b60f9c739..4bf5880bc 100644 --- a/java/java.go +++ b/java/java.go @@ -75,7 +75,7 @@ type CompilerProperties struct { // list of files to use as Java resources Java_resources []string `android:"arch_variant"` - // list of files that should be excluded from java_resources + // list of files that should be excluded from java_resources and java_resource_dirs Exclude_java_resources []string `android:"arch_variant"` // don't build against the default libraries (bootclasspath, legacy-test, core-junit, @@ -1119,7 +1119,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path } } - dirArgs, dirDeps := ResourceDirsToJarArgs(ctx, j.properties.Java_resource_dirs, j.properties.Exclude_java_resource_dirs) + dirArgs, dirDeps := ResourceDirsToJarArgs(ctx, j.properties.Java_resource_dirs, + j.properties.Exclude_java_resource_dirs, j.properties.Exclude_java_resources) fileArgs, fileDeps := ResourceFilesToJarArgs(ctx, j.properties.Java_resources, j.properties.Exclude_java_resources) var resArgs []string diff --git a/java/java_resources.go b/java/java_resources.go index e02709dc0..fdc159063 100644 --- a/java/java_resources.go +++ b/java/java_resources.go @@ -32,7 +32,7 @@ var resourceExcludes = []string{ } func ResourceDirsToJarArgs(ctx android.ModuleContext, - resourceDirs, excludeResourceDirs []string) (args []string, deps android.Paths) { + resourceDirs, excludeResourceDirs, excludeResourceFiles []string) (args []string, deps android.Paths) { var excludeDirs []string var excludeFiles []string @@ -44,6 +44,8 @@ func ResourceDirsToJarArgs(ctx android.ModuleContext, } } + excludeFiles = append(excludeFiles, ctx.ExpandSources(excludeResourceFiles, nil).Strings()...) + excludeFiles = append(excludeFiles, resourceExcludes...) for _, resourceDir := range resourceDirs { diff --git a/java/java_test.go b/java/java_test.go index 3ace528da..82accd5a5 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -702,6 +702,30 @@ func TestResources(t *testing.T) { prop: `java_resource_dirs: ["java-res/*"], exclude_java_resource_dirs: ["java-res/b"]`, args: "-C java-res/a -f java-res/a/a", }, + { + // Test wildcards in java_resources + name: "wildcard files", + prop: `java_resources: ["java-res/**/*"]`, + args: "-C . -f java-res/a/a -f java-res/b/b", + }, + { + // Test exclude_java_resources with java_resources + name: "wildcard files with exclude", + prop: `java_resources: ["java-res/**/*"], exclude_java_resources: ["java-res/b/*"]`, + args: "-C . -f java-res/a/a", + }, + { + // Test exclude_java_resources with java_resource_dirs + name: "resource dirs with exclude files", + prop: `java_resource_dirs: ["java-res"], exclude_java_resources: ["java-res/b/b"]`, + args: "-C java-res -f java-res/a/a", + }, + { + // Test exclude_java_resource_dirs with java_resource_dirs + name: "resource dirs with exclude files", + prop: `java_resource_dirs: ["java-res", "java-res2"], exclude_java_resource_dirs: ["java-res2"]`, + args: "-C java-res -f java-res/a/a -f java-res/b/b", + }, } for _, test := range table { @@ -734,42 +758,6 @@ func TestResources(t *testing.T) { } } -func TestExcludeResources(t *testing.T) { - ctx := testJava(t, ` - java_library { - name: "foo", - srcs: ["a.java"], - java_resource_dirs: ["java-res", "java-res2"], - exclude_java_resource_dirs: ["java-res2"], - } - - java_library { - name: "bar", - srcs: ["a.java"], - java_resources: ["java-res/*/*"], - exclude_java_resources: ["java-res/b/*"], - } - `) - - fooRes := ctx.ModuleForTests("foo", "android_common").Output("res/foo.jar") - - expected := "-C java-res -f java-res/a/a -f java-res/b/b" - if fooRes.Args["jarArgs"] != expected { - t.Errorf("foo resource jar args %q is not %q", - fooRes.Args["jarArgs"], expected) - - } - - barRes := ctx.ModuleForTests("bar", "android_common").Output("res/bar.jar") - - expected = "-C . -f java-res/a/a" - if barRes.Args["jarArgs"] != expected { - t.Errorf("bar resource jar args %q is not %q", - barRes.Args["jarArgs"], expected) - - } -} - func TestGeneratedSources(t *testing.T) { ctx := testJava(t, ` java_library {