Bernhard Posselt
07/08/2026, 9:38 AMid("build-logic.my-conventions")
throws * Exception is:
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'build-logic.my-conventions'] was not found in any of the following sources:Bernhard Posselt
07/08/2026, 10:45 AMBrice Dutheil
07/08/2026, 2:15 PMAbstractCopyTask, disable output caching if you call some methods, fileMatching for example. I would think it has to do with the action serializibility.
github.com/gradle/gradle/commit/510d032ec36b…#…Bernhard Posselt
07/09/2026, 7:27 AMBernhard Posselt
07/09/2026, 11:30 AMEug
07/09/2026, 11:44 AM-q for your CI jobs already? I see huge but it looks like I'm not interested in. I have other tools to monitor times and cacheability. If something fails - it is still printed in log.Bernhard Posselt
07/09/2026, 12:30 PMtesting {
suites {
val test = named<JvmTestSuite>("test") {
useJUnitJupiter()
}
register<JvmTestSuite>("integration") {
dependencies {
implementation(project())
}
targets {
all {
testTask.configure {
useJUnitPlatform {
includeTags("integration")
}
shouldRunAfter(test)
}
}
}
}
}
}
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
@Tag("integration")
class ProductControllerTest {
@Test
fun name() {
assertEquals(1, 21)
}
}
there are also no examples on how to configure junit.
./gradlew test executes the failing test, ./gradlew integration doesn'tVlastimil Brecka
07/10/2026, 5:21 PMVlastimil Brecka
07/11/2026, 11:15 AMcheckDebug lifecycle task
In root build.gradle I define
def checkDebug = tasks.register("checkDebug") {
group = "verification"
}
subprojects { subproject ->
subproject.pluginManager.withPlugin("com.android.library") {
tasks.named("checkDebug") {
dependsOn("${subproject.path}:lintDebug")
dependsOn("${subproject.path}:testDebugUnitTest")
}
}
}
How would I push this into convention plugin?
Convention plugin is applied to each project, but there is no central place, so where do I register checkDebug once? Or is that not the way?
If I register it in every project, it will be availabel to the CLI, but I wont be able to depend on it, so I cannot have my buildAll etc, which kills further composing, which is dumb
What the idiomatic way of doing this with convention plugins?Vlastimil Brecka
07/11/2026, 2:49 PM./gradlew check :appA:assemble
but as a explicit buildAppA task?
I really hate pushing complexity/impl details into cli / ci configs. It does not scale. Its what tasks are forme1136
07/12/2026, 2:58 AMapi sourceSet in project-a, and then another api sourceSet in project-b, and i need to have project-b's api sourceSet depend on/pull in project-a's api sourceSetVlastimil Brecka
07/12/2026, 10:11 PM/gradlew :appA:decryptSecretsData -Pkey=$APPA_SECRETS_KEY
./gradlew :appB:decryptSecretsData -Pkey=$APPB_SECRETS_KEY
currently on CI I need to decrypt secrets per app (its a convention plugin applied to each app), and I'm doing it this way, and it works
however I'd like to have it be a single invocation
./gradlew :appA:decryptSecretsData -Pkey=$APPA_SECRETS_KEY :appB:decryptSecretsData -Pkey=$APPB_SECRETS_KEY
and this obviously doesnt work as the second -Pkey overwrites the first bla bla
can I somehow scope the -Pkey to a task?Miguel Oliveira
07/13/2026, 4:23 PMsettings.gradle.ktsLaura Kassovic
07/13/2026, 6:46 PMBernhard Posselt
07/15/2026, 10:14 AMBernhard Posselt
07/16/2026, 8:00 AMIT Admin
07/16/2026, 4:57 PMtony
07/16/2026, 5:14 PMTest task named "testFoo". For Reasons, I want to register a lifecycle task (not a Test task), named simply "test", which will have a dependsOn relationship with the original "testFoo". Is there any way to propagate command-line options to the underlying "real" task? E.g., a test filter --tests="*.foo.*"?Vlastimil Brecka
07/18/2026, 10:29 AMsubprojects block)hackm1160
07/18/2026, 11:49 AMA failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction> 16 issues were found when checking AAR metadata: 1. Dependency ':firebase_core' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 2. Dependency 'androidx.activityactivity1.8.1' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 3. Dependency 'androidx.lifecyclelifecycle livedata core ktx2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 4. Dependency 'androidx.lifecyclelifecycle livedata2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 5. Dependency 'androidx.lifecyclelifecycle viewmodel2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 6. Dependency 'androidx.lifecyclelifecycle livedata core2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 7. Dependency 'androidx.lifecyclelifecycle viewmodel savedstate2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 8. Dependency 'androidx.windowwindow java1.2.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 9. Dependency 'androidx.window🪟1.2.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 10. Dependency 'androidx.fragmentfragment1.7.1' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 11. Dependency 'androidx.corecore ktx1.13.1' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 12. Dependency 'androidx.corecore1.13.1' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 13. Dependency 'androidx.lifecyclelifecycle runtime2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 14. Dependency 'androidx.lifecyclelifecycle process2.7.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 15. Dependency 'androidx.exifinterfaceexifinterface1.4.1' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 16. Dependency 'androidx.annotationannotation experimental1.4.0' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :firebase_auth is currently compiled against android-33. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 36. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). * Try:
Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to generate a Build Scan (Powered by Develocity).
Get more help at help.gradle.org.i need help
hackm1160
07/18/2026, 11:52 AMColton Idle
07/20/2026, 1:56 PMEug
07/20/2026, 2:08 PMVlastimil Brecka
07/22/2026, 9:38 PM./gradlew :app:decryptSecrets --key=...
./gradlew :app:assembleRelease
Currently I have a task which decrypts secrets, and then assemble task has a provider which reads the properties (once decrypted) and uses them to sign release build (android)
def signingProperties = providers.fileContents(layout.projectDirectory.file("signing.properties")).asText
.map {
def properties = new Properties()
properties.load(new StringReader(it))
properties
}
android {
signingConfigs {
release {
def props = signingProperties.getOrNull()
if (props != null) {
keyAlias props["keyAlias"]
keyPassword props["keyPassword"]
...
}
}
}
}
It works.
Now, for more performance I was hoping to turn this into a single gradlew invocation = ./gradlew :app:decryptSecrets --key=... :app:assembleRelease
but im running into this kinda obvious issue of def props = signingProperties.getOrNull() getting evaluated at config time, and obviously the signing properties are not decrypted yet, so they dont exist, they become available only after decryptSecrets finishes
So is this even possible? To have the properties wired somehow in only at execution time so I can run the two in one invocation?
Or, is this a bad ideaScott Palmer
07/28/2026, 9:24 PMsettings.gradle file like this:
rootProject.name = 'my-service'
include ':public-api'
project(':public-api').name = 'my-service-public-api'
but then I decided to do things differently and changed that to simply:
rootProject.name = 'my-service'
include ':public-api'
but the build cache was confused. The public-api sub-project is generating Java code from Smithy specifications. It seems that the spotless code formatting plugin was now stuck looking at the old path for the generated code because of the build cache. Clean builds didn't help, I had to manually delete ~/.gradle/caches/build-cache-1 .
Is this a Gradle problem or a spotless plugin problem? (or a me problem? 🙁 )tehgeek
07/30/2026, 11:14 AMtony
07/30/2026, 5:44 PM@Option to a task? My use-case is in an Android project. It has tasks like testDebugUnitTest and testReleaseUnitTest, as well as a lifecycle task test that depends on each of those two variant-specific Test tasks.
I would love to add a --tests option to this preexisting (from another plugin, I do not control it) test lifecycle task.
I've tried this, but it doesn't work:
project.tasks.named { it == "test" }.configureEach {
inputs
.property("tests", "") // passing no value as a test
.optional(true)
}
I still get > Unknown command-line option '--tests'.Simon Marquis
08/04/2026, 3:57 PMbuildCacheKey=b4c52b0ffac21f5823d8cb885f76413b
buildInvocationId=bueeaav7o5fazlizc4e6fajtwa
We are currently observing build entries being overwritten with empty content (only the METADATA file and 3 empty directories):
cache-entry-b4c52b0ffac21f5823d8cb885f76413b
├── METADATA
├── tree-classpathSnapshotProperties.classpathSnapshotDir
├── tree-destinationDirectory
└── tree-taskBuildCacheableOutputDirectory%24kotlin_gradle_plugin_common
4 directories, 1 file
(the %24 url-encoded name of the last directly looks suspicious as well)Irfan Abdi
08/05/2026, 12:50 PMJason Pearson
08/09/2026, 3:20 AM