Skip to content

Commit cda6792

Browse files
committed
fix(kits): resolve com.mparticle from mavenLocal only when flag set
Add optional exclusiveContent in KitPlugin so com.mparticle artifacts (android-kit-base, android-kit-plugin) resolve only from mavenLocal when -Pmparticle.kit.mparticleFromMavenLocalOnly=true or MPARTICLE_KIT_FROM_MAVEN_LOCAL_ONLY. Enable the flag in PR and daily workflows after publishMavenPublicationToMavenLocal so kit lint and tests use freshly published local artifacts, not Maven Central. Made-with: Cursor
1 parent a3d3efa commit cda6792

3 files changed

Lines changed: 45 additions & 12 deletions

File tree

.github/workflows/daily.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ jobs:
236236
- name: "Setup Android Kit Lint"
237237
run: ./gradlew publishMavenPublicationToMavenLocal
238238
- name: "Run Android Kit Lint"
239-
run: ./gradlew lint -c settings-kits.gradle
239+
run: ./gradlew lint -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true
240240
- name: "Run Isolated Kit Lint (urbanairship-kit)"
241241
run: ./gradlew -p kits/urbanairship/urbanairship-20 lint
242242
- name: "Archive Test Results"
@@ -274,7 +274,7 @@ jobs:
274274
- name: "Setup Android Kit Kotlin Lint"
275275
run: ./gradlew publishMavenPublicationToMavenLocal
276276
- name: "Run Android Kit Kotlin Lint"
277-
run: ./gradlew ktlintCheck -c settings-kits.gradle
277+
run: ./gradlew ktlintCheck -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true
278278
- name: "Run Isolated Kit Kotlin Lint (urbanairship-kit)"
279279
run: ./gradlew -p kits/urbanairship/urbanairship-20 ktlintCheck
280280
- name: "Archive Test Results"
@@ -315,7 +315,7 @@ jobs:
315315
- name: "Build Android Core"
316316
run: ./gradlew clean publishMavenPublicationToMavenLocal
317317
- name: "Test Kits"
318-
run: ./gradlew clean testRelease -c settings-kits.gradle
318+
run: ./gradlew clean testRelease -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true
319319
- name: "Test Isolated Kits (urbanairship-kit)"
320320
run: ./gradlew -p kits/urbanairship/urbanairship-20 clean testRelease
321321

.github/workflows/pull-request.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jobs:
111111
- name: "Setup Android Kit Lint"
112112
run: ./gradlew publishMavenPublicationToMavenLocal
113113
- name: "Run Android Kit Lint"
114-
run: ./gradlew -c settings-kits.gradle lint
114+
run: ./gradlew -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true lint
115115
- name: "Archive Lint Test Results"
116116
uses: actions/upload-artifact@v7
117117
if: always()
@@ -137,7 +137,7 @@ jobs:
137137
- name: "Setup Android Kit Kotlin Lint"
138138
run: ./gradlew publishMavenPublicationToMavenLocal
139139
- name: "Run Android Kit Kotlin Lint"
140-
run: ./gradlew -c settings-kits.gradle ktlintCheck
140+
run: ./gradlew -c settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true ktlintCheck
141141
- name: "Archive Kotlin Lint Test Results"
142142
uses: actions/upload-artifact@v7
143143
if: always()
@@ -169,7 +169,7 @@ jobs:
169169
- name: "Run Kit-Base Release Tests and Build"
170170
run: ./gradlew :android-kit-base:testRelease
171171
- name: "Run Kit Release Tests and Build"
172-
run: ./gradlew -p kits testRelease -c ../settings-kits.gradle
172+
run: ./gradlew -p kits testRelease -c ../settings-kits.gradle -Pmparticle.kit.mparticleFromMavenLocalOnly=true
173173
- name: "Run Isolated Kit Compatibility Tests (urbanairship)"
174174
run: ./gradlew -p kits/urbanairship/urbanairship-20 -PisRelease=true testRelease
175175

kit-plugin/src/main/groovy/com/mparticle/kits/KitPlugin.groovy

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ package com.mparticle.kits
33
import com.android.build.gradle.LibraryExtension
44
import org.gradle.api.Plugin
55
import org.gradle.api.Project
6+
import org.gradle.api.artifacts.dsl.RepositoryHandler
67

78
class KitPlugin implements Plugin<Project> {
89
void apply(Project target) {
910

1011
//formerly in kit-common.gradle
1112
target.apply(plugin: 'com.android.library')
1213
target.group = 'com.mparticle'
13-
target.buildscript.repositories.add(target.repositories.mavenLocal())
14-
target.buildscript.repositories.add(target.repositories.google())
15-
target.buildscript.repositories.add(target.repositories.mavenCentral())
16-
target.repositories.add(target.repositories.mavenLocal())
17-
target.repositories.add(target.repositories.google())
18-
target.repositories.add(target.repositories.mavenCentral())
14+
boolean mparticleFromMavenLocalOnly = resolveMparticleFromMavenLocalOnly(target)
15+
configureRepositories(target.buildscript.repositories, mparticleFromMavenLocalOnly)
16+
configureRepositories(target.repositories, mparticleFromMavenLocalOnly)
1917
target.configurations.create('deployerJars')
2018
def kitBaseVersion = target.findProperty('VERSION') ?: '+'
2119
target.dependencies.add('api', 'com.mparticle:android-kit-base:' + kitBaseVersion)
@@ -57,5 +55,40 @@ class KitPlugin implements Plugin<Project> {
5755
// no-op: publish plugin unavailable outside monorepo
5856
}
5957
}
58+
59+
/**
60+
* When true, {@code com.mparticle} artifacts (e.g. android-kit-base, android-kit-plugin) resolve
61+
* only from {@code mavenLocal()}; Maven Central / Google are not queried for that group.
62+
* Use after {@code publishMavenPublicationToMavenLocal} so CI and monorepo kit builds use the
63+
* freshly published local artifacts. Enable with {@code -Pmparticle.kit.mparticleFromMavenLocalOnly=true}
64+
* or env {@code MPARTICLE_KIT_FROM_MAVEN_LOCAL_ONLY=true}.
65+
*/
66+
private static boolean resolveMparticleFromMavenLocalOnly(Project target) {
67+
String prop = target.findProperty('mparticle.kit.mparticleFromMavenLocalOnly')?.toString()
68+
if (prop != null && Boolean.parseBoolean(prop)) {
69+
return true
70+
}
71+
String env = System.getenv('MPARTICLE_KIT_FROM_MAVEN_LOCAL_ONLY')
72+
return env != null && 'true'.equalsIgnoreCase(env)
73+
}
74+
75+
private static void configureRepositories(RepositoryHandler repositories, boolean mparticleFromMavenLocalOnly) {
76+
if (mparticleFromMavenLocalOnly) {
77+
repositories.exclusiveContent {
78+
forRepository {
79+
mavenLocal()
80+
}
81+
filter {
82+
includeGroup 'com.mparticle'
83+
}
84+
}
85+
repositories.google()
86+
repositories.mavenCentral()
87+
} else {
88+
repositories.mavenLocal()
89+
repositories.google()
90+
repositories.mavenCentral()
91+
}
92+
}
6093
}
6194

0 commit comments

Comments
 (0)