summaryrefslogtreecommitdiff
path: root/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
diff options
context:
space:
mode:
Diffstat (limited to 'build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt')
-rw-r--r--build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt112
1 files changed, 5 insertions, 107 deletions
diff --git a/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt b/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
index 91f37912a7..3148b11377 100644
--- a/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
+++ b/build-system/gradle-core/src/main/java/com/android/build/api/component/impl/ComponentImpl.kt
@@ -45,34 +45,21 @@ import com.android.build.gradle.internal.core.ProductFlavor
import com.android.build.gradle.internal.core.VariantSources
import com.android.build.gradle.internal.core.dsl.ComponentDslInfo
import com.android.build.gradle.internal.core.dsl.PublishableComponentDslInfo
-import com.android.build.gradle.internal.dependency.AndroidAttributes
import com.android.build.gradle.internal.dependency.VariantDependencies
import com.android.build.gradle.internal.dependency.getProvidedClasspath
import com.android.build.gradle.internal.publishing.AndroidArtifacts
import com.android.build.gradle.internal.publishing.AndroidArtifacts.ArtifactScope
import com.android.build.gradle.internal.publishing.AndroidArtifacts.ConsumedConfigType
-import com.android.build.gradle.internal.publishing.AndroidArtifacts.PublishedConfigType
-import com.android.build.gradle.internal.publishing.PublishedConfigSpec
-import com.android.build.gradle.internal.publishing.PublishingSpecs.Companion.getVariantPublishingSpec
-import com.android.build.gradle.internal.scope.BuildArtifactSpec.Companion.get
-import com.android.build.gradle.internal.scope.BuildArtifactSpec.Companion.has
import com.android.build.gradle.internal.scope.BuildFeatureValues
import com.android.build.gradle.internal.scope.MutableTaskContainer
-import com.android.build.gradle.internal.scope.publishArtifactToConfiguration
-import com.android.build.gradle.internal.scope.publishArtifactToDefaultVariant
import com.android.build.gradle.internal.services.TaskCreationServices
import com.android.build.gradle.internal.services.VariantServices
import com.android.build.gradle.internal.tasks.factory.GlobalTaskCreationConfig
-import com.android.build.gradle.internal.testFixtures.testFixturesClassifier
import com.android.build.gradle.internal.variant.BaseVariantData
import com.android.build.gradle.internal.variant.VariantPathHelper
import com.android.builder.core.ComponentType
import com.android.utils.appendCapitalized
-import com.google.common.base.Preconditions
-import org.gradle.api.attributes.DocsType
-import org.gradle.api.attributes.LibraryElements
import org.gradle.api.file.FileCollection
-import org.gradle.api.file.FileSystemLocation
import org.gradle.api.provider.Provider
import java.io.File
import java.util.Locale
@@ -163,7 +150,7 @@ abstract class ComponentImpl<DslInfoT: ComponentDslInfo>(
override val runtimeConfiguration = variantDependencies.runtimeClasspath
override val annotationProcessorConfiguration =
- variantDependencies.annotationProcessorConfiguration
+ variantDependencies.annotationProcessorConfiguration!!
// ---------------------------------------------------------------------------------------------
// INTERNAL API
@@ -222,47 +209,10 @@ abstract class ComponentImpl<DslInfoT: ComponentDslInfo>(
/** Publish intermediate artifacts in the BuildArtifactsHolder based on PublishingSpecs. */
override fun publishBuildArtifacts() {
- for (outputSpec in getVariantPublishingSpec(componentType).outputs) {
- val buildArtifactType = outputSpec.outputType
- // Gradle only support publishing single file. Therefore, unless Gradle starts
- // supporting publishing multiple files, PublishingSpecs should not contain any
- // OutputSpec with an appendable ArtifactType.
- if (has(buildArtifactType) && get(buildArtifactType).appendable) {
- throw RuntimeException(
- "Appendable ArtifactType '${buildArtifactType.name()}' cannot be published."
- )
- }
- val artifactProvider = artifacts.get(buildArtifactType)
- val artifactContainer = artifacts.getArtifactContainer(buildArtifactType)
- if (!artifactContainer.needInitialProducer().get()) {
- val isPublicationConfigs =
- outputSpec.publishedConfigTypes.any { it.isPublicationConfig }
-
- if (isPublicationConfigs) {
- val components = (dslInfo as PublishableComponentDslInfo).publishInfo.components
- for(component in components) {
- publishIntermediateArtifact(
- artifactProvider,
- outputSpec.artifactType,
- outputSpec.publishedConfigTypes.map {
- PublishedConfigSpec(it, component) }.toSet(),
- outputSpec.libraryElements?.let {
- internalServices.named(LibraryElements::class.java, it)
- }
- )
- }
- } else {
- publishIntermediateArtifact(
- artifactProvider,
- outputSpec.artifactType,
- outputSpec.publishedConfigTypes.map { PublishedConfigSpec(it) }.toSet(),
- outputSpec.libraryElements?.let {
- internalServices.named(LibraryElements::class.java, it)
- }
- )
- }
- }
- }
+ com.android.build.gradle.internal.scope.publishBuildArtifacts(
+ this,
+ (dslInfo as? PublishableComponentDslInfo)?.publishInfo
+ )
}
override val modelV1LegacySupport = ModelV1LegacySupportImpl(dslInfo, variantSources)
@@ -353,56 +303,4 @@ abstract class ComponentImpl<DslInfoT: ComponentDslInfo>(
internalServices
)
}
-
- /**
- * Publish an intermediate artifact.
- *
- * @param artifact Provider of File or FileSystemLocation to be published.
- * @param artifactType the artifact type.
- * @param configSpecs the PublishedConfigSpec.
- * @param libraryElements the artifact's library elements
- */
- private fun publishIntermediateArtifact(
- artifact: Provider<out FileSystemLocation>,
- artifactType: AndroidArtifacts.ArtifactType,
- configSpecs: Set<PublishedConfigSpec>,
- libraryElements: LibraryElements?
- ) {
- Preconditions.checkState(configSpecs.isNotEmpty())
- for (configSpec in configSpecs) {
- val config = variantDependencies.getElements(configSpec)
- val configType = configSpec.configType
- if (config != null) {
- if (configType.isPublicationConfig) {
- var classifier: String? = null
- val isSourcePublication = configType == PublishedConfigType.SOURCE_PUBLICATION
- val isJavaDocPublication =
- configType == PublishedConfigType.JAVA_DOC_PUBLICATION
- if (configSpec.isClassifierRequired) {
- classifier = if (isSourcePublication) {
- componentIdentity.name + "-" + DocsType.SOURCES
- } else if (isJavaDocPublication) {
- componentIdentity.name + "-" + DocsType.JAVADOC
- } else {
- componentIdentity.name
- }
- } else if (componentType.isTestFixturesComponent) {
- classifier = testFixturesClassifier
- } else if (isSourcePublication) {
- classifier = DocsType.SOURCES
- } else if (isJavaDocPublication) {
- classifier = DocsType.JAVADOC
- }
- publishArtifactToDefaultVariant(config, artifact, artifactType, classifier)
- } else {
- publishArtifactToConfiguration(
- config,
- artifact,
- artifactType,
- AndroidAttributes(null, libraryElements)
- )
- }
- }
- }
- }
}