public override bool Execute() { Log.LogDebugMessage("DetermineJavaLibrariesToCompile"); Log.LogDebugMessage(" EnableInstantRun: {0}", EnableInstantRun); Log.LogDebugMessage(" MonoPlatformJarPath: {0}", MonoPlatformJarPath); Log.LogDebugTaskItems(" JavaSourceFiles:", JavaSourceFiles); Log.LogDebugTaskItems(" JavaLibraries:", JavaLibraries); Log.LogDebugTaskItems(" ExternalJavaLibraries:", ExternalJavaLibraries); Log.LogDebugTaskItems(" LibraryProjectJars:", LibraryProjectJars); Log.LogDebugTaskItems(" AdditionalJavaLibraryReferences:", AdditionalJavaLibraryReferences); Log.LogDebugTaskItems(" DoNotPackageJavaLibraries:", DoNotPackageJavaLibraries); var jars = new List <ITaskItem> (); if (!EnableInstantRun) { jars.Add(new TaskItem(MonoPlatformJarPath)); } if (JavaSourceFiles != null) { foreach (var jar in JavaSourceFiles.Where(p => Path.GetExtension(p.ItemSpec) == ".jar")) { jars.Add(jar); } } if (JavaLibraries != null) { foreach (var jarfile in JavaLibraries) { jars.Add(jarfile); } } if (LibraryProjectJars != null) { foreach (var jar in LibraryProjectJars) { if (!MonoAndroidHelper.IsEmbeddedReferenceJar(jar.ItemSpec)) { jars.Add(jar); } } } if (AdditionalJavaLibraryReferences != null) { foreach (var jar in AdditionalJavaLibraryReferences.Distinct(TaskItemComparer.DefaultComparer)) { jars.Add(jar); } } var distinct = MonoAndroidHelper.DistinctFilesByContent(jars); jars = jars.Where(j => distinct.Contains(j)).ToList(); JavaLibrariesToCompile = jars.Where(j => !IsExcluded(j.ItemSpec)).ToArray(); ReferenceJavaLibraries = jars.Except(JavaLibrariesToCompile).ToArray(); Log.LogDebugTaskItems(" JavaLibrariesToCompile:", JavaLibrariesToCompile); Log.LogDebugTaskItems(" ReferenceJavaLibraries:", ReferenceJavaLibraries); return(true); }
public override bool RunTask() { var jars = new List <ITaskItem> (); if (!EnableInstantRun) { jars.AddRange(MonoPlatformJarPaths); } if (JavaSourceFiles != null) { foreach (var jar in JavaSourceFiles.Where(p => Path.GetExtension(p.ItemSpec) == ".jar")) { jars.Add(jar); } } if (JavaLibraries != null) { foreach (var jarfile in JavaLibraries) { jars.Add(jarfile); } } if (LibraryProjectJars != null) { foreach (var jar in LibraryProjectJars) { if (!MonoAndroidHelper.IsEmbeddedReferenceJar(jar.ItemSpec)) { jars.Add(jar); } } } if (AdditionalJavaLibraryReferences != null) { foreach (var jar in AdditionalJavaLibraryReferences.Distinct(TaskItemComparer.DefaultComparer)) { jars.Add(jar); } } var distinct = MonoAndroidHelper.DistinctFilesByContent(jars); var javaLibrariesToCompile = new List <ITaskItem> (); var referenceJavaLibraries = new List <ITaskItem> (); if (ExternalJavaLibraries != null) { referenceJavaLibraries.AddRange(ExternalJavaLibraries); } foreach (var item in distinct) { if (!HasClassFiles(item.ItemSpec)) { continue; } if (IsExcluded(item.ItemSpec)) { referenceJavaLibraries.Add(item); } else { javaLibrariesToCompile.Add(item); } } JavaLibrariesToCompile = javaLibrariesToCompile.ToArray(); ReferenceJavaLibraries = referenceJavaLibraries.ToArray(); Log.LogDebugTaskItems(" JavaLibrariesToCompile:", JavaLibrariesToCompile); Log.LogDebugTaskItems(" ReferenceJavaLibraries:", ReferenceJavaLibraries); return(true); }