diff --git a/search/search_index.json b/search/search_index.json index 786e38c5..037f6139 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Gradle Analytics Plugin Have you encountered a lengthy build time despite using the best practices? Are you curious how top tech companies manage their massive project build times? The build is an important process. If we want to have a faster and more efficient build, we need to understand how it works for our project. If you can't measure it, you can't improve it. (Lord Kelvin) The Gradle Analytics Plugin helps you analyze and measure your project builds. It provides unique visual and text metrics in HTML format. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html Below you can see the metrics provided by the plugin \ud83d\udc47 Build Status An overview of metrics results of the requested task in the build processes over the aforementioned period. Initialization Process Gradle supports single and multi-project builds. During the initialization process, Gradle determines which projects are going to take part in the build, and creates a Project instance for each of these projects. It denotes the average initialization process time over the report period. Configuration Process Constructs and configures the task graph for the build and then determines which tasks need to run and in which order, based on the task the user wants to run. It shows the average configuration process time over the report period. Dependency Resolve Process Downloading the project's dependencies is one of the configuration process stages. It represents the download/resolve process average duration during the report period. Execution Process Runs the selected tasks based on requested tasks task tree. Gradle executes requested task according to the dependency order. It represents the Execution Process average duration during the report period. Modules Execution Process It represents the median execution process time of each module over the report period. Overall Build Process It represents the average duration of overall build process. Modules Source Count It represents the project and its modules source file count. (files with extension of kt , java ). Modules Source Size It represents the project and its modules source file size. Modules Method Count It represents the project and its modules source method count. Cache Hit Gradle creates a cache for the executed task to be reused in the next incremental builds, the more cached tasks lead to faster builds. It represents the project and modules tasks average cache hit rate (tasks run with FROM_CACHE or UP_TO_DATE ). Successful Build Rate It represents the successful build rate of the requested task during the report period. Modules Crash Count It represents how many build failures happened to the requested task execution caused by project modules during the report period. Parallel Execution Rate Gradle uses CPU cores to execute more tasks simultaneously, leading to a faster build. It represents a rate of how much time was saved in the execution of the build process with parallel execution versus serial elapsed time. Modules Dependency Graph It represents the project module's dependency graph and with it connection types. Modules in the graph are clickable (shows first/deep nodes). Modules with warm colors are more dependent modules, and it is recommended to have fewer warm color modules because, by applying any change to these modules, all other dependent modules need to rebuild, which takes more time and resources. Redundant Dependency Connection it represents the project modules redundant dependency connection. Modules Execution Timeline It represents the latest modules execution process timeline graph. Modules Build Heatmap Shows how many times a module was built during the report period. Each bar has the name of the module and the number of dependent modules, smaller warm bars lead to faster builds as those modules with warm colors have more dependent modules. In addition, it helps to modify the modular structure by tracing the graph and finding the cause to avoid rebuilding the modules that are most shared with others. Non-cacheable Tasks These tasks are executed in the requested task tree without being cached. Try to avoid creating tasks that are not cacheable.","title":"Overview"},{"location":"#gradle-analytics-plugin","text":"Have you encountered a lengthy build time despite using the best practices? Are you curious how top tech companies manage their massive project build times? The build is an important process. If we want to have a faster and more efficient build, we need to understand how it works for our project. If you can't measure it, you can't improve it. (Lord Kelvin) The Gradle Analytics Plugin helps you analyze and measure your project builds. It provides unique visual and text metrics in HTML format. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html Below you can see the metrics provided by the plugin \ud83d\udc47","title":"Gradle Analytics Plugin"},{"location":"#build-status","text":"An overview of metrics results of the requested task in the build processes over the aforementioned period.","title":"Build Status"},{"location":"#initialization-process","text":"Gradle supports single and multi-project builds. During the initialization process, Gradle determines which projects are going to take part in the build, and creates a Project instance for each of these projects. It denotes the average initialization process time over the report period.","title":"Initialization Process"},{"location":"#configuration-process","text":"Constructs and configures the task graph for the build and then determines which tasks need to run and in which order, based on the task the user wants to run. It shows the average configuration process time over the report period.","title":"Configuration Process"},{"location":"#dependency-resolve-process","text":"Downloading the project's dependencies is one of the configuration process stages. It represents the download/resolve process average duration during the report period.","title":"Dependency Resolve Process"},{"location":"#execution-process","text":"Runs the selected tasks based on requested tasks task tree. Gradle executes requested task according to the dependency order. It represents the Execution Process average duration during the report period.","title":"Execution Process"},{"location":"#modules-execution-process","text":"It represents the median execution process time of each module over the report period.","title":"Modules Execution Process"},{"location":"#overall-build-process","text":"It represents the average duration of overall build process.","title":"Overall Build Process"},{"location":"#modules-source-count","text":"It represents the project and its modules source file count. (files with extension of kt , java ).","title":"Modules Source Count"},{"location":"#modules-source-size","text":"It represents the project and its modules source file size.","title":"Modules Source Size"},{"location":"#modules-method-count","text":"It represents the project and its modules source method count.","title":"Modules Method Count"},{"location":"#cache-hit","text":"Gradle creates a cache for the executed task to be reused in the next incremental builds, the more cached tasks lead to faster builds. It represents the project and modules tasks average cache hit rate (tasks run with FROM_CACHE or UP_TO_DATE ).","title":"Cache Hit"},{"location":"#successful-build-rate","text":"It represents the successful build rate of the requested task during the report period.","title":"Successful Build Rate"},{"location":"#modules-crash-count","text":"It represents how many build failures happened to the requested task execution caused by project modules during the report period.","title":"Modules Crash Count"},{"location":"#parallel-execution-rate","text":"Gradle uses CPU cores to execute more tasks simultaneously, leading to a faster build. It represents a rate of how much time was saved in the execution of the build process with parallel execution versus serial elapsed time.","title":"Parallel Execution Rate"},{"location":"#modules-dependency-graph","text":"It represents the project module's dependency graph and with it connection types. Modules in the graph are clickable (shows first/deep nodes). Modules with warm colors are more dependent modules, and it is recommended to have fewer warm color modules because, by applying any change to these modules, all other dependent modules need to rebuild, which takes more time and resources.","title":"Modules Dependency Graph"},{"location":"#redundant-dependency-connection","text":"it represents the project modules redundant dependency connection.","title":"Redundant Dependency Connection"},{"location":"#modules-execution-timeline","text":"It represents the latest modules execution process timeline graph.","title":"Modules Execution Timeline"},{"location":"#modules-build-heatmap","text":"Shows how many times a module was built during the report period. Each bar has the name of the module and the number of dependent modules, smaller warm bars lead to faster builds as those modules with warm colors have more dependent modules. In addition, it helps to modify the modular structure by tracing the graph and finding the cause to avoid rebuilding the modules that are most shared with others.","title":"Modules Build Heatmap"},{"location":"#non-cacheable-tasks","text":"These tasks are executed in the requested task tree without being cached. Try to avoid creating tasks that are not cacheable.","title":"Non-cacheable Tasks"},{"location":"changelog/","text":"Changelog 1.0.0-beta9 Fix critical issues 1.0.0-beta8 Feature 81 Used/Available worker count added in console report upcoming-milestone , social-press added in documentation More logs added in the build logger and report logger HotFix - 1.0.0-beta7 Modules Dependency Graph first node selection bug fixed 1.0.0-beta6 Issue 89 Tracking All Branches feature added Feature 52 Issue 90 Redundant Dependency Connection Metric PR Internal Logger PR Change report font style Upgrade Gradle version to 7.6 PR Modules Dependency Graph selection feature added Fix minor critical bugs HotFix - 1.0.0-beta5 Issue 77 1.0.0-beta4 Feature 45 Issue 61 Issue 67 Issue 68 Issue 69 Issue 70 Issue 71 Issue 72 Issue 73 1.0.0-beta3 Documentation dark mode added Report dark mode added Plugin measurement optimized Minor issues fixed 1.0.0-beta2 Issue 46 Issue 47 1.0.0-beta1 Hello World :)","title":"Changelog"},{"location":"changelog/#changelog","text":"","title":"Changelog"},{"location":"changelog/#100-beta9","text":"Fix critical issues","title":"1.0.0-beta9"},{"location":"changelog/#100-beta8","text":"Feature 81 Used/Available worker count added in console report upcoming-milestone , social-press added in documentation More logs added in the build logger and report logger","title":"1.0.0-beta8"},{"location":"changelog/#hotfix-100-beta7","text":"Modules Dependency Graph first node selection bug fixed","title":"HotFix - 1.0.0-beta7"},{"location":"changelog/#100-beta6","text":"Issue 89 Tracking All Branches feature added Feature 52 Issue 90 Redundant Dependency Connection Metric PR Internal Logger PR Change report font style Upgrade Gradle version to 7.6 PR Modules Dependency Graph selection feature added Fix minor critical bugs","title":"1.0.0-beta6"},{"location":"changelog/#hotfix-100-beta5","text":"Issue 77","title":"HotFix - 1.0.0-beta5"},{"location":"changelog/#100-beta4","text":"Feature 45 Issue 61 Issue 67 Issue 68 Issue 69 Issue 70 Issue 71 Issue 72 Issue 73","title":"1.0.0-beta4"},{"location":"changelog/#100-beta3","text":"Documentation dark mode added Report dark mode added Plugin measurement optimized Minor issues fixed","title":"1.0.0-beta3"},{"location":"changelog/#100-beta2","text":"Issue 46 Issue 47","title":"1.0.0-beta2"},{"location":"changelog/#100-beta1","text":"Hello World :)","title":"1.0.0-beta1"},{"location":"community/","text":"Community Gradle Analytics Plugin has an active discord channel for everyone, feel free to join our community via discord.gg/CJSeE9y8D3 .","title":"Community"},{"location":"community/#community","text":"Gradle Analytics Plugin has an active discord channel for everyone, feel free to join our community via discord.gg/CJSeE9y8D3 .","title":"Community"},{"location":"donation/","text":"Donation \u2764\ufe0f Gradle Analytics Plugin is Open Source and completely free, I spent more than a year analyzing build bottlenecks and finding a way to track them, and finally implemented it into the plugin. Of course, this project will be continued as a free open-source project. But to give me some energy, you can use either below ways to support me. The first stage of donation expectation is $1500 and $0 donated till now. Send me Bitcoin bc1q8ecepuax6je6s70j4l76nr978w34msc929sfuf Send me Tether(ERC-20) 0x2f23a4F4502C5e699777f3F89da6Ba965C7800FF Don't forget to tap the \u2b50 button on the project Github link . Thanks, Mehdi","title":"Donation \u2764\ufe0f"},{"location":"donation/#donation","text":"Gradle Analytics Plugin is Open Source and completely free, I spent more than a year analyzing build bottlenecks and finding a way to track them, and finally implemented it into the plugin. Of course, this project will be continued as a free open-source project. But to give me some energy, you can use either below ways to support me. The first stage of donation expectation is $1500 and $0 donated till now. Send me Bitcoin bc1q8ecepuax6je6s70j4l76nr978w34msc929sfuf Send me Tether(ERC-20) 0x2f23a4F4502C5e699777f3F89da6Ba965C7800FF Don't forget to tap the \u2b50 button on the project Github link . Thanks, Mehdi","title":"Donation \u2764\ufe0f"},{"location":"getting-report/","text":"Getting Report Gradle Analytics Plugin uses daily basis data to generate reports. So you could use the below instructions to generate your build analysis. Execute Gradle Task ./gradlew reportAnalytics --task=\"REQUESTED_TASK\" --branch=\"BRANCH_NAME\" --period=\"can be like today, s:yyyy/MM/dd,e:yyyy/MM/dd, 1y, 4m, 38d, 3m 06d\" --period Examples today - Generates report only for the current day. 1d - Generates report from 1 day ago till now. 1m 3d - Generates report from 1 month and 3 days ago till now. 1y - Generates report from 1 year ago till now. s:2022/03/24,e:2022/04/25 - Generates report from 2022/03/24 till 2022/04/25 . Plugin only holds the metrics results in the caching database up to one year. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html","title":"Getting Report"},{"location":"getting-report/#getting-report","text":"Gradle Analytics Plugin uses daily basis data to generate reports. So you could use the below instructions to generate your build analysis. Execute Gradle Task ./gradlew reportAnalytics --task=\"REQUESTED_TASK\" --branch=\"BRANCH_NAME\" --period=\"can be like today, s:yyyy/MM/dd,e:yyyy/MM/dd, 1y, 4m, 38d, 3m 06d\" --period Examples today - Generates report only for the current day. 1d - Generates report from 1 day ago till now. 1m 3d - Generates report from 1 month and 3 days ago till now. 1y - Generates report from 1 year ago till now. s:2022/03/24,e:2022/04/25 - Generates report from 2022/03/24 till 2022/04/25 . Plugin only holds the metrics results in the caching database up to one year. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html","title":"Getting Report"},{"location":"license/","text":"License MIT License Copyright \u00a9 2022 Mehdi Janbarari ( @janbarari ) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","title":"License"},{"location":"license/#license","text":"MIT License Copyright \u00a9 2022 Mehdi Janbarari ( @janbarari ) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","title":"License"},{"location":"privacy-policy/","text":"Privacy Policy Gradle Analytics Plugin does NOT send any collected data to any server apart from the user's own database config. It uses offline HTML renders to provide the analytics, So there is no need to upload any data from the database.","title":"Privacy & Policy"},{"location":"privacy-policy/#privacy-policy","text":"Gradle Analytics Plugin does NOT send any collected data to any server apart from the user's own database config. It uses offline HTML renders to provide the analytics, So there is no need to upload any data from the database.","title":"Privacy Policy"},{"location":"report-bug/","text":"Report Bug I appreciate reporting the bugs and crashes in the plugin. In order to submit please use either below ways: Github Link or Send Me Email You can submit the build-log.txt and report-log.txt log files inside the output directory to help us to reproduce the issue.","title":"Report Bug"},{"location":"report-bug/#report-bug","text":"I appreciate reporting the bugs and crashes in the plugin. In order to submit please use either below ways: Github Link or Send Me Email You can submit the build-log.txt and report-log.txt log files inside the output directory to help us to reproduce the issue.","title":"Report Bug"},{"location":"request-feature/","text":"Request Feature I thankfully appreciate to send me your ideas about new features. In order to submit your ideas please use the below ways: Github Link or Send Me Email","title":"Request Feature"},{"location":"request-feature/#request-feature","text":"I thankfully appreciate to send me your ideas about new features. In order to submit your ideas please use the below ways: Github Link or Send Me Email","title":"Request Feature"},{"location":"setup/","text":"Setup To set up the plugin in your project, follow the below instructions: Step 1 Make sure your project uses Git VCS and Gradle version 6.1+ . Gradle Analytics Plugin uses Git terminal to get the branch names and latest HEAD commit hash. so It is required for your project to use Git VCS. Step 2 Apply the Gradle Plugin to the root of your project. Kotlin Groovy plugins { id ( \"io.github.janbarari.gradle-analytics-plugin\" ) version \"1.0.0-beta9\" } plugins { id 'io.github.janbarari.gradle-analytics-plugin' version '1.0.0-beta9' } For legacy plugin application, see the Gradle Plugin Portal. Step 3 Add plugin configuration in the root of your project. Kotlin Groovy gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = \"DATABASE_PATH\" name = \"DATABASE_NAME\" // Don't add `.db` in the database name. user = \"DATABASE_USER\" // Remove `user` if you want the plugin to create the DB. password = \"DATABASE_PASSWORD\" // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = \"MYSQL_DATABASE_HOST\" name = \"MYSQL_DATABASE_NAME\" user = \"MYSQL_DATABASE_USER\" password = \"MYSQL_DATABASE_PASSWORD\" port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = setOf ( // Add your requested tasks to be analyzed, Example: \":app:assembleDebug\" , \":jar\" , \":assemble\" ) trackingBranches = setOf ( // requested tasks only analyzed in the branches you add here, Example: \"master\" , \"develop\" ) // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = setOf () trackAllBranchesEnabled = false // Optional: Default is False. outputPath = \"OUTPUT_REPORT_PATH\" // Optional: Default is project /build/ dir. } gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = 'DATABASE_PATH' name = 'DATABASE_NAME' // Don't add `.db` in the database name. user = 'DATABASE_USER' // Remove `user` if you want the plugin to create the DB. password = 'DATABASE_PASSWORD' // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = 'MYSQL_DATABASE_HOST' name = 'MYSQL_DATABASE_NAME' user = 'MYSQL_DATABASE_USER' password = 'MYSQL_DATABASE_PASSWORD' port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = [ // Add your requested tasks to be analyzed, Example: ':app:assembleDebug' , ':jar' , ':assemble' ] trackingBranches = [ // requested tasks only analyzed in the branches you add here, Example: 'master' , 'develop' ] // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = [] trackAllBranchesEnabled = false // Optional: Default is False. outputPath = 'OUTPUT_REPORT_PATH' // Optional: Default is project /build/ dir. } Important Notes The plugin will create one automatically if there isn't an SQLite database. You only need to fill in the name and path (Recommended). Both sqlite / mysql can be used to config local or ci databases. Both local and ci configs are optional. If using the plugin in your CI/CD make sure the CI=true environment variable exists in your CI system environments and the ci database is configured. The outputPath can be skipped, it will generate the report inside the project build directory. By enabling isTrackAllBranchesEnabled analytics will be kicked on all branches. isEnabled and isTrackAllBranchesEnabled are not mandatory since they have default values.","title":"Setup"},{"location":"setup/#setup","text":"To set up the plugin in your project, follow the below instructions:","title":"Setup"},{"location":"setup/#step-1","text":"Make sure your project uses Git VCS and Gradle version 6.1+ . Gradle Analytics Plugin uses Git terminal to get the branch names and latest HEAD commit hash. so It is required for your project to use Git VCS.","title":"Step 1"},{"location":"setup/#step-2","text":"Apply the Gradle Plugin to the root of your project. Kotlin Groovy plugins { id ( \"io.github.janbarari.gradle-analytics-plugin\" ) version \"1.0.0-beta9\" } plugins { id 'io.github.janbarari.gradle-analytics-plugin' version '1.0.0-beta9' } For legacy plugin application, see the Gradle Plugin Portal.","title":"Step 2"},{"location":"setup/#step-3","text":"Add plugin configuration in the root of your project. Kotlin Groovy gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = \"DATABASE_PATH\" name = \"DATABASE_NAME\" // Don't add `.db` in the database name. user = \"DATABASE_USER\" // Remove `user` if you want the plugin to create the DB. password = \"DATABASE_PASSWORD\" // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = \"MYSQL_DATABASE_HOST\" name = \"MYSQL_DATABASE_NAME\" user = \"MYSQL_DATABASE_USER\" password = \"MYSQL_DATABASE_PASSWORD\" port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = setOf ( // Add your requested tasks to be analyzed, Example: \":app:assembleDebug\" , \":jar\" , \":assemble\" ) trackingBranches = setOf ( // requested tasks only analyzed in the branches you add here, Example: \"master\" , \"develop\" ) // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = setOf () trackAllBranchesEnabled = false // Optional: Default is False. outputPath = \"OUTPUT_REPORT_PATH\" // Optional: Default is project /build/ dir. } gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = 'DATABASE_PATH' name = 'DATABASE_NAME' // Don't add `.db` in the database name. user = 'DATABASE_USER' // Remove `user` if you want the plugin to create the DB. password = 'DATABASE_PASSWORD' // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = 'MYSQL_DATABASE_HOST' name = 'MYSQL_DATABASE_NAME' user = 'MYSQL_DATABASE_USER' password = 'MYSQL_DATABASE_PASSWORD' port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = [ // Add your requested tasks to be analyzed, Example: ':app:assembleDebug' , ':jar' , ':assemble' ] trackingBranches = [ // requested tasks only analyzed in the branches you add here, Example: 'master' , 'develop' ] // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = [] trackAllBranchesEnabled = false // Optional: Default is False. outputPath = 'OUTPUT_REPORT_PATH' // Optional: Default is project /build/ dir. } Important Notes The plugin will create one automatically if there isn't an SQLite database. You only need to fill in the name and path (Recommended). Both sqlite / mysql can be used to config local or ci databases. Both local and ci configs are optional. If using the plugin in your CI/CD make sure the CI=true environment variable exists in your CI system environments and the ci database is configured. The outputPath can be skipped, it will generate the report inside the project build directory. By enabling isTrackAllBranchesEnabled analytics will be kicked on all branches. isEnabled and isTrackAllBranchesEnabled are not mandatory since they have default values.","title":"Step 3"},{"location":"social-press/","text":"Social It's my pleasure that Gradle Analytics Plugin has been introduced in the below links: Gradle Newsletter (Oct 2022) Open Source Agenda Awesome Open Source","title":"Social/Press"},{"location":"social-press/#social","text":"It's my pleasure that Gradle Analytics Plugin has been introduced in the below links: Gradle Newsletter (Oct 2022) Open Source Agenda Awesome Open Source","title":"Social"},{"location":"special-thanks/","text":"Special Thanks I am very proud to give special thanks to those around me in making and presenting this open source project. I am grateful to Yazdan Sharifi( @yazdan-sharifi2020 ), who helped write the plugin report renders. Best regards, Mehdi","title":"Special Thanks"},{"location":"special-thanks/#special-thanks","text":"I am very proud to give special thanks to those around me in making and presenting this open source project. I am grateful to Yazdan Sharifi( @yazdan-sharifi2020 ), who helped write the plugin report renders. Best regards, Mehdi","title":"Special Thanks"},{"location":"third-party/","text":"Third party All third-party dependencies that are being used in the plugin source: Gradle API 7.6 Kotlin 1.6.20 Coroutines 1.6.3 Moshi 1.13.0 Jetbrains Exposed 0.38.1 Detekt 1.20.0-RC2 Mockk 1.12.4 mysql:mysql-connector-java:8.0.29 org.xerial:sqlite-jdbc:3.36.0.3 commons-io:commons-io:2.11.0 com.github.oshi:oshi-core:6.4.0","title":"Third party"},{"location":"third-party/#third-party","text":"All third-party dependencies that are being used in the plugin source: Gradle API 7.6 Kotlin 1.6.20 Coroutines 1.6.3 Moshi 1.13.0 Jetbrains Exposed 0.38.1 Detekt 1.20.0-RC2 Mockk 1.12.4 mysql:mysql-connector-java:8.0.29 org.xerial:sqlite-jdbc:3.36.0.3 commons-io:commons-io:2.11.0 com.github.oshi:oshi-core:6.4.0","title":"Third party"},{"location":"upcoming-milestone/","text":"Upcoming Milestone Finally, the first stable version of the plugin, planned for release in Milestone/1.0.1 , is scheduled to be published during the last week of May 2023. Upcoming Changes Fix bug report #105 Fix bug report #121 Upgrade gradle version to 8.1.1 Fix minor UI issues Add more information when the configuration is not correct Refactor metrics logical codebase Increase code coverage by adding more unit tests I'm sorry for the delay in the project. It was caused by unexpected problems, like losing my job and facing personal difficulties, which made it hard for me to contribute effectively. I would really appreciate it if you could donate to support the development of this plugin.","title":"Upcoming Milestone"},{"location":"upcoming-milestone/#upcoming-milestone","text":"Finally, the first stable version of the plugin, planned for release in Milestone/1.0.1 , is scheduled to be published during the last week of May 2023. Upcoming Changes Fix bug report #105 Fix bug report #121 Upgrade gradle version to 8.1.1 Fix minor UI issues Add more information when the configuration is not correct Refactor metrics logical codebase Increase code coverage by adding more unit tests I'm sorry for the delay in the project. It was caused by unexpected problems, like losing my job and facing personal difficulties, which made it hard for me to contribute effectively. I would really appreciate it if you could donate to support the development of this plugin.","title":"Upcoming Milestone"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Gradle Analytics Plugin Have you encountered a lengthy build time despite using the best practices? Are you curious how top tech companies manage their massive project build times? The build is an important process. If we want to have a faster and more efficient build, we need to understand how it works for our project. If you can't measure it, you can't improve it. (Lord Kelvin) The Gradle Analytics Plugin helps you analyze and measure your project builds. It provides unique visual and text metrics in HTML format. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html Below you can see the metrics provided by the plugin \ud83d\udc47 Build Status An overview of metrics results of the requested task in the build processes over the aforementioned period. Initialization Process Gradle supports single and multi-project builds. During the initialization process, Gradle determines which projects are going to take part in the build, and creates a Project instance for each of these projects. It denotes the average initialization process time over the report period. Configuration Process Constructs and configures the task graph for the build and then determines which tasks need to run and in which order, based on the task the user wants to run. It shows the average configuration process time over the report period. Dependency Resolve Process Downloading the project's dependencies is one of the configuration process stages. It represents the download/resolve process average duration during the report period. Execution Process Runs the selected tasks based on requested tasks task tree. Gradle executes requested task according to the dependency order. It represents the Execution Process average duration during the report period. Modules Execution Process It represents the median execution process time of each module over the report period. Overall Build Process It represents the average duration of overall build process. Modules Source Count It represents the project and its modules source file count. (files with extension of kt , java ). Modules Source Size It represents the project and its modules source file size. Modules Method Count It represents the project and its modules source method count. Cache Hit Gradle creates a cache for the executed task to be reused in the next incremental builds, the more cached tasks lead to faster builds. It represents the project and modules tasks average cache hit rate (tasks run with FROM_CACHE or UP_TO_DATE ). Successful Build Rate It represents the successful build rate of the requested task during the report period. Modules Crash Count It represents how many build failures happened to the requested task execution caused by project modules during the report period. Parallel Execution Rate Gradle uses CPU cores to execute more tasks simultaneously, leading to a faster build. It represents a rate of how much time was saved in the execution of the build process with parallel execution versus serial elapsed time. Modules Dependency Graph It represents the project module's dependency graph and with it connection types. Modules in the graph are clickable (shows first/deep nodes). Modules with warm colors are more dependent modules, and it is recommended to have fewer warm color modules because, by applying any change to these modules, all other dependent modules need to rebuild, which takes more time and resources. Redundant Dependency Connection it represents the project modules redundant dependency connection. Modules Execution Timeline It represents the latest modules execution process timeline graph. Modules Build Heatmap Shows how many times a module was built during the report period. Each bar has the name of the module and the number of dependent modules, smaller warm bars lead to faster builds as those modules with warm colors have more dependent modules. In addition, it helps to modify the modular structure by tracing the graph and finding the cause to avoid rebuilding the modules that are most shared with others. Non-cacheable Tasks These tasks are executed in the requested task tree without being cached. Try to avoid creating tasks that are not cacheable.","title":"Overview"},{"location":"#gradle-analytics-plugin","text":"Have you encountered a lengthy build time despite using the best practices? Are you curious how top tech companies manage their massive project build times? The build is an important process. If we want to have a faster and more efficient build, we need to understand how it works for our project. If you can't measure it, you can't improve it. (Lord Kelvin) The Gradle Analytics Plugin helps you analyze and measure your project builds. It provides unique visual and text metrics in HTML format. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html Below you can see the metrics provided by the plugin \ud83d\udc47","title":"Gradle Analytics Plugin"},{"location":"#build-status","text":"An overview of metrics results of the requested task in the build processes over the aforementioned period.","title":"Build Status"},{"location":"#initialization-process","text":"Gradle supports single and multi-project builds. During the initialization process, Gradle determines which projects are going to take part in the build, and creates a Project instance for each of these projects. It denotes the average initialization process time over the report period.","title":"Initialization Process"},{"location":"#configuration-process","text":"Constructs and configures the task graph for the build and then determines which tasks need to run and in which order, based on the task the user wants to run. It shows the average configuration process time over the report period.","title":"Configuration Process"},{"location":"#dependency-resolve-process","text":"Downloading the project's dependencies is one of the configuration process stages. It represents the download/resolve process average duration during the report period.","title":"Dependency Resolve Process"},{"location":"#execution-process","text":"Runs the selected tasks based on requested tasks task tree. Gradle executes requested task according to the dependency order. It represents the Execution Process average duration during the report period.","title":"Execution Process"},{"location":"#modules-execution-process","text":"It represents the median execution process time of each module over the report period.","title":"Modules Execution Process"},{"location":"#overall-build-process","text":"It represents the average duration of overall build process.","title":"Overall Build Process"},{"location":"#modules-source-count","text":"It represents the project and its modules source file count. (files with extension of kt , java ).","title":"Modules Source Count"},{"location":"#modules-source-size","text":"It represents the project and its modules source file size.","title":"Modules Source Size"},{"location":"#modules-method-count","text":"It represents the project and its modules source method count.","title":"Modules Method Count"},{"location":"#cache-hit","text":"Gradle creates a cache for the executed task to be reused in the next incremental builds, the more cached tasks lead to faster builds. It represents the project and modules tasks average cache hit rate (tasks run with FROM_CACHE or UP_TO_DATE ).","title":"Cache Hit"},{"location":"#successful-build-rate","text":"It represents the successful build rate of the requested task during the report period.","title":"Successful Build Rate"},{"location":"#modules-crash-count","text":"It represents how many build failures happened to the requested task execution caused by project modules during the report period.","title":"Modules Crash Count"},{"location":"#parallel-execution-rate","text":"Gradle uses CPU cores to execute more tasks simultaneously, leading to a faster build. It represents a rate of how much time was saved in the execution of the build process with parallel execution versus serial elapsed time.","title":"Parallel Execution Rate"},{"location":"#modules-dependency-graph","text":"It represents the project module's dependency graph and with it connection types. Modules in the graph are clickable (shows first/deep nodes). Modules with warm colors are more dependent modules, and it is recommended to have fewer warm color modules because, by applying any change to these modules, all other dependent modules need to rebuild, which takes more time and resources.","title":"Modules Dependency Graph"},{"location":"#redundant-dependency-connection","text":"it represents the project modules redundant dependency connection.","title":"Redundant Dependency Connection"},{"location":"#modules-execution-timeline","text":"It represents the latest modules execution process timeline graph.","title":"Modules Execution Timeline"},{"location":"#modules-build-heatmap","text":"Shows how many times a module was built during the report period. Each bar has the name of the module and the number of dependent modules, smaller warm bars lead to faster builds as those modules with warm colors have more dependent modules. In addition, it helps to modify the modular structure by tracing the graph and finding the cause to avoid rebuilding the modules that are most shared with others.","title":"Modules Build Heatmap"},{"location":"#non-cacheable-tasks","text":"These tasks are executed in the requested task tree without being cached. Try to avoid creating tasks that are not cacheable.","title":"Non-cacheable Tasks"},{"location":"changelog/","text":"Changelog 1.0.0-beta9 Fix critical issues 1.0.0-beta8 Feature 81 Used/Available worker count added in console report upcoming-milestone , social-press added in documentation More logs added in the build logger and report logger HotFix - 1.0.0-beta7 Modules Dependency Graph first node selection bug fixed 1.0.0-beta6 Issue 89 Tracking All Branches feature added Feature 52 Issue 90 Redundant Dependency Connection Metric PR Internal Logger PR Change report font style Upgrade Gradle version to 7.6 PR Modules Dependency Graph selection feature added Fix minor critical bugs HotFix - 1.0.0-beta5 Issue 77 1.0.0-beta4 Feature 45 Issue 61 Issue 67 Issue 68 Issue 69 Issue 70 Issue 71 Issue 72 Issue 73 1.0.0-beta3 Documentation dark mode added Report dark mode added Plugin measurement optimized Minor issues fixed 1.0.0-beta2 Issue 46 Issue 47 1.0.0-beta1 Hello World :)","title":"Changelog"},{"location":"changelog/#changelog","text":"","title":"Changelog"},{"location":"changelog/#100-beta9","text":"Fix critical issues","title":"1.0.0-beta9"},{"location":"changelog/#100-beta8","text":"Feature 81 Used/Available worker count added in console report upcoming-milestone , social-press added in documentation More logs added in the build logger and report logger","title":"1.0.0-beta8"},{"location":"changelog/#hotfix-100-beta7","text":"Modules Dependency Graph first node selection bug fixed","title":"HotFix - 1.0.0-beta7"},{"location":"changelog/#100-beta6","text":"Issue 89 Tracking All Branches feature added Feature 52 Issue 90 Redundant Dependency Connection Metric PR Internal Logger PR Change report font style Upgrade Gradle version to 7.6 PR Modules Dependency Graph selection feature added Fix minor critical bugs","title":"1.0.0-beta6"},{"location":"changelog/#hotfix-100-beta5","text":"Issue 77","title":"HotFix - 1.0.0-beta5"},{"location":"changelog/#100-beta4","text":"Feature 45 Issue 61 Issue 67 Issue 68 Issue 69 Issue 70 Issue 71 Issue 72 Issue 73","title":"1.0.0-beta4"},{"location":"changelog/#100-beta3","text":"Documentation dark mode added Report dark mode added Plugin measurement optimized Minor issues fixed","title":"1.0.0-beta3"},{"location":"changelog/#100-beta2","text":"Issue 46 Issue 47","title":"1.0.0-beta2"},{"location":"changelog/#100-beta1","text":"Hello World :)","title":"1.0.0-beta1"},{"location":"community/","text":"Community Gradle Analytics Plugin has an active discord channel for everyone, feel free to join our community via discord.gg/CJSeE9y8D3 .","title":"Community"},{"location":"community/#community","text":"Gradle Analytics Plugin has an active discord channel for everyone, feel free to join our community via discord.gg/CJSeE9y8D3 .","title":"Community"},{"location":"donation/","text":"Donation \u2764\ufe0f Gradle Analytics Plugin is Open Source and completely free, I spent more than a year analyzing build bottlenecks and finding a way to track them, and finally implemented it into the plugin. Of course, this project will be continued as a free open-source project. But to give me some energy, you can use either below ways to support me. The first stage of donation expectation is $1500 and $0 donated till now. Send me Bitcoin bc1q8ecepuax6je6s70j4l76nr978w34msc929sfuf Send me Tether(ERC-20) 0x2f23a4F4502C5e699777f3F89da6Ba965C7800FF Don't forget to tap the \u2b50 button on the project Github link . Thanks, Mehdi","title":"Donation \u2764\ufe0f"},{"location":"donation/#donation","text":"Gradle Analytics Plugin is Open Source and completely free, I spent more than a year analyzing build bottlenecks and finding a way to track them, and finally implemented it into the plugin. Of course, this project will be continued as a free open-source project. But to give me some energy, you can use either below ways to support me. The first stage of donation expectation is $1500 and $0 donated till now. Send me Bitcoin bc1q8ecepuax6je6s70j4l76nr978w34msc929sfuf Send me Tether(ERC-20) 0x2f23a4F4502C5e699777f3F89da6Ba965C7800FF Don't forget to tap the \u2b50 button on the project Github link . Thanks, Mehdi","title":"Donation \u2764\ufe0f"},{"location":"getting-report/","text":"Getting Report Gradle Analytics Plugin uses daily basis data to generate reports. So you could use the below instructions to generate your build analysis. Execute Gradle Task ./gradlew reportAnalytics --task=\"REQUESTED_TASK\" --branch=\"BRANCH_NAME\" --period=\"can be like today, s:yyyy/MM/dd,e:yyyy/MM/dd, 1y, 4m, 38d, 3m 06d\" --period Examples today - Generates report only for the current day. 1d - Generates report from 1 day ago till now. 1m 3d - Generates report from 1 month and 3 days ago till now. 1y - Generates report from 1 year ago till now. s:2022/03/24,e:2022/04/25 - Generates report from 2022/03/24 till 2022/04/25 . Plugin only holds the metrics results in the caching database up to one year. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html","title":"Getting Report"},{"location":"getting-report/#getting-report","text":"Gradle Analytics Plugin uses daily basis data to generate reports. So you could use the below instructions to generate your build analysis. Execute Gradle Task ./gradlew reportAnalytics --task=\"REQUESTED_TASK\" --branch=\"BRANCH_NAME\" --period=\"can be like today, s:yyyy/MM/dd,e:yyyy/MM/dd, 1y, 4m, 38d, 3m 06d\" --period Examples today - Generates report only for the current day. 1d - Generates report from 1 day ago till now. 1m 3d - Generates report from 1 month and 3 days ago till now. 1y - Generates report from 1 year ago till now. s:2022/03/24,e:2022/04/25 - Generates report from 2022/03/24 till 2022/04/25 . Plugin only holds the metrics results in the caching database up to one year. To understand the metrics and report that plugin provides, It is required to understand Gradle basics and how this build system works. https://docs.gradle.org/current/userguide/what_is_gradle.html","title":"Getting Report"},{"location":"license/","text":"License MIT License Copyright \u00a9 2022 Mehdi Janbarari ( @janbarari ) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","title":"License"},{"location":"license/#license","text":"MIT License Copyright \u00a9 2022 Mehdi Janbarari ( @janbarari ) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","title":"License"},{"location":"privacy-policy/","text":"Privacy Policy Gradle Analytics Plugin does NOT send any collected data to any server apart from the user's own database config. It uses offline HTML renders to provide the analytics, So there is no need to upload any data from the database.","title":"Privacy & Policy"},{"location":"privacy-policy/#privacy-policy","text":"Gradle Analytics Plugin does NOT send any collected data to any server apart from the user's own database config. It uses offline HTML renders to provide the analytics, So there is no need to upload any data from the database.","title":"Privacy Policy"},{"location":"report-bug/","text":"Report Bug I appreciate reporting the bugs and crashes in the plugin. In order to submit please use either below ways: Github Link or Send Me Email You can submit the build-log.txt and report-log.txt log files inside the output directory to help us to reproduce the issue.","title":"Report Bug"},{"location":"report-bug/#report-bug","text":"I appreciate reporting the bugs and crashes in the plugin. In order to submit please use either below ways: Github Link or Send Me Email You can submit the build-log.txt and report-log.txt log files inside the output directory to help us to reproduce the issue.","title":"Report Bug"},{"location":"request-feature/","text":"Request Feature I thankfully appreciate to send me your ideas about new features. In order to submit your ideas please use the below ways: Github Link or Send Me Email","title":"Request Feature"},{"location":"request-feature/#request-feature","text":"I thankfully appreciate to send me your ideas about new features. In order to submit your ideas please use the below ways: Github Link or Send Me Email","title":"Request Feature"},{"location":"setup/","text":"Setup To set up the plugin in your project, follow the below instructions: Step 1 Make sure your project uses Git VCS and Gradle version 6.1+ . Gradle Analytics Plugin uses Git terminal to get the branch names and latest HEAD commit hash. so It is required for your project to use Git VCS. Step 2 Apply the Gradle Plugin to the root of your project. Kotlin Groovy plugins { id ( \"io.github.janbarari.gradle-analytics-plugin\" ) version \"1.0.0-beta9\" } plugins { id 'io.github.janbarari.gradle-analytics-plugin' version '1.0.0-beta9' } For legacy plugin application, see the Gradle Plugin Portal. Step 3 Add plugin configuration in the root of your project. Kotlin Groovy gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = \"DATABASE_PATH\" name = \"DATABASE_NAME\" // Don't add `.db` in the database name. user = \"DATABASE_USER\" // Remove `user` if you want the plugin to create the DB. password = \"DATABASE_PASSWORD\" // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = \"MYSQL_DATABASE_HOST\" name = \"MYSQL_DATABASE_NAME\" user = \"MYSQL_DATABASE_USER\" password = \"MYSQL_DATABASE_PASSWORD\" port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = setOf ( // Add your requested tasks to be analyzed, Example: \":app:assembleDebug\" , \":jar\" , \":assemble\" ) trackingBranches = setOf ( // requested tasks only analyzed in the branches you add here, Example: \"master\" , \"develop\" ) // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = setOf () trackAllBranchesEnabled = false // Optional: Default is False. outputPath = \"OUTPUT_REPORT_PATH\" // Optional: Default is project /build/ dir. } gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = 'DATABASE_PATH' name = 'DATABASE_NAME' // Don't add `.db` in the database name. user = 'DATABASE_USER' // Remove `user` if you want the plugin to create the DB. password = 'DATABASE_PASSWORD' // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = 'MYSQL_DATABASE_HOST' name = 'MYSQL_DATABASE_NAME' user = 'MYSQL_DATABASE_USER' password = 'MYSQL_DATABASE_PASSWORD' port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = [ // Add your requested tasks to be analyzed, Example: ':app:assembleDebug' , ':jar' , ':assemble' ] trackingBranches = [ // requested tasks only analyzed in the branches you add here, Example: 'master' , 'develop' ] // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = [] trackAllBranchesEnabled = false // Optional: Default is False. outputPath = 'OUTPUT_REPORT_PATH' // Optional: Default is project /build/ dir. } Important Notes The plugin will create one automatically if there isn't an SQLite database. You only need to fill in the name and path (Recommended). Both sqlite / mysql can be used to config local or ci databases. Both local and ci configs are optional. If using the plugin in your CI/CD make sure the CI=true environment variable exists in your CI system environments and the ci database is configured. The outputPath can be skipped, it will generate the report inside the project build directory. By enabling isTrackAllBranchesEnabled analytics will be kicked on all branches. isEnabled and isTrackAllBranchesEnabled are not mandatory since they have default values.","title":"Setup"},{"location":"setup/#setup","text":"To set up the plugin in your project, follow the below instructions:","title":"Setup"},{"location":"setup/#step-1","text":"Make sure your project uses Git VCS and Gradle version 6.1+ . Gradle Analytics Plugin uses Git terminal to get the branch names and latest HEAD commit hash. so It is required for your project to use Git VCS.","title":"Step 1"},{"location":"setup/#step-2","text":"Apply the Gradle Plugin to the root of your project. Kotlin Groovy plugins { id ( \"io.github.janbarari.gradle-analytics-plugin\" ) version \"1.0.0-beta9\" } plugins { id 'io.github.janbarari.gradle-analytics-plugin' version '1.0.0-beta9' } For legacy plugin application, see the Gradle Plugin Portal.","title":"Step 2"},{"location":"setup/#step-3","text":"Add plugin configuration in the root of your project. Kotlin Groovy gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = \"DATABASE_PATH\" name = \"DATABASE_NAME\" // Don't add `.db` in the database name. user = \"DATABASE_USER\" // Remove `user` if you want the plugin to create the DB. password = \"DATABASE_PASSWORD\" // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = \"MYSQL_DATABASE_HOST\" name = \"MYSQL_DATABASE_NAME\" user = \"MYSQL_DATABASE_USER\" password = \"MYSQL_DATABASE_PASSWORD\" port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = setOf ( // Add your requested tasks to be analyzed, Example: \":app:assembleDebug\" , \":jar\" , \":assemble\" ) trackingBranches = setOf ( // requested tasks only analyzed in the branches you add here, Example: \"master\" , \"develop\" ) // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = setOf () trackAllBranchesEnabled = false // Optional: Default is False. outputPath = \"OUTPUT_REPORT_PATH\" // Optional: Default is project /build/ dir. } gradleAnalyticsPlugin { enabled = true // Optional: By default it's True. database { local = sqlite { path = 'DATABASE_PATH' name = 'DATABASE_NAME' // Don't add `.db` in the database name. user = 'DATABASE_USER' // Remove `user` if you want the plugin to create the DB. password = 'DATABASE_PASSWORD' // Remove `password` if you want the plugin to create the DB. } ci = mysql { host = 'MYSQL_DATABASE_HOST' name = 'MYSQL_DATABASE_NAME' user = 'MYSQL_DATABASE_USER' password = 'MYSQL_DATABASE_PASSWORD' port = MYSQL_DATABASE_PORT // Optional: Default is 3306. } } trackingTasks = [ // Add your requested tasks to be analyzed, Example: ':app:assembleDebug' , ':jar' , ':assemble' ] trackingBranches = [ // requested tasks only analyzed in the branches you add here, Example: 'master' , 'develop' ] // Optional: Exclude modules that are not necessary like test or demo modules excludeModules = [] trackAllBranchesEnabled = false // Optional: Default is False. outputPath = 'OUTPUT_REPORT_PATH' // Optional: Default is project /build/ dir. } Important Notes The plugin will create one automatically if there isn't an SQLite database. You only need to fill in the name and path (Recommended). Both sqlite / mysql can be used to config local or ci databases. Both local and ci configs are optional. If using the plugin in your CI/CD make sure the CI=true environment variable exists in your CI system environments and the ci database is configured. The outputPath can be skipped, it will generate the report inside the project build directory. By enabling isTrackAllBranchesEnabled analytics will be kicked on all branches. isEnabled and isTrackAllBranchesEnabled are not mandatory since they have default values.","title":"Step 3"},{"location":"social-press/","text":"Social It's my pleasure that Gradle Analytics Plugin has been introduced in the below links: Gradle Newsletter (Oct 2022) Open Source Agenda Awesome Open Source","title":"Social/Press"},{"location":"social-press/#social","text":"It's my pleasure that Gradle Analytics Plugin has been introduced in the below links: Gradle Newsletter (Oct 2022) Open Source Agenda Awesome Open Source","title":"Social"},{"location":"special-thanks/","text":"Special Thanks I am very proud to give special thanks to those around me in making and presenting this open source project. I am grateful to Yazdan Sharifi( @yazdan-sharifi2020 ), who helped write the plugin report renders. Best regards, Mehdi","title":"Special Thanks"},{"location":"special-thanks/#special-thanks","text":"I am very proud to give special thanks to those around me in making and presenting this open source project. I am grateful to Yazdan Sharifi( @yazdan-sharifi2020 ), who helped write the plugin report renders. Best regards, Mehdi","title":"Special Thanks"},{"location":"third-party/","text":"Third party All third-party dependencies that are being used in the plugin source: Gradle API 7.6 Kotlin 1.6.20 Coroutines 1.6.3 Moshi 1.13.0 Jetbrains Exposed 0.38.1 Detekt 1.20.0-RC2 Mockk 1.12.4 mysql:mysql-connector-java:8.0.29 org.xerial:sqlite-jdbc:3.36.0.3 commons-io:commons-io:2.11.0 com.github.oshi:oshi-core:6.4.0","title":"Third party"},{"location":"third-party/#third-party","text":"All third-party dependencies that are being used in the plugin source: Gradle API 7.6 Kotlin 1.6.20 Coroutines 1.6.3 Moshi 1.13.0 Jetbrains Exposed 0.38.1 Detekt 1.20.0-RC2 Mockk 1.12.4 mysql:mysql-connector-java:8.0.29 org.xerial:sqlite-jdbc:3.36.0.3 commons-io:commons-io:2.11.0 com.github.oshi:oshi-core:6.4.0","title":"Third party"},{"location":"upcoming-milestone/","text":"Upcoming Milestone Finally, the first stable version of the plugin, planned for release in Milestone/1.0.1 , is scheduled to be published during the last week of May 2023. Upcoming Changes Fix bug report #105 Fix bug report #121 Upgrade gradle version to 8.0.2 Upgrade kotlin and other dependencies I'm sorry for the delay in the project. It was caused by unexpected problems, like losing my job and facing personal difficulties, which made it hard for me to contribute effectively. I would really appreciate it if you could donate to support the development of this plugin.","title":"Upcoming Milestone"},{"location":"upcoming-milestone/#upcoming-milestone","text":"Finally, the first stable version of the plugin, planned for release in Milestone/1.0.1 , is scheduled to be published during the last week of May 2023. Upcoming Changes Fix bug report #105 Fix bug report #121 Upgrade gradle version to 8.0.2 Upgrade kotlin and other dependencies I'm sorry for the delay in the project. It was caused by unexpected problems, like losing my job and facing personal difficulties, which made it hard for me to contribute effectively. I would really appreciate it if you could donate to support the development of this plugin.","title":"Upcoming Milestone"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 56bbe94c..d380debd 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,72 +2,72 @@ https://janbarari.github.io/gradle-analytics-plugin/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/changelog/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/community/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/donation/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/getting-report/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/license/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/privacy-policy/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/report-bug/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/request-feature/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/setup/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/social-press/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/special-thanks/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/third-party/ - 2023-05-25 + 2023-05-28 daily https://janbarari.github.io/gradle-analytics-plugin/upcoming-milestone/ - 2023-05-25 + 2023-05-28 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 9816f391..e6fb2b99 100644 Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ diff --git a/upcoming-milestone/index.html b/upcoming-milestone/index.html index 75e125d7..09214a35 100644 --- a/upcoming-milestone/index.html +++ b/upcoming-milestone/index.html @@ -517,11 +517,8 @@

Upcoming Milestone


I'm sorry for the delay in the project. It was caused by unexpected problems, like losing my job and facing personal difficulties, which made it hard for me to contribute effectively. I would really appreciate it if you could donate to support the development of this plugin.