Skip to content

Commit 59af48c

Browse files
authored
Fix dependency type resolution. (#489)
1 parent addbcad commit 59af48c

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.java

+15
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import org.gradle.api.GradleException;
2525
import org.gradle.api.Project;
2626
import org.gradle.api.UnknownDomainObjectException;
27+
import org.gradle.api.internal.provider.DefaultProvider;
28+
import org.gradle.api.provider.Property;
2729
import org.gradle.api.publish.maven.MavenPom;
2830

2931
public class FirebaseLibraryExtension {
@@ -39,6 +41,9 @@ public class FirebaseLibraryExtension {
3941
/** Firebase Test Lab configuration/ */
4042
public final FirebaseTestLabExtension testLab;
4143

44+
public Property<String> groupId;
45+
public Property<String> artifactId;
46+
4247
private Action<MavenPom> customizePomAction =
4348
pom -> {
4449
pom.licenses(
@@ -60,6 +65,16 @@ public class FirebaseLibraryExtension {
6065
public FirebaseLibraryExtension(Project project) {
6166
this.project = project;
6267
this.testLab = new FirebaseTestLabExtension(project.getObjects());
68+
this.artifactId = project.getObjects().property(String.class);
69+
this.groupId = project.getObjects().property(String.class);
70+
71+
if ("ktx".equals(project.getName()) && project.getParent() != null) {
72+
artifactId.set(new DefaultProvider<>(() -> project.getParent().getName() + "-ktx"));
73+
groupId.set(new DefaultProvider<>(() -> project.getParent().getGroup().toString()));
74+
} else {
75+
artifactId.set(new DefaultProvider<>(project::getName));
76+
groupId.set(new DefaultProvider<>(() -> project.getGroup().toString()));
77+
}
6378
}
6479

6580
/** Configure Firebase Test Lab. */

buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/Publisher.groovy

+13-6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.gradle.plugins.publish
1616

17+
import com.google.firebase.gradle.plugins.FirebaseLibraryExtension
1718
import org.gradle.api.GradleException
1819
import org.gradle.api.Project
1920
import org.gradle.api.artifacts.Configuration
@@ -28,7 +29,7 @@ class Publisher {
2829
RELEASE,
2930
SNAPSHOT
3031
}
31-
private final Mode mode;
32+
private final Mode mode
3233
private final Set<Project> projectsToPublish
3334

3435
Publisher(Mode mode, Set<Project> projectsToPublish) {
@@ -93,27 +94,33 @@ class Publisher {
9394
dummyDependencyConfiguration.dependencies.addAll(nonProjectDependencies)
9495
try {
9596
return project.configurations.releaseRuntimeClasspath.getAllDependencies().collectEntries {
96-
[("$it.group:$it.name" as String): getType(dummyDependencyConfiguration, it)]
97+
getType(dummyDependencyConfiguration, it)
9798
}
9899
} finally {
99100
project.configurations.remove(dummyDependencyConfiguration)
100101
}
101102

102103
}
103104

104-
private static String getType(Configuration config, Dependency d) {
105+
private static def getType(Configuration config, Dependency d) {
105106
if (d instanceof ProjectDependency) {
106107
// we currently only support aar libraries to be produced in this repository
107-
return 'aar'
108+
def library = getFirebaseLibrary(d.dependencyProject)
109+
return [("${library.groupId.get()}:${library.artifactId.get()}" as String): 'aar']
108110
}
109111
String path = config.find {
110112
it.absolutePath.matches(".*\\Q$d.group/$d.name/$d.version/\\E[a-zA-Z0-9]+/\\Q$d.name-$d.version.\\E[aj]ar")
111113
}?.absolutePath
114+
112115
if (path && path.endsWith (".aar")) {
113-
return "aar"
116+
return [("$d.group:$d.name" as String): 'aar']
114117
} else {
115-
return "jar"
118+
return [("$d.group:$d.name" as String): 'jar']
116119
}
117120
}
118121

122+
private static FirebaseLibraryExtension getFirebaseLibrary(Project project) {
123+
return project.extensions.getByType(FirebaseLibraryExtension.class);
124+
}
125+
119126
}

buildSrc/src/main/groovy/com/google/firebase/gradle/plugins/publish/PublishingPlugin.groovy

+3-6
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,9 @@ class PublishingPlugin implements Plugin<Project> {
108108
publications {
109109
mavenAar(MavenPublication) {
110110
from sub.components.android
111-
// TODO(vkryachko): move it to a more appropriate place once the
112-
// FirebaseLibraryPlugin migration is complete
113-
if (sub.name == 'ktx') {
114-
artifactId = "$sub.parent.name-ktx"
115-
groupId = sub.parent.group
116-
}
111+
112+
artifactId = firebaseLibrary.artifactId.get()
113+
groupId = firebaseLibrary.groupId.get()
117114
if (firebaseLibrary.publishSources) {
118115
artifact sub.tasks.create("sourcesJar", Jar) {
119116
from sub.android.sourceSets.main.java.srcDirs

0 commit comments

Comments
 (0)