Skip to content

Commit

Permalink
fixup! Add android library subproject dependencies to the report
Browse files Browse the repository at this point in the history
  • Loading branch information
mkubiczek committed Dec 30, 2020
1 parent 92bc45a commit ba5c774
Showing 1 changed file with 38 additions and 12 deletions.
50 changes: 38 additions & 12 deletions src/main/kotlin/com/jaredsburrows/license/LicenseReportTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import java.util.UUID
import org.gradle.api.DefaultTask
import org.gradle.api.Task
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ResolvedArtifact
import org.gradle.api.artifacts.ResolvedDependency
import org.gradle.api.logging.LogLevel
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Internal
Expand Down Expand Up @@ -102,21 +104,45 @@ open class LicenseReportTask : DefaultTask() { // tasks can't be final
}

// Iterate through all the configurations's dependencies
configurationSet.forEach { set ->
if (set.isCanBeResolved) {
set.resolvedConfiguration.lenientConfiguration.allModuleDependencies.forEach {
if (it.configuration == "runtime") {
it.allModuleArtifacts.forEach { artifact ->
val id = artifact.moduleVersion.id
val gav = "${id.group}:${id.name}:${id.version}@pom"
configurations.getByName(pomConfiguration).dependencies.add(
project.dependencies.add(pomConfiguration, gav)
)
}
}
configurationSet.forEach { configuration ->
if (configuration.isCanBeResolved) {
val allDeps = configuration.resolvedConfiguration.lenientConfiguration.allModuleDependencies
getResolvedArtifactsFromResolvedDependencies(allDeps).forEach { artifact ->
val id = artifact.moduleVersion.id
val gav = "${id.group}:${id.name}:${id.version}@pom"
configurations.getByName(pomConfiguration).dependencies.add(
project.dependencies.add(pomConfiguration, gav)
)
}
}
}
}

private fun getResolvedArtifactsFromResolvedDependencies(
resolvedDependencies: Set<ResolvedDependency>
): Set<ResolvedArtifact> {

val resolvedArtifacts = HashSet<ResolvedArtifact>()
for (resolvedDependency in resolvedDependencies) {
try {
if (resolvedDependency.moduleVersion == "unspecified") {
/**
* Attempting to getAllModuleArtifacts on a local library project will result
* in AmbiguousVariantSelectionException as there are not enough criteria
* to match a specific variant of the library project. Instead we skip the
* the library project itself and enumerate its dependencies.
*/
resolvedArtifacts.addAll(
getResolvedArtifactsFromResolvedDependencies(resolvedDependency.children)
)
} else {
resolvedArtifacts.addAll(resolvedDependency.allModuleArtifacts)
}
} catch (exception: Exception) {
logger.warn("Failed to process $resolvedDependency.name", exception)
}
}
return resolvedArtifacts
}

/** Get POM information from the dependency artifacts. */
Expand Down

0 comments on commit ba5c774

Please sign in to comment.