Search in sources :

Example 1 with DefaultModuleComponentIdentifier

use of org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier in project gradle by gradle.

the class MavenResolver method parseMetaDataFromResource.

protected MutableMavenModuleResolveMetadata parseMetaDataFromResource(ModuleComponentIdentifier moduleComponentIdentifier, LocallyAvailableExternalResource cachedResource, DescriptorParseContext context) {
    MutableMavenModuleResolveMetadata metaData = metaDataParser.parseMetaData(context, cachedResource);
    if (moduleComponentIdentifier instanceof MavenUniqueSnapshotComponentIdentifier) {
        // Snapshot POMs use -SNAPSHOT instead of the timestamp as version, so validate against the expected id
        MavenUniqueSnapshotComponentIdentifier snapshotComponentIdentifier = (MavenUniqueSnapshotComponentIdentifier) moduleComponentIdentifier;
        checkMetadataConsistency(snapshotComponentIdentifier.getSnapshotComponent(), metaData);
        // Use the requested id. Currently we're discarding the MavenUniqueSnapshotComponentIdentifier and replacing with DefaultModuleComponentIdentifier as pretty
        // much every consumer of the meta-data is expecting a DefaultModuleComponentIdentifier.
        ModuleComponentIdentifier lossyId = DefaultModuleComponentIdentifier.newId(moduleComponentIdentifier.getGroup(), moduleComponentIdentifier.getModule(), moduleComponentIdentifier.getVersion());
        metaData.setComponentId(lossyId);
        metaData.setSnapshotTimestamp(snapshotComponentIdentifier.getTimestamp());
    } else {
        checkMetadataConsistency(moduleComponentIdentifier, metaData);
    }
    return processMetaData(metaData);
}
Also used : DefaultMutableMavenModuleResolveMetadata(org.gradle.internal.component.external.model.DefaultMutableMavenModuleResolveMetadata) MutableMavenModuleResolveMetadata(org.gradle.internal.component.external.model.MutableMavenModuleResolveMetadata) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) ModuleComponentIdentifier(org.gradle.api.artifacts.component.ModuleComponentIdentifier)

Example 2 with DefaultModuleComponentIdentifier

use of org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier in project atlas by alibaba.

the class BuildAtlasEnvTask method generate.

