Exemple #1
0
        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);
        }