Life is too short to google for dependencies and versions

Overview

What is refreshVersions?

refreshVersions helps Gradle users with the tedious manual work usually involved in adding and updating dependencies and their versions.

Documentation

See documentation at https://jmfayard.github.io/refreshVersions

Setup

// settings.gradle(.kts)
plugins {
    // See https://jmfayard.github.io/refreshVersions
    id("de.fayard.refreshVersions") version "0.40.2"
}

refreshVersions { // Optional: configure the plugin
    // ...
}

Read the friendly documentation

Usage

Migrate project:

./gradlew refreshVersionsMigrate

Find available updates in versions.properties:

./gradlew refreshVersions

Cleanup versions availability comments:

./gradlew refreshVersionsCleanup

Comments
  • Add support for Versions Catalogs `gradle/libs.versions.toml`

    Add support for Versions Catalogs `gradle/libs.versions.toml`

    Hello & bonjour,

    What?

    Resolves #333

    Add support for Versions Catalogs gradle/libs.versions.toml in all our tasks (refreshVersions, refreshVersionsMigrate, refreshVersionsCleanup, refreshVersionsCatalog)

    Why?

    First class support for Gradle versions catalogs, removing fear of plugin lock-in for our users.

    Testing?

    You can test it in your own project, because I published a snapshot version on Sonatype

    Setup refreshVersions "0.41.0-SNAPSHOT" as in https://jmfayard.github.io/refreshVersions/setup/#if-you-want-to-use-a-snapshot-version

    Then:

    # Versions Catalog are stable in Gradle 7.4
    $ ./gradlew wrapper --gradle-version 7.4
    
    # Generate the versions catalog
    $ ./gradlew -refresh-dependencies refreshVersionsCatalog --versions --all
            modified:   versions.properties
            modified:   gradle/libs.versions.toml
    
    # Migrate your build.gradle(.kts)
    $ ./gradlew refreshVersionsMigrate --toml
            modified:   /Users/jmfayard/tignum/backend-tignum-x/build.gradle.kts
    
    # Show dependency updates in gradle/libs.versions.toml
    $ ./gradlew refreshVersions
            modified:   versions.properties
            modified:   gradle/libs.versions.toml
    

    How?

    • ./gradlew refreshVersionsCatalog generate gradle/libs.versions.toml
      • [x] only for Gradle >= 7.4
      • [x] with placeholder version "_"
      • [x] with hardcoded version when --versions option is used
      • [x] only for dependencies without a built-in dependency notation
      • [x] except if option --all is used
      • [x] adds plugins in the [plugins] section
      • [x] should be incremental: don't overwrite an existing entry
      • [x] should support refreshVersions dependency rules, create a versions entry and use version.ref for the dependency
      • [x] the versions section should be on top
      • [x] should support configuration cache https://github.com/jmfayard/refreshVersions/pull/509#issuecomment-1051381827
    • ./gradlew refreshVersionsMigrate
      • [x] should support dependencies from gradle/libs.versions.toml
      • [x] option --toml should migrate to dependencies from libs.versions.toml before built in dependencies
      • [x] don't migrate build.gradle files inside a resources or build directory
    • ./gradlew refreshVersions
      • [x] should ignore entries from the versions catalog using placeholder version "_"
      • [x] should update entries with a hardcoded version
      • [x] should update entries using versions.ref = "xxx"
      • [x] should be idempotent
      • [x] add unit tests
      • [x] should not warn of hardcoded dependency if it comes from gradle/libs.versions.toml
      • [x] supports custom `projet.buildFileName=xxx", see https://github.com/jmfayard/refreshVersions/pull/509#issuecomment-1056935799
    • [x] ./gradlew refreshVersionsCleanup should remove comments in gradle/libs.versions.toml
    • [x] Update sample-kotlin
    • [ ] Documentation website should be updated
    • [x] Publish a version "0.41.0-SNAPSHOT"
    • [x] Ask for feedback on the issue and on Slack
    • [ ] Write blog post about it
    • [ ] @LouisCad to review it when it's not draft anymore
    needs-review core feature size/XXL 
    opened by jmfayard 50
  • Introduce VersionsPropertiesModel

    Introduce VersionsPropertiesModel

    Once ready, will fix #256

    Will also allow to put custom comments, and metdata comments, paving the way to complete the checklist in #134.

    Lastly, it will hold the version that generated the file, useful for auto-migration.

    opened by LouisCAD 33
  • Suggest dependencies to add

    Suggest dependencies to add

    Want to contribute new libraries?

    Propose it here.

    We have homework on our side, we wants to make it easier to contribute a new group:

    Proposal for simplifying adding a dependency group https://github.com/jmfayard/refreshVersions/pull/262

    • [ ] Add Kodein https://github.com/jmfayard/refreshVersions/pull/253/files
    • [x] Add Http4k https://github.com/jmfayard/refreshVersions/pull/253/files
    • [ ] Add Koin https://github.com/jmfayard/refreshVersions/pull/253/files
    • [x] Add new kotest modules https://github.com/jmfayard/refreshVersions/pull/261
    • [x] Add Spring dependencies https://github.com/jmfayard/refreshVersions/issues/238#issuecomment-685304844
    • [ ] See comment from simonsickle https://github.com/jmfayard/refreshVersions/issues/238#issuecomment-709623195
    • [ ] Dependencies from the Kotlin libraries Playground https://github.com/jmfayard/refreshVersions/issues/238#issuecomment-709785409
    • [ ] Add GraphQL https://github.com/jmfayard/refreshVersions/issues/238#issuecomment-711157530
    • [x] Add Http4k https://github.com/jmfayard/refreshVersions/pull/253/files
    opened by jmfayard 29
  • Polishing versionsOnlyMode

    Polishing versionsOnlyMode

    Summary of the conversation:

    • [ ] Improve documentation in #77 once this is done
    • [x] Find Groovy and Kotlin code that make use of this code convention
    • [x] Add buildSrcVersions.alwaysUpdateVersions()
    • [x] Crash with named() on older versions
    • [x] Put properties last in the file
    • [x] Add option ./gradlew :refreshVersions --update
    • [x] Also display available updates for plugins, see #60
    • [x] Remove duplicates from output
    • [x] Use format version.bcpkix.jdk15on=1.0.0
    • [x] Use format version.org.square.retrofit=1.0.0 when dependencies can be grouped
    • [x] Use format version.com.example.group.name=1.0.0 for FQDN
    • [x] Display update with # \-- available=1.13
    • [x] Remove gradleCurrentVersion
    • [x] Task $ ./gradlew refreshVersions update "gradle.properties" #69
    • [x] No copy-paste should be needed for "gradle.properties"
    • [x] If gradle.properties, just create it
    • [x] Refactor the task to use multiple actions
    opened by jmfayard 25
  • Make guava dependency configurable (or non strict?)

    Make guava dependency configurable (or non strict?)

    I am using the jib plugin which has a dependency declared to guava

    'com.google.cloud.tools.jib:com.google.cloud.tools.jib.gradle.plugin:3.1.4' (runtime) --> 'gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:3.1.4' (runtime) --> 'com.google.guava:guava:30.1.1-jre'

    This clashes with the strict configuration of refreshVersions. Is there any way to make this configurable? Or override it somehow?

    opened by jschneider 19
  • Configuring plugins versions

    Configuring plugins versions

    To apply a plugin, we can use the plugins DSL https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block

    plugins {
      id 'com.github.jk1.dependency-license-report' version '1.9'
    }
    

    The problem is replacing the hard-coded version 1.9 with Versions.gradle_license_report does not work for Groovy files.

    Is there a workaround to be able to use buildSrcVersions for managing plugin dependencies as well as Library dependencies?

    This is already done for the special case of buildSrcVersions itself (https://github.com/jmfayard/buildSrcVersions/issues/47) , although that only works in .kts files.

    plugins {
    -  id("de.fayard.buildSrcVersions") version "0.4.2"
    + buildSrcVersions
    }
    
    opened by sigurdurrafn 19
  • Firebase Crashlytics Gradle Plugins become unresolved after migrating to `versions.properties`

    Firebase Crashlytics Gradle Plugins become unresolved after migrating to `versions.properties`

    🐛 Describe the bug

    Really not sure if this is firebase-crashlytics-gradle issue or refreshVersions, before adding the refreshVersions, we were able to use any gradle API from firebase-crashlytics-gradle.

    ⚠️ Current behavior

    Screen Shot 2021-08-12 at 6 49 14 PM Screen Shot 2021-08-12 at 6 49 27 PM Screen Shot 2021-08-12 at 6 50 05 PM Screen Shot 2021-08-12 at 6 51 02 PM

    ✅ Expected behavior

    The refreshVersions able to coexist with firebase-crashlytics-gradle

    💣 Steps to reproduce

    Not sure what/which information to provide here, but here's my config:

    // versions.properties
    version.firebase-crashlytics-gradle=2.7.1
    
    // app/build.gradle.kts
    plugins {
        // ... omitted
        id("com.google.firebase.crashlytics")
    }
    
    // buildSrc/settings.gradle.kts
    pluginManagement {
        plugins {
            id("de.fayard.refreshVersions") version "0.11.0"
        }
    }
    
    plugins {
        id("de.fayard.refreshVersions")
    }
    
    // settings.gradle.kts
    plugins {
        id("de.fayard.refreshVersions") version "0.11.0"
    }
    

    📱 Tech info

    opened by mochadwi 18
  • Unable to resolve kapt dependencies

    Unable to resolve kapt dependencies

    Describe the bug

    Execution failed for task ':refreshVersions'.

    Couldn't resolve version for ModuleId(group=net.ltgt.gradle.incap, name=incap-processor)

    To Reproduce

    1. Use dependencies { kapt("net.ltgt.gradle.incap:incap-processor:_") }
    2. Execute :refreshVersions task
    3. See error

    Additional context

    Gradle Version: 6.6.1 Kotlin Version: 1.4.10 RefreshVersions Version: 0.9.5-0.9.6

    problem 
    opened by chachako 18
  • Long term plan: focus on refreshVersions

    Long term plan: focus on refreshVersions

    The long-term plan for v1.0 is to focus on :refreshVersions instead of :buildSrcVersions

    refreshVersions

    Starting from release 0.8.0 the plugin is now called and contain only the task refreshVersions

    plugins {
      id("de.fayard.refreshVersions").version("0.8.x") // or newer
    }
    

    buildSrcVersions

    We are not quite ready yet to extract the useful parts of buildSrcVersions to another plugin, so if you need the features from buildSrcVersions, stay with this for now:

    plugins {
      id("de.fayard.buildSrcVersions").version("0.7.0")
    }
    

    Next step

    The file buildSrc/src/main/Libs.kt is still useful right now, but I am working on a better solution in collaboration with this project

    https://github.com/LouisCAD/Splitties

    Later plans

    • rename the project, making sure that the URLs still work
    • rename the extension name from buildSrcVersions { ... } to refreshVersions { ... }
    • have a minimialist plugin that focus on :refreshVersions
    • keep the plugin buildSrcVersions for my existing users who need their current features
    documentation 
    opened by jmfayard 16
  • Task 'migrateToRefreshVersionsDependenciesConstants' not found in root project 'xxx_Android'.

    Task 'migrateToRefreshVersionsDependenciesConstants' not found in root project 'xxx_Android'.

    Hello, I’m a newbie to Android, and I saw your articles and libraries while doing gradle optimization.

    When I follow the tutorial instructions to integrate, it always prompts the following error:

    ✘ heliquan@Mac  ~/CodePro/AndroidStudioPro/xxx_Android   master ●✚  ./gradlew migrateToRefreshVersionsDependenciesConstants --console=plain
    
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Task'migrateToRefreshVersionsDependenciesConstants' not found in root project'FingerAdvisor_Android'.
    
    * Try:
    Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    

    Sorry, I don’t know what caused this error.

    Explain my steps. First, my project contains multiple modules (app, helper, weight...):

    • Create a settings.gradle.kts file in the root directory and copy the following code:
    // settings.gradle.kts
    import de.fayard.refreshVersions.bootstrapRefreshVersionsForBuildSrc
    
    // Here you might have some pluginManagement block:
    pluginManagement {
        //...
    }
    
    buildscript {
        repositories {gradlePluginPortal()}
        dependencies.classpath("de.fayard.refreshVersions:refreshVersions:0.9.5")
    }
    
    bootstrapRefreshVersionsForBuildSrc()
    

    Then execute the following command in the Terminal of Android Studio:

    • ./gradlew migrateToRefreshVersionsDependenciesConstants --console=plain

    Finally came out this error exception.

    Hope to get your guidance~

    opened by HLQ-Struggle 13
  • java.lang.NumberFormatException: For input string:

    java.lang.NumberFormatException: For input string: "20090811081019"

    Checklist

    • [ ] I verified that the task ./gradlew :dependencyUpdates works correctly. If that's not the case, it's better to submit a bug-report to https://github.com/ben-manes/gradle-versions-plugin there is no task dependencyUpdates ?
    • [x] I tried to reproduce the bug within sample-groovy, sample-kotlin or sample-versionsOnlyMode
    • [x] I have run with $ ./gradlew --scan buildSrcVersions or $./gradlew --scan refreshVersions to provide a Build Scan URL

    Describe the bug

    scan: https://scans.gradle.com/s/bvm2k6uha4tpi

    when i add this dependency

    implementation(group = "org.scala-lang", name = "scala-library", version = "_")
    // same thing: implementation("org.scala-lang:scala-library:_")
    

    the gradle refresh (or refreshVersions task) crashes with this log

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    For input string: "20090811081019"
    
    * Try:
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    
    * Exception is:
    com.intellij.openapi.externalSystem.model.ExternalSystemException: For input string: "20090811081019"
    	at org.jetbrains.plugins.gradle.model.ProjectImportAction.addBuildModels(ProjectImportAction.java:272)
    	at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:130)
    	at org.jetbrains.plugins.gradle.model.ProjectImportAction.execute(ProjectImportAction.java:56)
    	at org.gradle.tooling.internal.consumer.connection.InternalBuildActionAdapter.execute(InternalBuildActionAdapter.java:79)
    	at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.runAction(ClientProvidedPhasedActionRunner.java:120)
    	at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.run(ClientProvidedPhasedActionRunner.java:110)
    	at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner$ActionRunningListener.buildFinished(ClientProvidedPhasedActionRunner.java:104)
    	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    	at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:382)
    	at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:364)
    	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    	at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:352)
    	at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:339)
    	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
    	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:231)
    	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:150)
    	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:325)
    	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:235)
    	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
    	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
    	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
    	at com.sun.proxy.$Proxy14.buildFinished(Unknown Source)
    	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:167)
    	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:113)
    	at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:86)
    	at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:78)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:189)
    	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
    	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:78)
    	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:57)
    	at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:60)
    	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
    	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
    	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
    	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
    	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
    	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
    	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
    	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
    	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
    	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
    	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
    	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
    	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
    	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
    	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
    	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
    	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
    	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
    	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
    	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
    	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
    	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
    	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
    	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
    	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:68)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:27)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
    	at org.gradle.util.Swapper.swap(Swapper.java:38)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
    	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    java.lang.NumberFormatException: For input string: "20090811081019"
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    	at java.lang.Integer.parseInt(Integer.java:583)
    	at java.lang.Integer.parseInt(Integer.java:615)
    	at de.fayard.versions.extensions.VersionExtensionsKt.toComparableList-F2_lFBY(VersionExtensions.kt:116)
    	at de.fayard.versions.extensions.VersionExtensionsKt.access$toComparableList-F2_lFBY(VersionExtensions.kt:1)
    	at de.fayard.versions.extensions.VersionExtensionsKt$createVersionComparator$1.compare-3RWntRo(VersionExtensions.kt:57)
    	at de.fayard.versions.extensions.VersionExtensionsKt$createVersionComparator$1.compare(VersionExtensions.kt:45)
    	at java.util.Collections$ReverseComparator2.compare(Collections.java:5232)
    	at java.util.TimSort.countRunAndMakeAscending(TimSort.java:356)
    	at java.util.TimSort.sort(TimSort.java:234)
    	at java.util.Arrays.sort(Arrays.java:1438)
    	at kotlin.collections.ArraysKt___ArraysJvmKt.sortWith(_ArraysJvm.kt:1864)
    	at kotlin.collections.CollectionsKt___CollectionsKt.sortedWith(_Collections.kt:949)
    	at de.fayard.versions.internal.LatestVersionsRetrievalKt$getDependencyVersionsCandidates$2.invokeSuspend(LatestVersionsRetrieval.kt:35)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    	at kotlinx.coroutines.UndispatchedCoroutine.afterResume(Builders.common.kt:207)
    	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:561)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:727)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:667)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:655)
    
    
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 8s
    

    To Reproduce

    Build scan URL: https://scans.gradle.com/s/xxxxxxxxxx

    buildscript to repoduce build.gradle.kts:

    plugins {
        id("scala")
        id("de.fayard.dependencies")
    }
    
    repositories {
        jcenter()
        mavenCentral()
    }
    
    dependencies {
        implementation(group = "org.scala-lang", name = "scala-library", version = "_")
    }
    

    Expected behavior

    no crash ?

    I thik the scala plugin adds some repositories (ivy?) and refreshVersions seems to not support those

    problem 
    opened by NikkyAI 13
  • How to add agp 7.x as dependency?

    How to add agp 7.x as dependency?

    When creating Android project with latest Android Studio 2021/2022, the root project build.gradle.kts file has plugins block like:

    
    plugins {
        //trick: for the same plugin versions in all sub-modules
        id("com.android.library").version("7.3.0").apply(false)
        id("com.android.application").version("7.3.0").apply(false)
    }
    

    How could I declare it with refreshVersions?

    opened by Piasy 0
  • [Issue-512] Dependency notations for BumpTech Glide

    [Issue-512] Dependency notations for BumpTech Glide

    Hello/bonjour, I've added dependency notations for Glide.

    What?

    Resolves #512

    Why?

    To resolve #512, so that the world can have at least one more nice thing 😄

    How?

    • Added a group for BumpTech and a subgroup for Glide, adding all of its modules (minus the tunnel one since that hasn't been maintained in a few years).
    • Added a version key rules file since the Compose and KTX modules don't (yet) follow the same versioning as the other modules.

    Testing?

    • Ran check task.
    • Published to local Maven and consumed in the sample projects.
    • Tested all dependencies in sample-android, sample-groovy and sample-kotlin.

    Note

    After running check I saw 2 lines appearing in the generated files related to the Compose runtime-tracing module. Not sure what that one is about and what to do about it.

    size/L 
    opened by ceNobiteElf 0
  • Throw exception / cancel build instead of adding failureComment

    Throw exception / cancel build instead of adding failureComment

    The current behavior if a repository is unreachable:

    • adding a comment into the version.properties:

    e.g.

    failed to check repo https://plugins.gradle.org/m2/ Cause: network or server issue (class javax.net.ssl.SSLHandshakeException PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed)

    But the build finishes successfully.

    I would prefer refreshVersions to throw an exception and fail the build.

    Reasoning: I have automated refreshVersions in the CI pipeline. And those comments could end up being merged into "main".

    opened by jschneider 2
  • Update Mockito kotlin package

    Update Mockito kotlin package

    Hello/bonjour,

    What?

    I update Testing.kt's package reference from old to new package name

    Why?

    The package com.nhaarman.mockitokotlin2:mockito-kotlin was moved to org.mockito.kotlin:mockito-kotlin

    How?

    Update group name from com.nhaarman.mockitokotlin2 to org.mockito.kotlin

    Testing?

    I run gradle check in /plugins folder.

    size/S 
    opened by ken-kentan 0
  • Comparison method violates its general contract!

    Comparison method violates its general contract!

    🐛 Describe the bug

    When i run, ./gradlew refreshVersions, it throws this exception:

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':refreshVersions'.
    > Comparison method violates its general contract!
    
    Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
            at kotlin.collections.ArraysKt___ArraysJvmKt.sort(_ArraysJvm.kt:2400)
            at kotlin.collections.CollectionsKt___CollectionsKt.sorted(_Collections.kt:1030)
            at de.fayard.refreshVersions.core.internal.GettingVersionCandidatesKt.sortWith(GettingVersionCandidates.kt:30)
            at de.fayard.refreshVersions.core.internal.GettingVersionCandidatesKt.getVersionCandidates(GettingVersionCandidates.kt:16)
            at de.fayard.refreshVersions.core.internal.GettingVersionCandidatesKt$getVersionCandidates$1.invokeSuspend(GettingVersionCandidates.kt)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
            at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
            at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:279)
            at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
            at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
            at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
            at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
            at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
            at de.fayard.refreshVersions.core.RefreshVersionsTask.taskActionRefreshVersions(RefreshVersionsTask.kt:74)
    

    I manage my dependencies using a TOML file at gradle/libs.versions.toml I'm using version 0.51.0

    ⚠️ Current behavior

    It does not work in my project.

    ✅ Expected behavior

    It should work without exceptions.

    💣 Steps to reproduce

    📱 Tech info

    Unfortunately, I can't provide a build scan due to privacy reasons from my company.

    opened by GianfrancoMS 1
Releases(v0.51.0)
  • v0.51.0(Oct 25, 2022)

    Version 0.51.0 (2022-10-25)

    Support Jetpack Compose BoM

    Yesterday, Google released a BoM for Jetpack Compose. Today we're introducing first-class support for it.

    To take advantage of it, you just need to add the dependency on platform(AndroidX.compose.bom). Just like Firebase.bom, make sure you add it before any dependent dependency:

    dependencies {
        implementation(platform(AndroidX.compose.bom)) // Add this FIRST
        implementation(AndroidX.compose.material3) // Related dependencies AFTER
        implementation(AndroidX.compose.material3.windowSizeClass) // Same as above
    }
    

    In case you need to use a pre-release version (alpha, beta, rc…), use the withVersionPlaceholder() function as such:

    dependencies {
        implementation(platform(AndroidX.compose.bom)) // Enables the BoM and depends on it
        implementation(AndroidX.compose.icons.extended) // Uses version defined in the BoM
        implementation(AndroidX.compose.material3.withVersionPlaceholder()) // Separate version in versions.properties
    }
    

    Fix StabilityLevel calculation for number-less pre-versions

    Since last changes in the Version class, versions like 1.7.20-RC and 1.7.20-Beta would be marked as stable instead of respectively ReleaseCandidate and Beta because the logic expected a number in all cases.

    The number is now optional for all pre-versions, except milestones.

    To prevent future recurrence of such regression, this commit also adds tests that assert the expected stability level of many known versions from various libraries.

    New dependency notations:

    Click to expand (11)
    • AndroidX.asyncLayoutInflater.appcompat
    • AndroidX.compose.bom
    • AndroidX.dataStore.core.okio
    • AndroidX.graphics.core
    • AndroidX.input.motionPrediction
    • AndroidX.paging.testing
    • AndroidX.test.espresso.device
    • AndroidX.tv.foundation
    • AndroidX.tv.material
    • Firebase.dynamicModuleSupport
    • Google.firebase.dynamicModuleSupport
    Source code(tar.gz)
    Source code(zip)
  • v0.50.2(Sep 24, 2022)

    Version 0.50.2 (2022-09-24)

    Minor change

    Disable the old refreshVersionsDependenciesMapping and migrateToRefreshVersionsDependenciesConstants Gradle tasks.

    Fixes

    • versionFor could not work as it should have if it was used in multiple modules with different values: the refreshVersions task would only display the updates of some of them, and mark the other ones as unused. This has been fixed.
    • Running the refreshVersionsCleanup task would log that the gradle/libs.versions.toml file was modified even if it wasn't, and didn't exist in the first place. This is now fixed.
    • Version ordering now recognizes random qualifiers instead of marking with an unknown stability level.

    New dependency notations:

    Click to expand (15)
    • AndroidX.media3.dataSource
    • ApolloGraphQL.adapters
    • ApolloGraphQL.api
    • ApolloGraphQL.ast
    • ApolloGraphQL.httpCache
    • ApolloGraphQL.idlingResource
    • ApolloGraphQL.mockserver
    • ApolloGraphQL.normalizedCacheSqlite
    • ApolloGraphQL.normalizedCache
    • ApolloGraphQL.runtime
    • ApolloGraphQL.testingSupport
    • Google.horologist.dataLayer
    • KotlinX.serialization.bom
    • KotlinX.serialization.json.okio
    • Spring.boot.web

    Credits

    Thanks to all the folks that contributed in this release!

    • Jacob Kwitkoski (@thederputy)
    • Florian Levis (@Gounlaf)
    • Seokjae Lee (@doljae)
    • solonovamax (@solonovamax)
    • Louis CAD (@LouisCAD)
    • Jean-Michel Fayard (@jmfayard)
    Source code(tar.gz)
    Source code(zip)
  • v0.50.1(Sep 12, 2022)

    Version 0.50.1 (2022-09-11)

    Fixes

    • Fix the "Extension of type 'VersionCatalogsExtension' does not exist." error.
    • Versions Catalog migration only worked properly if you ran it twice. This has now been fixed!
    Source code(tar.gz)
    Source code(zip)
  • v0.50.0(Sep 10, 2022)

    Version 0.50.0 (2022-09-09)

    Support for Versions Catalogs! 🎉

    Versions Catalogs are Gradle 7.4+ solution for storing dependencies and versions in a centralized file. Gradle will automatically recognize the gradle/libs.versions.toml file… and so will refreshVersions!

    It is similar in spirit to the versions.properties file, and we are happy to add support for it:

    • ./gradlew refreshVersions will now add available updates as comments inside the gradle/libs.versions.toml file.
    • ./gradlew refreshVersionsMigrate --mode=VersionCatalogAndVersionProperties will generate a versions catalog and migrate your build to use it if you don't have one already.

    Currently, we only support the default versions catalog. If you need support for multiple versions catalogs, add your 👍 on this issue.

    This is a big and new feature, so feel free to provide feedback in this thread, and report issues with the right info if there's no existing one here.

    Better support for versionFor, and Jetpack Compose!

    Before

    versionFor was helpful when you need to access a version located in the versions.properties file, but if there was no dependency using it, you'd never see any updates. For projects/modules using Jetpack Compose from Google, that meant you'd never see any updates for the compiler, and you'd need to look it up yourself. Also, the version entry would be marked as unused, or would be the wrong one if you shared it with other Compose artifacts since the compiler now has its own versioning track.

    Now

    Now, passing a dependency notation such as AndroidX.compose.compiler to versionFor is exactly the same as if you used the dependency somewhere in the project:

    You'll get all the updates, and if the version is not yet specified in the versions.properties file, as usual, refreshVersions will try to find the latest most stable version available, plus it will also add the available comments for any newer, less stable version. That makes it even easier to start a project with Jetpack Compose!

    With this in a build.gradle.kts file:

    android {
        composeOptions {
            kotlinCompilerExtensionVersion = versionFor(AndroidX.compose.compiler) // Kotlin DSL
            kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler) // Groovy DSL
        }
    }
    

    AndroidX.compose.compiler is equivalent to "androidx.compose.compiler:compiler:_".

    You'll get that in the versions.properties file if you were on version 1.3.0-rc01:

    version.androidx.compose.compiler=1.3.0-rc01
    ##                    # available=1.3.0-rc02
    ##                    # available=1.3.0
    

    New page for all the built-in dependency notations 📕

    To make it easy to start new projects, new modules, or using a common library, we spent a lot of time adding built-in dependency notations for Kotlin, kotlinx, AndroidX, and more.

    However, it wasn't so easy to know that they exist. That's why we made a dedicated page where you can find them all! Let us know how helpful it is to you!

    Fixes

    • rejectVersionIf { … } had an issue: its removal would not be taken into account until the Gradle daemon would be killed. This now behaves correctly.
    • We were ignoring repositories defined in pluginManagement { … }, which might have led to Gradle plugin updates being missed by refreshVersions. Now, we look up these repositories as well.

    New dependency notations:

    Click to expand (145)
    • AndroidX.appSearch.builtInTypes
    • AndroidX.compose.runtime.tracing
    • AndroidX.core.uwb
    • AndroidX.core.uwb.rxJava3
    • AndroidX.health.connect.client
    • AndroidX.javascriptEngine
    • AndroidX.lifecycle.runtime.compose
    • AndroidX.room.paging.guava
    • AndroidX.room.paging.rxJava2
    • AndroidX.room.paging.rxJava3
    • AndroidX.tracing.perfetto
    • CashApp.molecule.gradlePlugin
    • CashApp.molecule.runtime
    • CashApp.molecule.test
    • Google.accompanist.drawablePainter
    • Google.accompanist.flowLayout
    • Google.accompanist.navigationAnimation
    • Google.accompanist.navigationMaterial
    • Google.accompanist.permissions
    • Google.accompanist.placeholder
    • Google.accompanist.placeholder.material
    • Google.accompanist.webView
    • Google.ambient.crossDevice
    • Google.horologist.audio
    • Google.horologist.audio.ui
    • Google.horologist.composables
    • Google.horologist.compose.layout
    • Google.horologist.compose.tools
    • Google.horologist.media
    • Google.horologist.media.data
    • Google.horologist.media.ui
    • Google.horologist.media3.backend
    • Google.horologist.networkAwareness
    • Google.horologist.tiles
    • Square.okHttp3.mockWebServer3
    • Square.okHttp3.mockWebServer3.junit4
    • Square.okHttp3.mockWebServer3.junit5
    • Square.okHttp3.android
    • Square.okHttp3.brotli
    • Square.okHttp3.coroutines
    • Square.okHttp3.dnsOverHttps
    • Square.okHttp3.sse
    • Square.okHttp3.tls
    • Square.okHttp3.urlConnection
    • Arrow.core
    • Arrow.fx.coroutines
    • Arrow.fx.stm
    • Arrow.optics
    • Arrow.optics.kspPlugin
    • Arrow.optics.reflect
    • Arrow.stack
    • Arrow.analysis.gradlePlugin
    • Koin.navigation
    • Testing.kotest.extensions.property.arbs
    • Testing.kotest.extensions.property.datetime
    • Ktor.client.contentNegotiation
    • Ktor.client.contentNegotiationTests
    • Ktor.client.gson
    • Ktor.client.jackson
    • Ktor.client.java
    • Ktor.client.okHttp
    • Ktor.client.resources
    • Ktor.plugins.events
    • Ktor.plugins.http
    • Ktor.plugins.http.cio
    • Ktor.plugins.io
    • Ktor.plugins.network
    • Ktor.plugins.networkTls
    • Ktor.plugins.networkTlsCertificates
    • Ktor.plugins.resources
    • Ktor.plugins.serialization
    • Ktor.plugins.serialization.gson
    • Ktor.plugins.serialization.jackson
    • Ktor.plugins.serialization.kotlinx
    • Ktor.plugins.serialization.kotlinx.cbor
    • Ktor.plugins.serialization.kotlinx.json
    • Ktor.plugins.serialization.kotlinx.tests
    • Ktor.plugins.serialization.kotlinx.xml
    • Ktor.server.auth
    • Ktor.server.auth.jwt
    • Ktor.server.auth.ldap
    • Ktor.server.autoHeadResponse
    • Ktor.server.cachingHeaders
    • Ktor.server.callId
    • Ktor.server.callLogging
    • Ktor.server.cio
    • Ktor.server.compression
    • Ktor.server.conditionalHeaders
    • Ktor.server.contentNegotiation
    • Ktor.server.cors
    • Ktor.server.dataConversion
    • Ktor.server.defaultHeaders
    • Ktor.server.doubleReceive
    • Ktor.server.forwardedHeader
    • Ktor.server.freeMarker
    • Ktor.server.hostCommon
    • Ktor.server.hsts
    • Ktor.server.htmlBuilder
    • Ktor.server.httpRedirect
    • Ktor.server.httpRedirect
    • Ktor.server.jte
    • Ktor.server.locations
    • Ktor.server.methodOverride
    • Ktor.server.metrics
    • Ktor.server.metricsMicrometer
    • Ktor.server.mustache
    • Ktor.server.partialContent
    • Ktor.server.pebble
    • Ktor.server.resources
    • Ktor.server.sessions
    • Ktor.server.statusPages
    • Ktor.server.testSuites
    • Ktor.server.thymeleaf
    • Ktor.server.velocity
    • Ktor.server.webjars
    • Ktor.server.websockets
    • Ktor.server
    • Ktor.plugins.websocketSerialization
    • Ktor.plugins.websockets
    • Testing.assertj.core
    • Testing.assertj.db
    • Testing.assertj.guava
    • Testing.assertj.jodaTime
    • Testing.assertj.swing
    • Testing.hamcrest
    • Testing.hamcrest.core
    • Testing.hamcrest.library
    • JetBrains.exposed.core
    • JetBrains.exposed.dao
    • JetBrains.exposed.jdbc
    • KotlinX.dataframe
    • KotlinX.dataframe.arrow
    • KotlinX.dataframe.core
    • KotlinX.dataframe.excel
    • KotlinX.dataframe.dataframe
    • KotlinX.deeplearning.api
    • KotlinX.deeplearning.onnx
    • KotlinX.deeplearning.visualization
    • KotlinX.lincheck
    • KotlinX.lincheck.jvm
    • KotlinX.multik.api
    • KotlinX.multik.default
    • KotlinX.multik.jvm
    • KotlinX.multik.native
    • Spring.boms.springCloud

    Credits

    Thanks to all the folks that contributed in updating the built-in dependency notations!

    • Jacob Kwitkoski (@thederputy) for CashApp.molecule
    • Rémi Latapy (@rlatapy-luna) for Google.accompanist
    • Yuri Schimke (@rlatapy-luna) for Google.horologist and Square.okHttp3
    • Brady Aiello (@brady-aiello) for Ktor
    • Kamalesh (@imashnake0) for JetBrains.exposed, Testing.assertj, Testing.hamcrest
    • @doljae for Spring.boms.springCloud
    • Johan Reitan (@joharei) for KotlinX.multik, KotlinX.lincheck, KotlinX.deeplearning
    • Ryan Fonzi (@RFonzi) for Arrow

    And thanks to the GitHub sponsors of the maintainers @LouisCAD and @jmfayard who didn't count the hours spent on this project since 2018-2019!

    We hope you save a lot of time thanks to this project and can therefore leave work early, or pursue more valuable tasks and projects. 😉

    If you're not a sponsor yet, please consider becoming one, as a company, as an individual, or even both, it means a lot to us! Just click the heart button at the top of the GitHub repo webpage, follow the steps, and your heart. Thank you!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.2(May 31, 2022)

    Version 0.40.2 (2022-06-01)

    Fixes

    • Fix a memory leak that led the Gradle daemon to eventually suffer from a lot of GC overhead before running out of memory when a Gradle plugin had its version managed by refreshVersions. We've done extensive tests to ensure we fixed this for good, and the CI now checks for leaks in the Gradle daemon to prevent future recurrence. Note that if you were using Gradle configuration cache, you were likely to encounter this issue less often.
    • Fix the AndroidX.wear.tiles.material dependency notation that was pointing to wrong coordinates because of a typo. The test that was designed to catch this has been fixed to prevent future recurrence.

    Thanks to @yacine-ser for raising this memory leak issue along with a hint on the culprit, it was very helpful in reproducing and fixing the leak.

    New dependency notations:

    • AndroidX.camera.mlKitVision
    • AndroidX.compose.material3.windowSizeClass
    • AndroidX.compose.ui.text.googleFonts
    • AndroidX.core.performance
    • AndroidX.customView.poolingContainer
    • AndroidX.health.connectClient
    • AndroidX.metrics.performance
    • AndroidX.test.ext.junit.gTest
    • AndroidX.test.ext.junit.ktx (was previously AndroidX.test.ext.junitKtx)
    • AndroidX.wear.watchFace.complications.rendering
    • Google.android.material.composeThemeAdapter3
    Source code(tar.gz)
    Source code(zip)
  • v0.40.1(Feb 6, 2022)

    Version 0.40.1 (2022-02-06)

    Fixes

    • Improved support of Gradle configuration cache. In the previous release, if you ran the refreshVersions task twice in a row with configuration cache enabled, the second run would fail, even in warning mode. It's now fixed.
    • To make refreshVersions compatible with GCS (Google Cloud Storage) hosted maven repositories (which can be helpful for company/team internal libraries), we were using the official library from Google. Unfortunately, this led to dependency hell to some of our users because it then requires a specific version of Guava, which could be different from the one required by other plugins, and the one from refreshVersions would prevail. So, to resolve these problems, we replaced our implementation with one that reuses Gradle's built-in GcsClient, and we're very happy with that because it also has the benefit of reducing the total size of refreshVersions when we include its dependencies. Note that this is using internal Gradle APIs, but we've seen that they didn't change in 5 years, and the code path is executed only if you have gcs backed repositories in your project.

    New dependency notations:

    • AndroidX.glance.wearTiles
    • AndroidX.wear.tiles.material
    • Google.android.maps
      • compose
      • utils
      • utils.ktx
      • ktx
      • rx
      • places
        • ktx
        • rx
    • ReactiveX
      • rxJava2
        • rxAndroid
        • rxKotlin
      • rxJava3
        • rxAndroid
        • rxKotlin
    • JakeWharton
      • rxBinding3
        • appcompat
        • core
        • drawerLayout
        • leanback
        • material
        • recyclerview
        • slidingPaneLayout
        • swipeRefreshLayout
        • viewPager2
        • viewPager
      • rxBinding4
        • appcompat
        • core
        • drawerLayout
        • leanback
        • material
        • recyclerview
        • slidingPaneLayout
        • swipeRefreshLayout
        • viewPager2
        • viewPager
      • rxRelay2
      • rxRelay3

    Credits

    Thanks to @mgray88 for the contribution in adding ReactiveX, RxBinding, and RxRelay dependency notations!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0(Jan 24, 2022)

    Version 0.40.0 (2022-01-24)

    New features

    • We are very happy to announce that refreshVersions now supports Gradle configuration cache! Gradle configuration is all about saving time, which is also the mission of refreshVersions, albeit in a different situation, so it made a lot of sense to not step on that feature Gradle engineers worked hard on. Note that the refreshVersions task itself is not compatible with configuration cache because it's impossible with the current Gradle APIs.
    • Error tolerance: The refreshVersions task will no longer fail if there's a problem getting versions from a repository. Now, it will add contextual comments in the versions.properties file, so you know what failed, and don't get fully blocked next time jcenter or another repository undergoes an outage. This should also help if you're running the refreshVersions task through an unstable internet connection and some network calls fail because of that.

    New dependency notations:

    • Google.modernStorage:
      • bom
      • permissions
      • photoPicker
      • storage
    • Google.android.openSourceLicensesPlugin
    • Google.android.playServices:
      • appset
      • auth.apiPhone
      • auth.blockstore
      • basement
      • cronet
      • fido
      • openSourceLicenses
      • passwordComplexity
      • recaptcha
      • tagmanager
    • Google.android.versionMatcherPlugin

    Credits

    Thanks to @imashnake0 for the contribution in adding dependency notations!

    Source code(tar.gz)
    Source code(zip)
  • v0.30.2(Jan 9, 2022)

    Version 0.30.2 (2022-01-09)

    Bug fixes

    • We are now shutting down the thread-pool from kotlinx.coroutines that we're using when the build finishes (Dispatchers.shutdown()). We believe it caused memory leaks in the Gradle Daemon, and this change, made possible since kotlinx.coroutines 1.6.0 should fix the last memory leak cause.
    • The versions of dependencies from the androidx.test family started diverging, so we changed replaced the version.androidx.test version key with more specific ones. The migration will be done automatically on upgrade of refreshVersions, without upgrading the versions of androidx.tests dependencies themselves.

    New feature

    • We now support fetching updates on plain-text http repositories. We evaluated the security risks, and for the case of refreshVersions itself, there is none that is significant (the worst possibility is crashing the build under attack), and if you're not using plain-text http repositories in the first place in your project, this doesn't apply at all anyway. We added support for this because some of our users need it for local maven repositories.

    New dependency notations:

    • Android.billingClient
    • Android.billingClient.ktx
    • Android.installReferrer
    • Android.tools:
      • desugarJdkLibs
      • r8
      • build.gradlePlugin
    • CashApp.licenseeGradlePlugin
    • CashApp.sqlDelight:
      • extensions:
        • androidPaging3
        • androidPaging
        • rxJava3
        • rxJava2
      • drivers.sqlJs
    • Google.android.fhir:
      • dataCapture
      • engine
      • workflow
    • Google.android.flexbox
    • Google.android.playServices:
      • cast:
        • framework
        • tv
      • instantApps
      • maps
      • mlKit.vision.imageLabeling.custom
      • mlKit.naturalLanguage.languageIdentification
      • pay
      • wallet
    • Google.mlKit:
      • playStoreDynamicFeatureSupport
      • naturalLanguage.entityExtraction
      • vision:
        • selfieSegmentation
        • textRecognition
          • chinese
          • devanagari
          • japanese
          • korean
    • Google.modernStorage:
      • fileSystem
      • mediaStore
    • Google.oboe
    • Ktor.client.darwin
    • Kotlin.scriptRuntime
    • KotlinX.serialization.hocon
    • Square.logcat
    • Square.moshi.adapters
    • Touchlab.kermit
      • bugsnagTest
      • bugsnag
      • crashlyticsTest
      • crashlytics
      • gradlePlugin
      • test

    Other changes

    We also removed many obsolete dependency notations from refreshVersions. Just like for the 0.30.0 release, this should not break your build as we implemented a robust replacement mechanism that also inserts migration guidance comments. ✨

    Credits

    Thanks to @brady-aiello, @mgray88, and @imashnake0 for their contributions in adding dependency notations!

    Source code(tar.gz)
    Source code(zip)
  • v0.30.1(Dec 21, 2021)

  • v0.30.0(Dec 19, 2021)

    Version 0.30.0 (2021-12-19)

    Potentially breaking change

    We raised the minimum supported Gradle version to 6.8, because we started to use Kotlin 1.4 features, and Gradle pins the stdlib version. Since at the time of writing, the latest Gradle version is 7.3, we believe it won't actually block any of our users. We have a short section about updating Gradle on our website here, feel free to check it out if it can help you.

    New features

    Repositories declared in dependencyResolutionManagement are now supported (Gradle 7+)

    Since Gradle 7, you can declare repositories of the entire Gradle project (including all subprojects and their buildscript) in the dependencyResolutionManagement block in the settings.gradle[.kts] file. Unfortunately, refreshVersions didn't support it, so, unless you also kept repositories declared with allprojects, or per project, you would end up with all version entries in the versions.properties file marked as unused after running the refreshVersions task, and you'd not see the newer updates.

    This release resolves this issue, and we are eager to use it in our projects ourselves.

    Update on built-in dependency notations

    Sometimes, libraries get deprecated, or the maintainers change the maven coordinates. When it happens, this fact is unfortunately not included in the maven-metadata.xml files, or any other standard metadata. That means tools like refreshVersions will believe you're on the latest versions, when you're not, because it lacks the necessary information.

    One example is Google that changed the maven coordinates of all their AndroidX Wear Watchface artifacts several weeks ago.

    It took us time to catch-up with this change because we wanted to design a generic mechanism for this recurrent problem, and provide the best experience for you, and ourselves.

    From now on, we have the ability to remove old or deprecated built-in dependency notations in refreshVersions, and doing so will not break your builds, nor will it change the dependencies of your project. However, it'll help you notice the deprecation, and it'll help you switch to the replacement dependencies, if any.

    The way it works is that we keep a versioned list of all the removals, and on refreshVersions upgrade, an automatic replacement will put back the hardcoded maven coordinates, using the version placeholder, and it will add our hand-written TODO/FIXME comments, along with a perfectly aligned replacement suggestion if there is any, so that moving to the newer artifact is as easy as upgrading to a newer version in the versions.properties file. We designed the system so that it cannot break your build, even if you were using withVersion(…) or other DependencyNotation extensions, even if you have code comments or special string literals.

    It also supports the case where we just move a dependency notation to another place, or change its name, without changing the maven coordinates.

    Because of this change, it's important that you check the git diff after upgrading refreshVersions and running the first Gradle reload/sync/build, so you can see if there's been any changes, and if you might want to switch to any replacement dependencies.

    This change will enable us to keep the built-in dependency notations updated with less effort, so we're very happy to have it ready, and fully tested.

    We've already started to take advantage of it to clean up all the discontinued artifacts we found in AndroidX.

    Bug fixes

    • Repositories declared in the dependencyResolutionManagement block were ignored. Now, they are taken into account.
    • The kotest extensions dependencies were previously wrongly sharing their version as per refreshVersions rules. Now, they each have their independent, own version key.
    • The refreshVersionsMigrate task wasn't inserting new entries in alphabetical order. Now it is.
    • The refreshVersionsMigrate task wasn't migrating buildscript dependencies. Now it is.

    New dependency notations:

    • AndroidX.appSearch.platformStorage
    • AndroidX.benchmark.macro
    • AndroidX.camera.video
    • AndroidX.carApp:
      • automotive
      • projected
    • AndroidX.compose:
      • animation.graphics
      • material3
    • AndroidX.core.remoteViews
    • AndroidX.dragAndDrop
    • AndroidX.emoji2.bundled
    • AndroidX.glance.appWidget
    • AndroidX.glance
    • AndroidX.leanback.grid
    • AndroidX.lifecycle.runtimeTesting
    • AndroidX.media3:
      • cast
      • common
      • database
      • datasource:
        • cronet
        • okhttp
        • rtmp
      • decoder
      • exoPlayer:
        • dash
        • hls
        • ima
        • rtsp
        • workmanager
      • extractor
      • session
      • testUtils.robolectric
      • testUtils
      • transformer
      • ui.leanback
      • ui
    • AndroidX.multidex.instrumentation
    • AndroidX.paging.guava
    • AndroidX.room:
      • paging
      • rxJava3
    • AndroidX.wear.tiles.testing
    • AndroidX.wear.watchFace:
      • complications.dataSourceKtx
      • complications.dataSource
      • editor
    • KotlinX.coroutines.bom
    • Square.moshi.adapters
    • Testing.junit:
      • bom
      • jupiter: (moved from Testing.junit)
        • api (moved from Testing.junit.api)
        • engine (moved from Testing.junit.engine)
        • migrationSupport (moved from Testing.junit.migrationSupport)
        • params (moved from Testing.junit.params)
    • Testing.kotest.framework:
      • api
      • dataset

    Thanks to Emil Kantis for the kotest dependencies fixes! Thanks to Kamalesh for the help in updating AndroidX dependency notations! Thanks to Simon Marquis for adding Square.moshi.adapters, and helping contributors using Windows!

    Source code(tar.gz)
    Source code(zip)
  • v0.23.0(Sep 28, 2021)

  • v0.22.0(Sep 27, 2021)

    Version 0.22.0 (2021-09-27)

    Bug fix

    Fix a regression that brought a KotlinNullPointerException in the build. We apologize for the issue. Thanks to Marcin and Craig for the report.

    New dependency notations:

    • AndroidX.compose.ui.toolingPreview
    • Chucker
    • KotlinX.cli
    • KotlinX.datetime

    Thanks to Filip Czaplicki, who contributed to the new dependency notations!

    Source code(tar.gz)
    Source code(zip)
  • v0.21.0(Sep 6, 2021)

    Version 0.21.0 (2021-09-07)

    New feature

    We now support npm dependencies for Kotlin/JS!

    Just put the version placeholder (_) in place of the version, and you're good to go.

    The version keys follow a simple naming scheme where their id is prefixed with npm, here are two examples:

    • version.npm.react=17.0.2
    • version.npm.@googlemaps/js-api-loader=1.12.2

    Special thanks to NikkyAI who authored the feature, and pair-programmed with us to refine it!

    Improvements

    Before this release, when we added new dependency notations and shorter version keys, it could lead to an unwanted upgrade of the dependency in the project upgrading refreshVersions. With this release, we make sure to copy the same version if we add or change the version key, and it will also work if we decide to remove one. This ensures that upgrading refreshVersions will not be able to affect your application or library.

    Thanks to Brady Aiello from Touchlab for helping out via pair-programming!

    New dependency notations:

    • Koin (new group with several dependencies)
    • Touchlab.stately (new group with several dependencies)
    • RussHWolf.multiplatformSettings (new group with several dependencies)

    Thanks to Brady Aiello again, who contributed to these new dependency notations!

    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Aug 23, 2021)

    Version 0.20.0 (2021-08-23)

    Announcement

    We are now ready to accept dependency notation contributions for high-quality and popular dependencies from the Kotlin ecosystem!

    Look for issues with the Dependency notations and up-for-grabs tags to find one you can directly contribute to, or submit a new issue to ask for a new one to be added. We updated the contributing guide on the website, it now has a guide dedicated to it here.

    New features

    • refreshVersions will now add ## unused comments on top of unused entries in the versions.properties file after you run the refreshVersions task, so you know which ones are obsolete and can be removed.
    • The new rejectVersionsIf { … } predicate available in the refreshVersions { … } extension in your settings.gradle[.kts] file will allow you to filter any kind of versions you don't want to know about. It can be handy to filter snapshots out for example.
    • Most of our dependency notations now provide more flexibility with 3 new extension functions: withVersionPlaceholder(), withVersion(…), and withoutVersion().

    Change (potentially breaking)

    • If you use a BoM from the built-in dependency notations, it must always appear before dependencies from the group it controls, or you'll see an error message that will fail the Gradle build. We do this because we can't switch on usage of the BoM for linked dependencies that have already been evaluated by Gradle.

    Improvements

    The refreshVersionsMigrate will now use the built-in dependency notations if they match existing dependencies.

    New dependency notations:

    • AndroidX:
      • benchmark.macroJunit4
      • core.splashscreen
      • games:
        • activity
        • controller
        • framePacing
        • performanceTuner
        • textInput
      • navigation.testing
      • wear.compose:
        • foundation
        • material
      • window
        • java
        • rxJava2
        • rxJava3
        • testing
    • COIL:
      • compose
      • composeBase
    • Firebase:
      • cloudMessagingDirectBoot
      • Firebase.mlModelDownloaderKtx
      • Firebase.mlModelDownloader
    • Kodein.di (new group with many dependencies)
    • Kotlin.test (which is compatible with multiplatform projects since Kotlin 1.5)
    • KotlinX.html (compatible with multiplatform projects)
    • Ktor.features.serialization
    • Http4k (new group with many dependencies)
    • Splitties.alertdialogMaterial
    • Square
      • okHttp3.bom
      • okHttp3 (shortcut to existing okHttp3.okHttp)
      • retrofit2.converter.wire
      • retrofit2 (shortcut to existing retrofit2.retrofit)
    • Spring (new group with many dependencies)
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Aug 3, 2021)

    Version 0.11.0 (2021-08-03)

    New feature

    Add task refreshVersionsMigrate that adds all missing entries in versions.properties and try to migrate the build.gradle(.kts) and other known files like libraries.gradle so that the version placeholder _ is used everywhere. Please try it out and give us your feedback for refreshVersionsMigrate

    Fixes

    • Plugins org.jetbrains.kotlinx.benchmark should not use key version.kotlin

    New dependency notations

    • Ktor.features.serialization
    • AndroidX.navigation.testing
    • Testing.kotestExtensions who replaces Testing.kotest.extensions in Kotest >= 4.5.0
    Source code(tar.gz)
    Source code(zip)
  • v0.10.1(Jun 10, 2021)

    Version 0.10.1 (2021-06-10)

    New features

    • In Android projects, if you used the version placeholder (_) directly in build.gradle(.kts) files, Android lint would trigger an unwanted warning, or error in the case of the Android build tools (aka. AGP, the Android Gradle Plugin). To avoid this inconvenience, running the refreshVersions task will now automatically check if it's running on an Android project, and in such cases, will edit (safely) the lint.xml file, creating it if needed, and add the needed rules to have these specific warnings and errors ignored.

    Fixes

    • Add missing version placeholder (_) for the Google.android.material.composeThemeAdapter dependency notation.
    • Fix a bug that prevented from using the correct version of org.jetbrains.kotlinx.benchmark and any other Gradle plugin with an id starting with org.jetbrains.kotlinx because it matched over org.jetbrains.kotlin as well. We are now matching on org.jetbrains.kotlin. to avoid this issue.

    New dependency notations:

    • AndroidX:
      • emoji2
        • views-helper
        • views
      • health.servicesClient
      • security.appAuthenticatorTesting
    • Google.accompanist.insets.ui
    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(May 13, 2021)

    Version 0.10.0 (2021-05-13)

    New features

    • There's a new versionFor function that takes a dependency notation, or a version key, and returns the corresponding version that is in the versions.properties file. For example, if you use Jetpack Compose, you can leverage it to set kotlinCompilerExtensionVersion with versionFor(AndroidX.compose.ui). Groovy DSL users can find it in the Versions class.
    • Support updates of settings plugins in settings.gradle.kts and settings.gradle files (including refreshVersions itself).
    • Support getting versions from Google Cloud Storage backed repositories. This can be helpful if you need to update private artifacts hosted there. Thanks to NikkyAI for the contribution!

    Changes

    • Setting up refreshVersions has been significantly simplified: Now, it's simply a plugin that must be applied in the settings.gradle.kts or settings.gradle file. Note that if you want to apply it to buildSrc as well, there's a gotcha regarding defining the version. The best thing is that on upgrade, refreshVersions will automatically replace the old & verbose bootstrap with the new plugin setup, and that works for buildSrc special case as well. We made many tests to ensure that this logic is reliable, doesn't break any code, doesn't remove important comments, and doesn't affect custom configuration in any way.
    • Bintray sunset resiliency: If refreshVersions encounters an HTTP 403 response on a bintray repository or on jcenter, it will consider the artifact to not be in this repository instead of crashing (but you can/should still remove bintray repo declarations anyway since it has been sunset).
    • Missing short version key rules have been added for many dependency notations groups in the Testing object, and for Orchid.

    Potentially breaking changes

    • The fix of the Square.sqlDelight.coroutinesExtensions dependency notation can lead to such an error: Failed to resolve: coroutines-extensions-1.4.4-_. If you get a similar error on upgrade, it's because you applied a fix like that one: Square.sqlDelight.coroutinesExtensions + ":_". You now can (must) remove it.
    • A bunch of new version key rules have been added, which means you might have changes of version keys, and because we currently don't have a migration facility for those, it might cause unwanted upgrades. Consequently, especially for Android projects, we recommend checking/verifying the changes made by refreshVersions after the first Gradle sync/reload/build that follows the upgrade.

    Fixes

    • Authentication for maven repositories should now work correctly. Should, because it can only work using internal Gradle APIs for the time being (though there's a safeguard to not crash if the API changes). Thanks to Mayank Kharbanda for the PR!
    • Custom extraArtifactVersionKeyRules could not be taken into account if there was an overlapping rule already present in refreshVersions, even if it was more specific. That ordering issue has now been fixed, the most specific rule will now always be the one applied.
    • If you had issues with some recent AndroidX artifacts, and their version key, they should all be fixed now, and there's all the latest dependency notations.

    New dependency notations

    • AndroidX:
      • activity.ktx
      • activity.compose
      • appSearch
      • appSearch.compiler
      • appSearch.localStorage
      • biometricKtx
      • carApp
      • carApp.testing
      • compose:
        • material.ripple
        • runtime.rxJava3
        • runtime.saveable
        • ui:
          • test
          • testJunit4
          • testManifest
          • tooling
          • toolingData
          • viewBinding
      • constraintLayoutCompose
      • core.googleShortcuts
      • dataStore:
        • core
        • rxJava2
        • rxJava3
        • preferences:
          • core
          • rxJava2
          • rxJava3
      • hilt.navigationCompose
      • hilt.navigationFragment
      • leanback.paging
      • leanback.preference
      • leanback.tab
      • lifecycle.viewModelCompose
      • navigation.compose
      • navigation.dynamicFeaturesFragment
      • paging.compose
      • paging.rxJava3
      • savedStateKtx
      • security.appAuthenticator
      • transitionKtx
      • wear:
        • complications.data
        • complications.provider
        • input
        • inputTesting
        • ongoing
        • phoneInteractions
        • remoteInteractions
        • watchFace
        • watchFace.guava
        • watchFace.client
        • watchFace.clientGuava
        • watchFace.complicationsRendering
        • watchFace.data
        • watchFace.editor
        • watchFace.editorGuava
        • watchFace.style
        • tiles:
          • proto
          • renderer
      • work.multiprocess
      • work.rxJava3
    • Firebase:
      • analyticsKtx
      • authenticationKtx
      • cloudMessagingKtx
      • crashlyticsKtx
      • dynamicLinksKtx
      • performanceMonitoringKtx
    • Google:
      • accompanist:
        • appcompatTheme
        • coil
        • flowlayout
        • glide
        • imageloadingCore
        • insets
        • pager.indicators
        • pager
        • swiperefresh
        • systemuicontroller
      • android.material.composeThemeAdapter
      • dagger.hilt.compiler
    • Testing.kotest.assertions.kotlinxDateTime

    Special mentions

    Thanks to all the folks that joined Louis CAD in pair-programming sessions:

    These were critical to ensure thorough testing, and great quality, all while keeping motivation to keep going.

    We're very grateful for your time and help, and we think our users will be as well. 🙏

    Also, thanks to all the folks that reported issues. It was very helpful to prioritize on our side.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.7(Oct 15, 2020)

    Version 0.9.7 (2020-10-16)

    Fixes

    • Running the refreshVersions task twice or more would fail with "executor rejected" as an error message, until the Gradle daemon is killed. This has now been fixed. (Issue #263)
    • The refreshVersions task was failing after the latest Gradle release candidate was superseded by the stable release because the API would return an empty JSON object after this, which we didn't expect.
    • (Minor) We fixed a typo in a diagnostic task name (refreshVersionsDependenciesMapping)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.6(Oct 12, 2020)

    Version 0.9.6 (2020-10-12)

    Fixes

    • This release fixes a major memory leak that would make Gradle Daemons unusable after several builds (or Gradle syncs/imports). We are very sorry for that issue, and the annoyance it might have caused. We experienced it too as users, and that's why we are bringing the fix now. We took the necessary measures to avoid future recurrence of such memory leaks.
    • Fix of a bug that'd make the first Gradle sync after adding a dependency fail.

    Breaking change

    • If you were using Jetpack Compose, the compiler dependency had its maven coordinates changed in version 1.0.0-alpha04. We updated the AndroidX.compose.compiler dependency constant, which means it now works only for Compose 1.0.0-alpha04 and more future versions.

    New dependency constants

    • Google.android.playServices.mlKit
    • Google.mlKit
    • KotlinX.serialization.json

    Deprecated

    Firebase ML Kit has been rebranded to Google ML Kit along with API and feature changes since 2020-08-14 update, so we deprecated the Firebase.mlKit dependencies and introduced new ones in Google.android.playServices.mlKit and Google.mlKit.

    New features

    • refreshVersions will now warn you when Gradle is not up to date, and will give you the commands to run to update it for you to copy/paste and run. It works if you're using a release candidate, and also if you're using a nightly version!
    Source code(tar.gz)
    Source code(zip)
  • v0.9.5(Aug 21, 2020)

    Version 0.9.5 (2020-08-21)

    This is a major release that brings surface-level and internal changes, paving the way for the upcoming 1.0 release.

    The plugin setup/bootstrap has changed, so check out the updated documentation in Setting-up.adoc.

    New features

    • Self update discovery. RefreshVersions will check for its own updates, and add available comments in the settings.gradle[.kts] file if needed for easy upgrade. This allows you to get future improvements conveniently.
    • Support for buildscript dependencies. It now works just like regular dependencies.
    • First class support for buildSrc
    • Support maven repositories with basic authentication (aka. credentials with username and password)
    • Going forward, refreshVersions will be able to auto-migrate any breaking changes a new version would introduce in your versions.properties, build.gradle and build.gradle.kts files in. This version of refreshVersions integrates the facility to let future versions of refreshVersions that migration is needed, and from which version. This is a very important change that ensures you can keep your projects updated with the least effort possible.

    New dependency constants

    • Kotlin.stdlib (for the base version of the stdlib)
    • KotlinX:
      • html
      • Coroutines:
        • reactive
        • reactor
        • rx2
        • rx3
      • Serialization:
        • core (replaces runtime artifacts since 1.0.0-RC)
        • protobuf
        • cbor
        • properties
      • io
      • reflect.lite
      • nodeJs
    • COIL, a Coroutine Image Loader for Android.
    • Square:
      • LeakCanary
      • KotlinPoet
      • Wire
      • SqlDelight
      • Moshi
      • Picasso
      • okio
      • Retrofit2:
        • Adapter:
          • java8 (renamed from retrofitJava8)
          • rxJava1 (renamed from retrofitRxJava1)
          • rxJava2 (renamed from retrofitRxJava2)
          • rxJava3
    • KoTest (in the Testing object)
    • CashApp:
      • sqlDelight (alias to Square.sqlDelight)
      • turbine
      • Copper
    • Google:
      • Dagger (including hilt for Android)
      • Android:
        • browserHelper
    • JakeWharton:
      • picnic
      • wormholeGradlePlugin
      • confundusGradlePlugin
      • moshi.shimo
    • AndroidX:
      • Gaming
      • Hilt
      • startup
      • tracing
      • vectorDrawableSeekable
      • Window
      • Core:
        • animation
        • animationTesting
      • Security:
        • cryptoKtx
        • identityCredential
      • Compose:
        • Runtime:
          • dispatch
          • savedInstance
          • liveData
          • rxJava2
        • Animation
        • Ui
        • Foundation
        • Material
      • Media2:
        • lifecycle
      • Concurrent:
        • futuresKtx

    Dependency constants renamed

    Several dependencies constants have been renamed in this release (compared to version 0.9.4).

    If you were using one of the following, you'll need to migrate these usages.

    We recommend to use "Replace in Path" in IntelliJ or Android Studio, filtering for the *.gradle.kts or *.gradle file extensions to do these replacements with ease.

    Note that for future versions, refreshVersions will be able to do this automatically.

    Here's the list of renamed dependency constants:

    • AndroidX.coreKtx -> AndroidX.core.ktx
    • AndroidX.coreRole -> AndroidX.core.role
    • Square.retrofit2.adapter.retrofitJava8 -> Square.retrofit2.adapter.java8
    • Square.retrofit2.adapter.retrofitRxJava1 -> Square.retrofit2.adapter.rxJava1
    • Square.retrofit2.adapter.retrofitRxJava2 -> Square.retrofit2.adapter.rxJava2
    • Testing.junit.junitJupiter -> Testing.junit
    • Testing.mockK.mockK -> Testing.mockK

    Changes

    • Make the refreshVersions task cancellable during network requests.
    • Now, only http 404 and 401 responses from repositories will be silent.
    • Server errors (i.e. all but http 404 and 401 responses) are now reported.
    • Network failures are now reported.
    • There is now a connection timeout (10 seconds per request for now)
    • An error is reported if a dependency wasn't found in any of the configured repositories.
    • All the searched repositories are now listed if a dependency wasn't found in any of them.
    • Only declared repositories are now looked up. (Before, refreshVersions would search all dependencies in all repositories of all modules and their buildscript, regardless of which module was declaring them.)
    • Dependency constants in Ktor no longer uses the native suffixed artifacts (because Kotlin 1.4 drops them, as the main ones become multiplatform)

    Fixes

    • Version sorting would crash if a version had a long number in it. This has now been fixed, any length of digit sequence is now supported in versions.
    • Fix maven coordinates of several dependency constants
    • Don't crash on repositories that are not https or file or have non password credentials.
    • The AndroidX.test.ext.jankTestHelper constant and few other ones in Firebase.mlKit had wrong maven coordinates. This has been fixed, and tests have been added to prevent it from happening again on any dependency constant we provide.
    Source code(tar.gz)
    Source code(zip)
  • v0.8.3(Nov 8, 2019)

  • v0.8.2(Nov 7, 2019)

    The long-term plan for v1.0 is to focus on :refreshVersions instead of :buildSrcVersions

    See https://github.com/jmfayard/buildSrcVersions/issues/104

    Starting from release 0.8.0 the plugin is now called and contain only the task refreshVersions

    plugins {
      id("de.fayard.refreshVersions").version("0.8.x") // or newer
    }
    

    We are not quite ready yet to extract the useful parts of buildSrcVersions to another plugin, so if you need the features from buildSrcVersions, stay with this for now:

    plugins {
      id("de.fayard.buildSrcVersions").version("0.7.0")
    }
    
    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Oct 13, 2019)

    The plugin will in the future focus on :refreshVersions.

    For now it is published under two names, with an identical content:

    plugins {
      id("de.fayard.refreshVersions").version("0.7.0")
      // or
      id("de.fayard.buildSrcVersions).version("0.7.0")
    }
    

    Next step: integration with https://github.com/LouisCAD/Splitties

    See https://github.com/jmfayard/buildSrcVersions/issues/104

    Changes:

    • New configuration: orderBy = GROUP_AND_LENGTH or GROUP_AND_ALPHABETICAL #65
    • PluginConfig.virtualGroups for kotlinx-coroutines #102
    Source code(tar.gz)
    Source code(zip)
  • v0.6.5(Oct 10, 2019)

    0.6.5

    • useFqdnFor() should also work for groups #99
    • Always update version "_" or "+" #98
    • (maybe) Non deterministic behavior #95
    • rejectVersionIf { isStable(currentVersion) && isNonStable(candidate.version) } #96
    Source code(tar.gz)
    Source code(zip)
  • v0.6.4(Oct 4, 2019)

  • v0.6.3(Oct 4, 2019)

  • v0.6.2(Oct 1, 2019)

    0.6.2

    If you want to manage your versions from gradle.properties for better compilation avoidance, but still want to have buildSrc/src/main/Libs.kt generated in your multi-module Gradle build, that's now possible.

    • Run $ ./gradlew refreshVersions && ./gradlew buildSrcVersions
    • To look for available dependency updates, run $ ./gradlew refreshVersions
    • When you add a dependency, run $ ./gradlew buildSrcVersions

    Other changes

    • Fixes #92 gradle.properties is getting updated and Versions.kt stops updating when running buildSrcVersions
    • Add non regression for identifiers in gradle.properties
    • Add Github issue and pull-request templates
    • Improve README
    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Sep 19, 2019)

    Refine naming convention https://github.com/jmfayard/buildSrcVersions/issues/80 Add plugin version in the output Restore indent=FOUR_SPACES when no editorconfig is there Add "#" at the beginning of a line in "gradle.properties" so that IntelliJ does not refactor/break the alignment

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Sep 17, 2019)

Owner
Jean-Michel Fayard
“Weeks of programming can save hours of planning.”
Jean-Michel Fayard
Gradle plugin for Google Protocol Buffers

Gradle Protobuf Plugin Author: Andrew Kroh Download: See maven central License: Apache License, Version 2.0 Requirements: Java 1.5+ Google Protocol Bu

Andrew Kroh 36 May 29, 2022
An Android Studio / IntelliJ plug-in help you upload your apk or listing to Google Play.

DroidLane An Android Studio / IntelliJ plug-in help you upload your apk or listing to Google Play. Installation Open Android Studio or IntelliJ IDEA O

Jintin 24 Jul 26, 2021
GPP is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and then promoting your App Bundle or APK to publishing app listings and other metadata.

Gradle Play Publisher Gradle Play Publisher is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and

null 3.9k Dec 30, 2022
Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Central, Corporate staging/snapshot servers and local Maven repositories).

GradleMavenPush Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Cen

 Vorlonsoft LLC 21 Oct 3, 2022
A plugin for Android Studio and Intellij IDEA that speeds up your day to day android development.

ADB Idea A plugin for Android Studio and Intellij IDEA that speeds up your day to day android development. The following commands are provided: Uninst

Philippe Breault 2k Dec 28, 2022
Maven Plugin for Android Application development and more

ANDROID MAVEN PLUGIN A plugin for Android application development with Apache Maven 3.0.5+ and the Android SDK. Please check out our website for furth

simpligility 1k Jan 4, 2023
Gradle plugin which downloads and manages your Android SDK.

DEPRECATED This plugin is deprecated and is no longer being developed. Tools and dependencies are automatically downloaded using version 2.2.0 of the

Jake Wharton 1.4k Dec 29, 2022
IntelliJ plugin that provides a modern and powerful byte code analyzer tool window.

IntelliJ Byte Code Analyzer Plugin This IntelliJ plugin provides a modern and powerful byte code analyzer tool window. Its supports Java, Kotlin, Groo

Marcel Kliemannel 29 Nov 9, 2022
CKlib is a gradle plugin that will build and package C/C++/Objective-C code for Kotlin/Native.

C Klib CKlib is a gradle plugin that will build and package C/C++/Objective-C code for Kotlin/Native. The Problem When you want to access C-etc code f

Touchlab 73 Nov 8, 2022
This is an android studio plugin that allows you to creates new color in hex format based on a percentage (0-100) and a base color you specify.

alpha-color Description This is an android studio plugin that allows you to creates new color in hex format based on a percentage (0-100) and a base c

null 1 Nov 12, 2021
Process jacoco reports and print the code coverage to the Azure DevOps

PrintCoverage PrintCoverage plugin allows you easily integrate coverage badge into your Azure DevOps pull requests! How to use In the module build.gra

Intermedia Cloud Communications 4 Oct 15, 2021
🤹 Common Kotlin utilities made for my personal usage, comes with SLF4J utilities, common extensions, common Gradle utilities, and more.

?? common-utils Common Kotlin utilities made for my personal usage, comes with SLF4J utilities, common extensions, ansi-colours, common Gradle utiliti

Noel ʕ •ᴥ•ʔ 6 Dec 2, 2022
Move on provides a complete package from shifting to ride, households to warehouses, packers and movers.

Move On Move on provides a complete package from shifting to ride, households to warehouses, packers and movers. Available on Playstore Packers and Mo

Mausam Singh 5 Feb 1, 2022
Adding support for Factory boy and django packages

This plugin provides some support for Factory Boy Features autocomplete for instances created by factories references to members of instance class Not

Nazareka 3 Dec 19, 2021
A full-featured package manager and viewer for Android

App Manager Docs · Releases · Telegram Channel Features General features Fully reproducible, copylefted libre software (GPLv3+) Material design (but n

Muntashir Al-Islam 2.3k Dec 29, 2022
A Unified, Modern and Efficient Bukkit plugin framework

LSPlugin ! WARNING ! This project is still under development DO NOT PUT INTO PRODUCTION ENVIRONMENT 一个专门为了 .DP7 群服务器 Charmless 的定制插件框架。未来Charmless的一切开

DP7 Network Works 0 Dec 24, 2021
NukeJangala - Starsector Mod Template using Gradle and IntelliJ

Starsector Mod Template using Gradle and IntelliJ v1.2.0 Description This is a t

Candy  0 Jan 4, 2022
🌏 Android/IDEA localization plugin. supports multiple languages and multiple translators.

English | 简体中文 AndroidLocalizePlugin ?? Android/IDEA localization plugin. supports multiple languages and multiple translators. Features Multiple tran

Airsaid 465 Dec 28, 2022
Manage pull requests and conduct code reviews in your IDE with full source-tree context.

String Manipulation IntelliJ plugin - https://plugins.jetbrains.com/plugin/2162 Sponsored by Manage pull requests and conduct code reviews in your IDE

Vojtěch Krása 582 Dec 22, 2022