@TaskAction
void generate() throws TransformException {
    Set<ResolvedArtifactResult> compileArtifacts = compileManifests.getArtifacts();
    Set<ResolvedArtifactResult> jarArtifacts = compileJars.getArtifacts();
    Set<ResolvedArtifactResult> nativeLibsArtifacts = nativeLibs.getArtifacts();
    Set<ResolvedArtifactResult> javaResourcesArtifacts = javaResources.getArtifacts();
    Set<ResolvedArtifactResult> androidRes = res.getArtifacts();
    Set<ResolvedArtifactResult> androidAssets = assets.getArtifacts();
    Set<ResolvedArtifactResult> androidRnames = symbolListWithPackageNames.getArtifacts();
    AtlasDependencyTree androidDependencyTree = AtlasBuildContext.androidDependencyTrees.get(getVariantName());
    List<AwbBundle> bundles = new ArrayList<>();
    bundles.add(androidDependencyTree.getMainBundle());
    bundles.addAll(androidDependencyTree.getAwbBundles());
    // this is no used ,if used in future add to transform!
    Set<ResolvedArtifactResult> nativeLibsArtifacts2 = nativeLibs2.getArtifacts();
    nativeLibsArtifacts.addAll(nativeLibsArtifacts2);
    AtlasBuildContext.localLibs = nativeLibs2.getArtifactFiles().getFiles();
    for (ResolvedArtifactResult resolvedArtifactResult : jarArtifacts) {
        ComponentIdentifier componentIdentifier = resolvedArtifactResult.getId().getComponentIdentifier();
        if (componentIdentifier instanceof DefaultModuleComponentIdentifier) {
            allJars.add(new FileIdentity(((DefaultModuleComponentIdentifier) componentIdentifier).getGroup() + ":" + ((DefaultModuleComponentIdentifier) componentIdentifier).getModule(), resolvedArtifactResult.getFile(), resolvedArtifactResult.getId().getDisplayName().startsWith("classes.jar") ? false : true, false));
        } else if (componentIdentifier instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allJars.add(new FileIdentity(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult.getFile(), resolvedArtifactResult.getId().getDisplayName().startsWith("classes.jar") ? false : true, true));
        } else if (componentIdentifier instanceof OpaqueComponentArtifactIdentifier) {
            if (resolvedArtifactResult.getFile().getAbsolutePath().contains("renderscript"))
                appLocalJars.add(new FileIdentity(componentIdentifier.getDisplayName(), resolvedArtifactResult.getFile(), true, false));
        }
    }
    for (ResolvedArtifactResult resolvedArtifactResult : compileArtifacts) {
        if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultModuleComponentIdentifier) {
            allManifests.put(((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getGroup() + ":" + ((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getModule(), resolvedArtifactResult.getFile());
        } else if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allManifests.put(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult.getFile());
        }
    }
    for (ResolvedArtifactResult resolvedArtifactResult : nativeLibsArtifacts) {
        if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultModuleComponentIdentifier) {
            allSolibs.put(((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getGroup() + ":" + ((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getModule(), resolvedArtifactResult.getFile());
        } else if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allSolibs.put(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult.getFile());
        }
    }
    for (ResolvedArtifactResult resolvedArtifactResult : javaResourcesArtifacts) {
        if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultModuleComponentIdentifier) {
            allJavaRes.put(((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getGroup() + ":" + ((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getModule(), resolvedArtifactResult.getFile());
        } else if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allJavaRes.put(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult.getFile());
        }
    }
    for (ResolvedArtifactResult resolvedArtifactResult : androidRes) {
        if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultModuleComponentIdentifier) {
            allAndroidRes.put(((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getGroup() + ":" + ((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getModule(), resolvedArtifactResult);
        } else if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allAndroidRes.put(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult);
        }
    }
    for (ResolvedArtifactResult resolvedArtifactResult : androidAssets) {
        if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultModuleComponentIdentifier) {
            allAndroidAssets.put(((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getGroup() + ":" + ((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getModule(), resolvedArtifactResult);
        } else if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allAndroidAssets.put(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult);
        }
    }
    for (ResolvedArtifactResult resolvedArtifactResult : androidRnames) {
        if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultModuleComponentIdentifier) {
            allAndroidRnames.put(((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getGroup() + ":" + ((DefaultModuleComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getModule(), resolvedArtifactResult);
        } else if (resolvedArtifactResult.getId().getComponentIdentifier() instanceof DefaultProjectComponentIdentifier) {
            String projectPath = ((DefaultProjectComponentIdentifier) resolvedArtifactResult.getId().getComponentIdentifier()).getProjectPath();
            allAndroidRnames.put(projectPath.substring(projectPath.lastIndexOf(":") + 1), resolvedArtifactResult);
        }
    }
    // app localJar is not support , this may course duplicate localjars
    appLocalJars.stream().forEach(fileIdentity -> AtlasBuildContext.atlasMainDexHelperMap.get(getVariantName()).addMainDex(fileIdentity));
    AtlasDependencyTree atlasDependencyTree = AtlasBuildContext.androidDependencyTrees.get(getVariantName());
    List<AndroidLibrary> androidLibraries = atlasDependencyTree.getAllAndroidLibrarys();
    androidLibraries.stream().forEach(androidLibrary -> {
        if (androidLibrary instanceof AtlasAndroidLibraryImpl) {
            AndroidDependency fakeAndroidLibrary = ((AtlasAndroidLibraryImpl) androidLibrary).getAndroidLibrary();
            File id = null;
            if ((id = allManifests.get(androidLibrary.getResolvedCoordinates().getGroupId() + ":" + androidLibrary.getResolvedCoordinates().getArtifactId())) == null) {
                id = allManifests.get(androidLibrary.getResolvedCoordinates().toString().split(":")[1]);
            }
            if (id == null) {
                getLogger().warn("id == null---------------------" + androidLibrary.getResolvedCoordinates().getGroupId() + ":" + androidLibrary.getResolvedCoordinates().getArtifactId());
                throw new GradleException("excute failed! ");
            }
            ReflectUtils.updateField(fakeAndroidLibrary, "extractedFolder", id.getParentFile());
            ReflectUtils.updateField(fakeAndroidLibrary, "jarsRootFolder", id.getParentFile());
            ((AtlasAndroidLibraryImpl) androidLibrary).setAndroidLibrary(AndroidDependency.createExplodedAarLibrary(null, androidLibrary.getResolvedCoordinates(), androidLibrary.getName(), ((AtlasAndroidLibraryImpl) androidLibrary).getPath(), id.getParentFile()));
            appVariantContext.manifestMap.put(androidLibrary.getManifest().getAbsolutePath(), appVariantContext.getModifyManifest(androidLibrary));
        }
    });
    List<AndroidLibrary> mainDexAndroidLibraries = atlasDependencyTree.getMainBundle().getAndroidLibraries();
    List<JavaLibrary> mainDexJarLibraries = atlasDependencyTree.getMainBundle().getJavaLibraries();
    List<SoLibrary> mainSoLibraries = atlasDependencyTree.getMainBundle().getSoLibraries();
    for (AndroidLibrary androidLibrary : mainDexAndroidLibraries) {
        String name = androidLibrary.getResolvedCoordinates().getGroupId() + ":" + androidLibrary.getResolvedCoordinates().getArtifactId();
        String moudleName = androidLibrary.getResolvedCoordinates().toString().split(":")[1];
        fillMainManifest(name, moudleName);
        fillMainJar(name, moudleName);
        fillAllJavaRes(name, moudleName);
        fillMainSolibs(name, moudleName);
    }
    for (JavaLibrary jarLibrary : mainDexJarLibraries) {
        String moudleName = jarLibrary.getName().split(":")[1];
        String name = jarLibrary.getResolvedCoordinates().getGroupId() + ":" + jarLibrary.getResolvedCoordinates().getArtifactId();
        fillMainJar(name, moudleName);
        fillAllJavaRes(name, moudleName);
    }
    for (SoLibrary soLibrary : mainSoLibraries) {
        String name = soLibrary.getResolvedCoordinates().getGroupId() + ":" + soLibrary.getResolvedCoordinates().getArtifactId();
        String moudleName = soLibrary.getResolvedCoordinates().toString().split(":")[1];
        fillMainSolibs(name, moudleName);
    }
    for (AwbBundle awbBundle : atlasDependencyTree.getAwbBundles()) {
        List<AndroidLibrary> awbAndroidLibraries = awbBundle.getAndroidLibraries();
        List<JavaLibrary> awbJarLibraries = awbBundle.getJavaLibraries();
        List<SoLibrary> awbSoLibraries = awbBundle.getSoLibraries();
        for (AndroidLibrary androidLibrary : awbAndroidLibraries) {
            String name = androidLibrary.getResolvedCoordinates().getGroupId() + ":" + androidLibrary.getResolvedCoordinates().getArtifactId();
            String moudleName = androidLibrary.getResolvedCoordinates().toString().split(":")[1];
            fillAwbManifest(name, moudleName, awbBundle);
            fillAwbJar(name, moudleName, awbBundle);
            fillAwbAllJavaRes(name, moudleName, awbBundle);
            fillAwbSolibs(name, moudleName, awbBundle);
            fillAwbAndroidRes(name, moudleName, awbBundle);
            fillAwbAndroidAssets(name, moudleName, awbBundle);
            fillAwbAndroidRs(name, moudleName, awbBundle);
        }
        for (JavaLibrary jarLibrary : awbJarLibraries) {
            String moudleName = jarLibrary.getName().split(":")[1];
            String name = jarLibrary.getResolvedCoordinates().getGroupId() + ":" + jarLibrary.getResolvedCoordinates().getArtifactId();
            fillAwbJar(name, moudleName, awbBundle);
        }
        for (SoLibrary soLibrary : awbSoLibraries) {
            String name = soLibrary.getResolvedCoordinates().getGroupId() + ":" + soLibrary.getResolvedCoordinates().getArtifactId();
            String moudleName = soLibrary.getResolvedCoordinates().toString().split(":")[1];
            fillAwbSolibs(name, moudleName, awbBundle);
        }
        String name = awbBundle.getResolvedCoordinates().getGroupId() + ":" + awbBundle.getResolvedCoordinates().getArtifactId();
        String moudleName = awbBundle.getResolvedCoordinates().toString().split(":")[1];
        fillAwbManifest(name, moudleName, awbBundle);
        fillAwbJar(name, moudleName, awbBundle);
        fillAwbAllJavaRes(name, moudleName, awbBundle);
        fillAwbSolibs(name, moudleName, awbBundle);
        fillAwbAndroidRes(name, moudleName, awbBundle);
        fillAwbAndroidAssets(name, moudleName, awbBundle);
        fillAwbAndroidRs(name, moudleName, awbBundle);
    }
    MergeResources mergeResources = appVariantContext.getScope().getMergeResourcesTask().get(new TaskContainerAdaptor(getProject().getTasks()));
    try {
        // mergeresources
        Field field = MergeResources.class.getDeclaredField("libraries");
        field.setAccessible(true);
        field.set(mergeResources, new MainArtifactsCollection((ArtifactCollection) field.get(mergeResources), getProject(), mergeResources.getVariantName()));
        appVariantOutputContext.getAwbTransformMap().values().stream().forEach(awbTransform -> {
            if (isMBundle(appVariantContext, awbTransform.getAwbBundle())) {
                try {
                    awbTransform.getAwbBundle().isMBundle = true;
                    awbTransform.getAwbBundle().bundleInfo.setIsMBundle(true);
                    field.set(mergeResources, new AppendMainArtifactsCollection(appVariantContext.getProject(), (ArtifactCollection) field.get(mergeResources), awbTransform.getAwbBundle(), ANDROID_RES));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        });
        mergeResources.doLast(task -> FileUtils.listFiles(((MergeResources) task).getOutputDir(), new String[] { "xml" }, true).parallelStream().forEach(file -> {
            if (!AppendMainArtifactsCollection.bundle2Map.containsKey(file.getName())) {
                return;
            }
            List<String> lines = null;
            List<String> newLines = new ArrayList<>();
            try {
                lines = FileUtils.readLines(file);
                lines.forEach(s -> {
                    String s1 = s;
                    if (s.contains("http://schemas.android.com/apk/res/" + AppendMainArtifactsCollection.bundle2Map.get(file.getName()))) {
                        s1 = s.replace("http://schemas.android.com/apk/res/" + AppendMainArtifactsCollection.bundle2Map.get(file.getName()), "http://schemas.android.com/apk/res-auto");
                    }
                    newLines.add(s1);
                });
                FileUtils.writeLines(file, newLines);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }));
        // mergeSourcesSets
        MergeSourceSetFolders mergeSourceSetFolders = appVariantContext.getScope().getMergeAssetsTask().get(new TaskContainerAdaptor(getProject().getTasks()));
        Field assetsField = MergeSourceSetFolders.class.getDeclaredField("libraries");
        assetsField.setAccessible(true);
        assetsField.set(mergeSourceSetFolders, new MainArtifactsCollection((ArtifactCollection) assetsField.get(mergeSourceSetFolders), getProject(), mergeSourceSetFolders.getVariantName()));
        appVariantOutputContext.getAwbTransformMap().values().stream().forEach(awbTransform -> {
            if (isMBundle(appVariantContext, awbTransform.getAwbBundle())) {
                try {
                    awbTransform.getAwbBundle().isMBundle = true;
                    awbTransform.getAwbBundle().bundleInfo.setIsMBundle(true);
                    assetsField.set(mergeSourceSetFolders, new AppendMainArtifactsCollection(appVariantContext.getProject(), (ArtifactCollection) assetsField.get(mergeSourceSetFolders), awbTransform.getAwbBundle(), ASSETS));
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        });
        AtlasBuildContext.atlasMainDexHelperMap.get(getVariantName()).getMainSoFiles().put(appVariantContext.getScope().getMergeNativeLibsOutputDir().getAbsolutePath(), true);
    } catch (Exception e) {
    }
    // process resources
    ProcessAndroidResources processAndroidResources = appVariantContext.getScope().getProcessResourcesTask().get(new TaskContainerAdaptor(appVariantContext.getProject().getTasks()));
    FileCollection fileCollection = processAndroidResources.getSymbolListsWithPackageNames();
    Set<String> filesNames = new HashSet<>();
    for (String fileName : AtlasBuildContext.atlasMainDexHelperMap.get(getVariantName()).getMainManifestFiles().keySet()) {
        filesNames.add(fileName.substring(fileName.lastIndexOf(File.separatorChar) + 1));
    }
    FileCollection updateFileCollection = fileCollection.filter(element -> filesNames.contains(element.getParentFile().getParentFile().getName()));
    ReflectUtils.updateField(processAndroidResources, "symbolListsWithPackageNames", updateFileCollection);
    appVariantOutputContext.getAwbTransformMap().values().stream().forEach(awbTransform -> {
        if (isMBundle(appVariantContext, awbTransform.getAwbBundle())) {
            awbTransform.getAwbBundle().isMBundle = true;
            awbTransform.getAwbBundle().bundleInfo.setIsMBundle(true);
            FileCollection fc = new AppendMainArtifactsCollection(appVariantContext.getProject(), processAndroidResources.getSymbolListsWithPackageNames(), awbTransform.getAwbBundle(), SYMBOL_LIST_WITH_PACKAGE_NAME).getArtifactFiles();
            ReflectUtils.updateField(processAndroidResources, "symbolListsWithPackageNames", fc);
        }
    });
    appVariantContext.processResAwbsTask.mainDexSymbolFileCollection = updateFileCollection;
    // FileCollection fs = appVariantContext.getScope().getArtifactFileCollection(AndroidArtifacts.ConsumedConfigType.COMPILE_CLASSPATH,AndroidArtifacts.ArtifactScope.ALL,AndroidArtifacts.ArtifactType.CLASSES);
    // fs.getFiles().forEach(new Consumer<File>() {
    // @Override
    // public void accept(File file) {
    // if (file.exists()){
    // try {
    // JarFile jarFile = new JarFile(file);
    // Enumeration<JarEntry>enumeration = jarFile.entries();
    // while (enumeration.hasMoreElements()){
    // JarEntry jarEntry = enumeration.nextElement();
    // if (jarEntry.getName().endsWith(".class")){
    // ClassReader classReader = new ClassReader(jarFile.getInputStream(jarEntry));
    // String[]ss = classReader.getInterfaces();
    // if (ss!= null){
    // for (String s:ss){
    // if (s.contains("IExternalComponentGetter")||s.contains("IExternalComponentGetter.class")){
    // System.out.println("IExternalComponentGetter:"+jarEntry.getName());
    // }else if (s.contains("IExternalModuleGetter")||s.contains("IExternalModuleGetter.class")){
    // System.out.println("IExternalModuleGetter:"+jarEntry.getName());
    // }
    // }
    // }
    // 
    // }
    // }
    // } catch (IOException e) {
    // e.printStackTrace();
    // }
    // }
    // }
    // });
    allManifests.clear();
    allJavaRes.clear();
    allSolibs.clear();
    allJars.clear();
    allAndroidAssets.clear();
    allAndroidRes.clear();
// 
// try {
// duplicateClazzNote();
// } catch (IOException e) {
// e.printStackTrace();
// }
}
Also used : IOFileFilter(org.apache.commons.io.filefilter.IOFileFilter) AbstractFileCollection(org.gradle.api.internal.file.AbstractFileCollection) ProjectComponentIdentifier(org.gradle.api.artifacts.component.ProjectComponentIdentifier) ResourceType(com.android.resources.ResourceType) JarFile(java.util.jar.JarFile) MergeSourceSetFolders(com.android.build.gradle.tasks.MergeSourceSetFolders) AndroidDependency(com.android.builder.dependency.level2.AndroidDependency) MtlBaseTaskAction(com.taobao.android.builder.tasks.manager.MtlBaseTaskAction) TaskAction(org.gradle.api.tasks.TaskAction) AtlasDependencyGraph(com.android.build.gradle.internal.ide.AtlasDependencyGraph) AtlasAndroidArtifacts(com.android.build.gradle.internal.publishing.AtlasAndroidArtifacts) com.android.ide.common.res2(com.android.ide.common.res2) AtlasDependencyTree(com.taobao.android.builder.dependency.AtlasDependencyTree) Task(org.gradle.api.Task) RUNTIME_CLASSPATH(com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType.RUNTIME_CLASSPATH) JavaLibrary(com.android.builder.model.JavaLibrary) AtlasBuildContext(com.taobao.android.builder.AtlasBuildContext) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) com.google.common.collect(com.google.common.collect) TrueFileFilter(org.apache.commons.io.filefilter.TrueFileFilter) AppVariantContext(com.android.build.gradle.internal.api.AppVariantContext) TransformException(com.android.build.api.transform.TransformException) Project(org.gradle.api.Project) Nullable(com.android.annotations.Nullable) SoLibrary(com.taobao.android.builder.dependency.model.SoLibrary) AndroidArtifacts(com.android.build.gradle.internal.publishing.AndroidArtifacts) ALL(com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactScope.ALL) ArtifactCollection(org.gradle.api.artifacts.ArtifactCollection) COMPILE_CLASSPATH(com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType.COMPILE_CLASSPATH) AppVariantOutputContext(com.android.build.gradle.internal.api.AppVariantOutputContext) Spec(org.gradle.api.specs.Spec) ClassReader(org.objectweb.asm.ClassReader) NonNull(com.android.annotations.NonNull) FalseFileFilter(org.apache.commons.io.filefilter.FalseFileFilter) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) ResolvedArtifactResult(org.gradle.api.artifacts.result.ResolvedArtifactResult) NotNull(org.jetbrains.annotations.NotNull) AppendMainArtifactsCollection(com.taobao.android.builder.tasks.app.merge.AppendMainArtifactsCollection) MergeManifests(com.android.build.gradle.tasks.MergeManifests) FilenameFilter(java.io.FilenameFilter) BaseTask(com.android.build.gradle.internal.tasks.BaseTask) java.util(java.util) MainArtifactsCollection(com.taobao.android.builder.tasks.app.merge.MainArtifactsCollection) OpaqueComponentArtifactIdentifier(org.gradle.internal.component.local.model.OpaqueComponentArtifactIdentifier) BaseVariantOutput(com.android.build.gradle.api.BaseVariantOutput) AndroidLibrary(com.android.builder.model.AndroidLibrary) FileCollection(org.gradle.api.file.FileCollection) ComponentIdentifier(org.gradle.api.artifacts.component.ComponentIdentifier) JarEntry(java.util.jar.JarEntry) ANNOTATION_PROCESSOR(com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType.ANNOTATION_PROCESSOR) AwbBundle(com.taobao.android.builder.dependency.model.AwbBundle) JavaCompile(org.gradle.api.tasks.compile.JavaCompile) ReflectUtils(com.taobao.android.builder.tools.ReflectUtils) Action(org.gradle.api.Action) ProjectDependency(org.gradle.api.artifacts.ProjectDependency) FileUtils(org.apache.commons.io.FileUtils) IOException(java.io.IOException) ProcessAndroidResources(com.android.build.gradle.tasks.ProcessAndroidResources) Field(java.lang.reflect.Field) AtlasAndroidLibraryImpl(com.android.build.gradle.internal.ide.AtlasAndroidLibraryImpl) File(java.io.File) Consumer(java.util.function.Consumer) MainFilesCollection(com.taobao.android.builder.tasks.app.merge.MainFilesCollection) GradleException(org.gradle.api.GradleException) DefaultProjectComponentIdentifier(org.gradle.internal.component.local.model.DefaultProjectComponentIdentifier) ArtifactType(com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactType) Preconditions(com.google.common.base.Preconditions) AwbTransform(com.android.build.gradle.internal.api.AwbTransform) TaskContainerAdaptor(com.android.build.gradle.internal.TaskContainerAdaptor) MergeResources(com.android.build.gradle.tasks.MergeResources) AppendMainArtifactsCollection(com.taobao.android.builder.tasks.app.merge.AppendMainArtifactsCollection) MainArtifactsCollection(com.taobao.android.builder.tasks.app.merge.MainArtifactsCollection) ProjectComponentIdentifier(org.gradle.api.artifacts.component.ProjectComponentIdentifier) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) ComponentIdentifier(org.gradle.api.artifacts.component.ComponentIdentifier) DefaultProjectComponentIdentifier(org.gradle.internal.component.local.model.DefaultProjectComponentIdentifier) AbstractFileCollection(org.gradle.api.internal.file.AbstractFileCollection) FileCollection(org.gradle.api.file.FileCollection) TaskContainerAdaptor(com.android.build.gradle.internal.TaskContainerAdaptor) Field(java.lang.reflect.Field) MergeResources(com.android.build.gradle.tasks.MergeResources) ArtifactCollection(org.gradle.api.artifacts.ArtifactCollection) AppendMainArtifactsCollection(com.taobao.android.builder.tasks.app.merge.AppendMainArtifactsCollection) ResolvedArtifactResult(org.gradle.api.artifacts.result.ResolvedArtifactResult) AwbBundle(com.taobao.android.builder.dependency.model.AwbBundle) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) IOException(java.io.IOException) DefaultProjectComponentIdentifier(org.gradle.internal.component.local.model.DefaultProjectComponentIdentifier) SoLibrary(com.taobao.android.builder.dependency.model.SoLibrary) AtlasDependencyTree(com.taobao.android.builder.dependency.AtlasDependencyTree) TransformException(com.android.build.api.transform.TransformException) IOException(java.io.IOException) GradleException(org.gradle.api.GradleException) MergeSourceSetFolders(com.android.build.gradle.tasks.MergeSourceSetFolders) AtlasAndroidLibraryImpl(com.android.build.gradle.internal.ide.AtlasAndroidLibraryImpl) AndroidDependency(com.android.builder.dependency.level2.AndroidDependency) ProcessAndroidResources(com.android.build.gradle.tasks.ProcessAndroidResources) JavaLibrary(com.android.builder.model.JavaLibrary) AndroidLibrary(com.android.builder.model.AndroidLibrary) GradleException(org.gradle.api.GradleException) OpaqueComponentArtifactIdentifier(org.gradle.internal.component.local.model.OpaqueComponentArtifactIdentifier) JarFile(java.util.jar.JarFile) File(java.io.File) MtlBaseTaskAction(com.taobao.android.builder.tasks.manager.MtlBaseTaskAction) TaskAction(org.gradle.api.tasks.TaskAction)

Example 3 with DefaultModuleComponentIdentifier

use of org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier in project gradle by gradle.

the class ComponentIdentifierSerializer method read.

@Override
public ComponentIdentifier read(Decoder decoder) throws IOException {
    byte id = decoder.readByte();
    if (Implementation.ROOT_PROJECT.getId() == id) {
        BuildIdentifier buildIdentifier = buildIdentifierSerializer.read(decoder);
        String projectName = decoder.readString();
        return new DefaultProjectComponentIdentifier(buildIdentifier, Path.ROOT, Path.ROOT, projectName);
    } else if (Implementation.ROOT_BUILD_PROJECT.getId() == id) {
        BuildIdentifier buildIdentifier = buildIdentifierSerializer.read(decoder);
        Path projectPath = Path.path(decoder.readString());
        return new DefaultProjectComponentIdentifier(buildIdentifier, projectPath, projectPath, projectPath.getName());
    } else if (Implementation.OTHER_BUILD_ROOT_PROJECT.getId() == id) {
        BuildIdentifier buildIdentifier = buildIdentifierSerializer.read(decoder);
        Path identityPath = Path.path(decoder.readString());
        return new DefaultProjectComponentIdentifier(buildIdentifier, identityPath, Path.ROOT, identityPath.getName());
    } else if (Implementation.OTHER_BUILD_PROJECT.getId() == id) {
        BuildIdentifier buildIdentifier = buildIdentifierSerializer.read(decoder);
        Path identityPath = Path.path(decoder.readString());
        Path projectPath = Path.path(decoder.readString());
        return new DefaultProjectComponentIdentifier(buildIdentifier, identityPath, projectPath, identityPath.getName());
    } else if (Implementation.MODULE.getId() == id) {
        return new DefaultModuleComponentIdentifier(DefaultModuleIdentifier.newId(decoder.readString(), decoder.readString()), decoder.readString());
    } else if (Implementation.SNAPSHOT.getId() == id) {
        return new MavenUniqueSnapshotComponentIdentifier(DefaultModuleIdentifier.newId(decoder.readString(), decoder.readString()), decoder.readString(), decoder.readString());
    } else if (Implementation.LIBRARY.getId() == id) {
        return new DefaultLibraryBinaryIdentifier(decoder.readString(), decoder.readString(), decoder.readString());
    } else if (Implementation.OPAQUE.getId() == id) {
        return new OpaqueComponentArtifactIdentifier(new File(decoder.readString()));
    }
    throw new IllegalArgumentException("Unable to find component identifier type with id: " + id);
}
Also used : Path(org.gradle.util.Path) DefaultLibraryBinaryIdentifier(org.gradle.internal.component.local.model.DefaultLibraryBinaryIdentifier) MavenUniqueSnapshotComponentIdentifier(org.gradle.api.internal.artifacts.repositories.resolver.MavenUniqueSnapshotComponentIdentifier) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) OpaqueComponentArtifactIdentifier(org.gradle.internal.component.local.model.OpaqueComponentArtifactIdentifier) BuildIdentifier(org.gradle.api.artifacts.component.BuildIdentifier) DefaultProjectComponentIdentifier(org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier) File(java.io.File)

Example 4 with DefaultModuleComponentIdentifier

use of org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier in project gradle by gradle.

the class RepositoryChainDependencyToComponentIdResolver method resolve.

public void resolve(DependencyMetadata dependency, BuildableComponentIdResolveResult result) {
    ModuleVersionSelector requested = dependency.getRequested();
    if (versionSelectorScheme.parseSelector(requested.getVersion()).isDynamic()) {
        dynamicRevisionResolver.resolve(dependency, result);
    } else {
        DefaultModuleComponentIdentifier id = new DefaultModuleComponentIdentifier(requested.getGroup(), requested.getName(), requested.getVersion());
        ModuleVersionIdentifier mvId = moduleIdentifierFactory.moduleWithVersion(requested.getGroup(), requested.getName(), requested.getVersion());
        result.resolved(id, mvId);
    }
}
Also used : ModuleVersionIdentifier(org.gradle.api.artifacts.ModuleVersionIdentifier) ModuleVersionSelector(org.gradle.api.artifacts.ModuleVersionSelector) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier)

Example 5 with DefaultModuleComponentIdentifier

use of org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier in project gradle by gradle.

the class RepositoryChainDependencyToComponentIdResolver method resolve.

public void resolve(DependencyMetadata dependency, ResolvedVersionConstraint resolvedVersionConstraint, BuildableComponentIdResolveResult result) {
    ComponentSelector componentSelector = dependency.getSelector();
    if (componentSelector instanceof ModuleComponentSelector) {
        ModuleComponentSelector module = (ModuleComponentSelector) componentSelector;
        if (resolvedVersionConstraint == null) {
            // TODO:DAZ This shouldn't be required, but `ExternalResourceResolverDescriptorParseContext` does not provide a resolved constraint
            VersionConstraint raw = module.getVersionConstraint();
            resolvedVersionConstraint = new DefaultResolvedVersionConstraint(raw, versionSelectorScheme);
        }
        VersionSelector preferredSelector = resolvedVersionConstraint.getPreferredSelector();
        if (preferredSelector.isDynamic()) {
            dynamicRevisionResolver.resolve(toModuleDependencyMetadata(dependency), preferredSelector, resolvedVersionConstraint.getRejectedSelector(), result);
        } else {
            String version = resolvedVersionConstraint.getPreferredVersion();
            ModuleComponentIdentifier id = new DefaultModuleComponentIdentifier(module.getGroup(), module.getModule(), version);
            ModuleVersionIdentifier mvId = moduleIdentifierFactory.moduleWithVersion(module.getGroup(), module.getModule(), version);
            result.resolved(id, mvId);
        }
    }
}
Also used : ModuleVersionIdentifier(org.gradle.api.artifacts.ModuleVersionIdentifier) DefaultResolvedVersionConstraint(org.gradle.api.internal.artifacts.dependencies.DefaultResolvedVersionConstraint) VersionConstraint(org.gradle.api.artifacts.VersionConstraint) ResolvedVersionConstraint(org.gradle.api.internal.artifacts.ResolvedVersionConstraint) ComponentSelector(org.gradle.api.artifacts.component.ComponentSelector) ModuleComponentSelector(org.gradle.api.artifacts.component.ModuleComponentSelector) ModuleComponentSelector(org.gradle.api.artifacts.component.ModuleComponentSelector) DefaultResolvedVersionConstraint(org.gradle.api.internal.artifacts.dependencies.DefaultResolvedVersionConstraint) ModuleComponentIdentifier(org.gradle.api.artifacts.component.ModuleComponentIdentifier) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) DefaultModuleComponentIdentifier(org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier) VersionSelector(org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionSelector)

Aggregations

DefaultModuleComponentIdentifier (org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier)5 File (java.io.File)2 ModuleVersionIdentifier (org.gradle.api.artifacts.ModuleVersionIdentifier)2 OpaqueComponentArtifactIdentifier (org.gradle.internal.component.local.model.OpaqueComponentArtifactIdentifier)2 NonNull (com.android.annotations.NonNull)1 Nullable (com.android.annotations.Nullable)1 TransformException (com.android.build.api.transform.TransformException)1 BaseVariantOutput (com.android.build.gradle.api.BaseVariantOutput)1 TaskContainerAdaptor (com.android.build.gradle.internal.TaskContainerAdaptor)1 AppVariantContext (com.android.build.gradle.internal.api.AppVariantContext)1 AppVariantOutputContext (com.android.build.gradle.internal.api.AppVariantOutputContext)1 AwbTransform (com.android.build.gradle.internal.api.AwbTransform)1 AtlasAndroidLibraryImpl (com.android.build.gradle.internal.ide.AtlasAndroidLibraryImpl)1 AtlasDependencyGraph (com.android.build.gradle.internal.ide.AtlasDependencyGraph)1 AndroidArtifacts (com.android.build.gradle.internal.publishing.AndroidArtifacts)1 ALL (com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactScope.ALL)1 ArtifactType (com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactType)1 ANNOTATION_PROCESSOR (com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType.ANNOTATION_PROCESSOR)1 COMPILE_CLASSPATH (com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType.COMPILE_CLASSPATH)1 RUNTIME_CLASSPATH (com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType.RUNTIME_CLASSPATH)1