use of org.gradle.api.artifacts.ResolvedArtifact in project atlas by alibaba.
the class TDependencyManager method resolveDependency.
/**
* 解析依赖
*
* @param resolvedDependencyContainer
* @param parent
* @param resolvedComponentResult
* @param artifacts
* @param configDependencies
* @param indent
*/
private void resolveDependency(ResolvedDependencyContainer resolvedDependencyContainer, ResolvedDependencyInfo parent, ResolvedComponentResult resolvedComponentResult, Map<ModuleVersionIdentifier, List<ResolvedArtifact>> artifacts, VariantDependencies configDependencies, int indent, CircleDependencyCheck circleDependencyCheck, CircleDependencyCheck.DependencyNode node, Set<String> resolvedModules) {
ModuleVersionIdentifier moduleVersion = resolvedComponentResult.getModuleVersion();
if (configDependencies.getChecker().checkForExclusion(moduleVersion)) {
return;
}
if (moduleVersion.getName().equals("support-annotations") && moduleVersion.getGroup().equals("com.android.support")) {
configDependencies.setAnnotationsPresent(true);
}
// now loop on all the artifact for this modules.
List<ResolvedArtifact> moduleArtifacts = artifacts.get(moduleVersion);
if (null == moduleArtifacts) {
return;
}
ComponentIdentifier id = resolvedComponentResult.getId();
String gradlePath = (id instanceof ProjectComponentIdentifier) ? ((ProjectComponentIdentifier) id).getProjectPath() : null;
// 如果同时找到多个依赖,暂时没法判断是那个真正有用
for (ResolvedArtifact resolvedArtifact : moduleArtifacts) {
ResolvedDependencyInfo resolvedDependencyInfo = new ResolvedDependencyInfo(moduleVersion.getVersion(), moduleVersion.getGroup(), moduleVersion.getName(), resolvedArtifact.getType(), resolvedArtifact.getClassifier());
resolvedDependencyInfo.setIndent(indent);
resolvedDependencyInfo.setGradlePath(gradlePath);
resolvedDependencyInfo.setResolvedArtifact(resolvedArtifact);
//String parentVersionString = parent.getType();
String moduleVersonString = moduleVersion.toString() + "." + resolvedArtifact.getType() + "." + resolvedArtifact.getClassifier() + "." + indent;
if (null != parent) {
if ("awb".equals(parent.getType())) {
moduleVersonString = parent.toString() + "->" + moduleVersonString;
}
}
if (resolvedModules.contains(moduleVersonString)) {
logger.info(moduleVersonString);
continue;
} else {
resolvedModules.add(moduleVersonString);
}
String path = computeArtifactPath(moduleVersion, resolvedArtifact);
String name = computeArtifactName(moduleVersion, resolvedArtifact);
File explodedDir = project.file(project.getBuildDir() + "/" + FD_INTERMEDIATES + "/exploded-" + resolvedArtifact.getType().toLowerCase() + "/" + path);
resolvedDependencyInfo.setExplodedDir(explodedDir);
resolvedDependencyInfo.setDependencyName(name);
if (null == parent) {
parent = resolvedDependencyInfo;
} else {
if (null == resolvedDependencyInfo.getParent()) {
resolvedDependencyInfo.setParent(parent);
}
parent.getChildren().add(resolvedDependencyInfo);
}
Set<? extends DependencyResult> dependencies = resolvedComponentResult.getDependencies();
for (DependencyResult dep : dependencies) {
if (dep instanceof ResolvedDependencyResult) {
ResolvedComponentResult childResolvedComponentResult = ((ResolvedDependencyResult) dep).getSelected();
CircleDependencyCheck.DependencyNode childNode = circleDependencyCheck.addDependency(childResolvedComponentResult.getModuleVersion(), node, indent + 1);
CircleDependencyCheck.CircleResult circleResult = circleDependencyCheck.checkCircle(logger);
if (circleResult.hasCircle) {
logger.warning("[CircleDependency]" + StringUtils.join(circleResult.detail, ";"));
} else {
resolveDependency(resolvedDependencyContainer, parent, ((ResolvedDependencyResult) dep).getSelected(), artifacts, configDependencies, indent + 1, circleDependencyCheck, childNode, resolvedModules);
}
}
}
resolvedDependencyContainer.addDependency(resolvedDependencyInfo);
}
}
use of org.gradle.api.artifacts.ResolvedArtifact in project atlas by alibaba.
the class DependencyConvertUtils method toApLibrary.
public static ApLibrary toApLibrary(ResolvedDependencyInfo resolvedDependencyInfo) {
assertType(Type.AP, resolvedDependencyInfo);
ResolvedArtifact artifact = resolvedDependencyInfo.getResolvedArtifact();
ApLibrary apLibrary = new ApLibrary(convert(artifact), artifact.getFile(), resolvedDependencyInfo.getExplodedDir());
return apLibrary;
}
use of org.gradle.api.artifacts.ResolvedArtifact in project atlas by alibaba.
the class DependencyConvertUtils method toJarDependency.
/**
* 转换为jar依赖
*
* @param resolvedDependencyInfo
* @return
*/
private static JarDependency toJarDependency(ResolvedDependencyInfo resolvedDependencyInfo, boolean containChild) {
assertType(Type.JAR, resolvedDependencyInfo);
ResolvedArtifact artifact = resolvedDependencyInfo.getResolvedArtifact();
List<JarDependency> dependencies = Lists.newArrayList();
if (containChild) {
collectChildren(resolvedDependencyInfo, Lists.<LibraryDependency>newArrayList(), dependencies, Lists.<SoLibrary>newArrayList());
}
JarDependency jarInfo = new JarDependency(artifact.getFile(), dependencies, convert(artifact), resolvedDependencyInfo.getGradlePath(), false);
return jarInfo;
}
use of org.gradle.api.artifacts.ResolvedArtifact in project spring-boot by spring-projects.
the class ProjectLibraries method getLibraries.
private Set<GradleLibrary> getLibraries(String configurationName, LibraryScope scope) {
Configuration configuration = (configurationName == null ? null : this.project.getConfigurations().findByName(configurationName));
if (configuration == null) {
return null;
}
Set<GradleLibrary> libraries = new LinkedHashSet<>();
for (ResolvedArtifact artifact : configuration.getResolvedConfiguration().getResolvedArtifacts()) {
libraries.add(new ResolvedArtifactLibrary(artifact, scope));
}
libraries.addAll(getLibrariesForFileDependencies(configuration, scope));
return libraries;
}
Aggregations