Files
Gropify/assets/quick-start.html-f_E-gIx7.js
github-actions[bot] b6e2fda7eb Deploy to GitHub pages
2025-11-15 17:19:55 +00:00

494 lines
98 KiB
JavaScript

import{_ as s,o as n,c as a,e}from"./app-aH6YcK-Q.js";const l={},o=e(`<h1 id="quick-start" tabindex="-1"><a class="header-anchor" href="#quick-start" aria-hidden="true">#</a> Quick Start</h1><blockquote><p>Integrate <code>Gropify</code> into your project.</p></blockquote><h2 id="deploy-plugin" tabindex="-1"><a class="header-anchor" href="#deploy-plugin" aria-hidden="true">#</a> Deploy Plugin</h2><p><img src="https://img.shields.io/maven-central/v/com.highcapable.gropify/com.highcapable.gropify.gradle.plugin?logo=apachemaven&amp;logoColor=orange&amp;style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fgropify%2Fcom.highcapable.gropify.gradle.plugin%2Fmaven-metadata.xml&amp;logo=apachemaven&amp;logoColor=orange&amp;label=highcapable-maven-releases&amp;style=flat-square" alt="Maven metadata URL"></p><p><code>Gropify</code> dependencies are published on <strong>Maven Central</strong> and our public repository. You can configure the repository as follows.</p><p>We recommend using Gradle version <code>7.x.x</code> or higher, and recommend using Kotlin DSL as the Gradle build script language. This documentation will no longer detail how to use it in Groovy DSL.</p><p>We recommend using the new <code>pluginManagement</code> method for deployment, which is a feature added since Gradle version <code>7.x.x</code>.</p><p>If your project is still using <code>buildscript</code> for management, we recommend migrating to the new method. Instructions for the old version will no longer be provided here.</p><p>First, configure the plugin repository in your project&#39;s <code>settings.gradle.kts</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">pluginManagement</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">repositories</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">gradlePluginPortal</span><span style="color:#ADBAC7;">() </span><span style="color:#768390;">// Optional</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">google</span><span style="color:#ADBAC7;">() </span><span style="color:#768390;">// Optional</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mavenCentral</span><span style="color:#ADBAC7;">() </span><span style="color:#768390;">// Required</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// (Optional) You can add this URL to use our public repository</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// This repository is added as an alternative when Sonatype-OSS fails to publish dependencies</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// For details, please visit: https://github.com/HighCapable/maven-repository</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">maven</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;https://raw.githubusercontent.com/HighCapable/maven-repository/main/repository/releases&quot;</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then add the <code>Gropify</code> plugin dependency in <code>plugin</code> in <code>settings.gradle.kts</code>. Please note <strong>do not</strong> add <code>apply false</code> after it.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">id</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;com.highcapable.gropify&quot;</span><span style="color:#ADBAC7;">) version </span><span style="color:#96D0FF;">&quot;&lt;version&gt;&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Please replace <code>&lt;version&gt;</code> with the version shown at the top of this section.</p><p>After completing the above configuration, run Gradle sync once.</p><p><code>Gropify</code> will automatically search for <code>gradle.properties</code> files in the root project and each subproject, read the property key-values in them, and generate corresponding code for each project.</p><div class="custom-container warning"><p class="custom-container-title">Notice</p><p><code>Gropify</code> can only be applied to <code>settings.gradle.kts</code>, configuring it once will take effect globally. Please do not apply it to <code>build.gradle.kts</code>, otherwise the functionality will be invalid.</p></div><h2 id="feature-configuration" tabindex="-1"><a class="header-anchor" href="#feature-configuration" aria-hidden="true">#</a> Feature Configuration</h2><p>You can configure <code>Gropify</code> to implement customization and personalized features.</p><p><code>Gropify</code> provides relatively rich customizable features. Below are the descriptions and configuration methods for these features.</p><p>Please add the <code>gropify</code> method block in your <code>settings.gradle.kts</code> to start configuring <code>Gropify</code>.</p><p>To use in Groovy DSL, please change all variable <code>=</code> to spaces, remove <code>is</code> before <code>Enabled</code>.</p><p>If you encounter a <code>Gradle DSL method not found</code> error, the solution is to migrate to Kotlin DSL.</p><p>If you don&#39;t want to use Kotlin DSL entirely, you can also migrate only <code>settings.gradle</code> to <code>settings.gradle.kts</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">gropify</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enable Gropify, setting it to \`false\` will disable all features.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable debug mode.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can help us identify the problem by enabling this option</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// to print more debugging information in the logs.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: THIS IS ONLY FOR DEBUGGING!</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The debug log will contain your local environment,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// which may contain sensitive information.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Please be sure to protect this information.</span></span>
<span class="line"><span style="color:#ADBAC7;"> debugMode </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><code>Gropify</code>&#39;s configuration mode is divided into three types: <code>global</code> global configuration, and <code>rootProject</code>, <code>projects</code> root project and subproject configuration.</p><p>You can continue to configure and integrate the configuration of the parent project in the child code blocks.</p><p>All configurations below are performed in the <code>gropify</code> method block.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Global configuration.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// You can modify configurations in all projects in the global configuration.</span></span>
<span class="line"><span style="color:#768390;">// Configurations not declared in each project will use the global configuration.</span></span>
<span class="line"><span style="color:#768390;">// The functions in each configuration method block are exactly the same.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// You can refer to the configuration methods of root project and subprojects below.</span></span>
<span class="line"><span style="color:#DCBDFB;">global</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Common configuration.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">common</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;common&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Build script configuration.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">buildscript</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;buildscript&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Android project configuration.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;android&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// JVM project configuration.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">jvm</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;jvm&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Kotlin Multiplatform project configuration.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">kmp</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;kmp&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Root project configuration.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// This is a special configuration method block that can only be used for the root project.</span></span>
<span class="line"><span style="color:#DCBDFB;">rootProject</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">common</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;common&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">buildscript</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;buildscript&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;android&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">jvm</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;jvm&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">kmp</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;kmp&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Other projects and subprojects configuration.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// Fill in the full name of the project you need to configure in the</span></span>
<span class="line"><span style="color:#768390;">// method parameters to configure the corresponding project.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// If the current project is a subproject, you must include the &quot;:&quot; before</span></span>
<span class="line"><span style="color:#768390;">// the subproject name, such as &quot;:app&quot;.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// If the current project is a nested subproject, such as app → sub,</span></span>
<span class="line"><span style="color:#768390;">// you need to use &quot;:&quot; to separate multiple subprojects, such as &quot;:app:sub&quot;.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// The name of the root project cannot be used directly to configure subprojects,</span></span>
<span class="line"><span style="color:#768390;">// please use &quot;rootProject&quot;.</span></span>
<span class="line"><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#768390;">// You can configure multiple projects and subprojects at the same time by filling</span></span>
<span class="line"><span style="color:#768390;">// in an array of full project names in the method parameters to</span></span>
<span class="line"><span style="color:#768390;">// configure each corresponding project.</span></span>
<span class="line"><span style="color:#DCBDFB;">projects</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;:app&quot;</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">&quot;:modules:library1&quot;</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">&quot;:modules:library2&quot;</span><span style="color:#ADBAC7;">) {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">common</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;common&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">buildscript</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;buildscript&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;android&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">jvm</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;jvm&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">kmp</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Configure &quot;kmp&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>You can continue below to learn how to configure the features in each method block.</p><h3 id="common-configuration" tabindex="-1"><a class="header-anchor" href="#common-configuration" aria-hidden="true">#</a> Common Configuration</h3><p>Here you can configure related features for all configuration types at the same time. The configurations here will be applied down to <a href="#build-script-configuration">Build Script Configuration</a>, <a href="#android-project-configuration">Android Project Configuration</a>, <a href="#jvm-project-configuration">JVM Project Configuration</a>, <a href="#kotlin-multiplatform-project-configuration">Kotlin Multiplatform Project Configuration</a>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">common</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enable feature.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can set [buildscript], [android], [jvm], [kmp] separately.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to exclude the non-string type key-values content.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled, key-values and content that are not</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// string types will be excluded from properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> excludeNonStringValue </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to use type auto conversion.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled, the type in the properties&#39; key-values will be</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// automatically identified and converted to the corresponding type.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// After enabling, if you want to force the content of a key-values to be a string type,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// you can use single quotes or double quotes to wrap the entire string.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: After disabled this function, the functions mentioned above will also be invalid.</span></span>
<span class="line"><span style="color:#ADBAC7;"> useTypeAutoConversion </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to use key-values content interpolation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, after enabling it will automatically identify</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// the \`\${...}\` content in the properties&#39; key-values content and replace it.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Note: The interpolated content will only be looked up from the</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// current (current configuration file) properties&#39; key-values list.</span></span>
<span class="line"><span style="color:#ADBAC7;"> useValueInterpolation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set exists property files.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The property files will be automatically obtained from the root directory</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// of the current root project,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// subproject and user directory according to the file name you set.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// By default, will add &quot;gradle.properties&quot; if [addDefault] is \`true\`.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can add multiple sets of property files name, they will be read in order.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: Generally there is no need to modify this setting,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// an incorrect file name will result in obtaining empty key-values content.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">existsPropertyFiles</span><span style="color:#ADBAC7;">(</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some-other-1.properties&quot;</span><span style="color:#ADBAC7;">,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some-other-2.properties&quot;</span><span style="color:#ADBAC7;">,</span></span>
<span class="line"><span style="color:#ADBAC7;"> addDefault </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"><span style="color:#ADBAC7;"> )</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set a permanent list of properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Here you can set some key-values that must exist, these key-values will be</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// generated regardless of whether they can be obtained from the properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// These keys use the content of the properties&#39; key if it exists,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// use the content set here if it does not exist.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: Special symbols and spaces cannot exist in properties&#39; key names,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// otherwise the generation may fail.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">permanentKeyValues</span><span style="color:#ADBAC7;">(</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;permanent.some.key1&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#96D0FF;">&quot;some_value_1&quot;</span><span style="color:#ADBAC7;">,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;permanent.some.key2&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#96D0FF;">&quot;some_value_2&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;"> )</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set a replacement list of properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Here you can set some key-values that need to be replaced, these key-values</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// will be replaced the existing properties&#39; key-values, if not exist, they will be ignored.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The key-values set here will also overwrite the key-values set in [permanentKeyValues].</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">replacementKeyValues</span><span style="color:#ADBAC7;">(</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some.key1&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#96D0FF;">&quot;new.value1&quot;</span><span style="color:#ADBAC7;">,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some.key2&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#96D0FF;">&quot;new.value2&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;"> )</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set a key list of properties&#39; key-values name that need to be excluded.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Here you can set some key names that you want to exclude from</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// known properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// These keys are excluded if they are present in the properties&#39; key,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// will not appear in the generated code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: If you exclude key-values set in [permanentKeyValues], then they will</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// only change to the initial key-values content you set and continue to exist.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">excludeKeys</span><span style="color:#ADBAC7;">(</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;exclude.some.key1&quot;</span><span style="color:#ADBAC7;">,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;exclude.some.key2&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;"> )</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set a key list of properties&#39; key-values name that need to be included.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Here you can set some key value names that you want to include from</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// known properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// These keys are included if the properties&#39; key exists,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// unincluded keys will not appear in the generated code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">includeKeys</span><span style="color:#ADBAC7;">(</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;include.some.key1&quot;</span><span style="color:#ADBAC7;">,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;include.some.key2&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;"> )</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set properties&#39; key-values rules.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can set up a set of key-values rules,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// use [ValueRule] to create new rule for parsing the obtained key-values content.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// These key-values rules are applied when properties&#39; keys exist.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">keyValuesRules</span><span style="color:#ADBAC7;">(</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some.key1&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#DCBDFB;">ValueRule</span><span style="color:#ADBAC7;"> { </span><span style="color:#F47067;">if</span><span style="color:#ADBAC7;"> (it.</span><span style="color:#DCBDFB;">contains</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;_&quot;</span><span style="color:#ADBAC7;">)) it.</span><span style="color:#DCBDFB;">replace</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;_&quot;</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">&quot;-&quot;</span><span style="color:#ADBAC7;">) </span><span style="color:#F47067;">else</span><span style="color:#ADBAC7;"> it },</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some.key2&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#DCBDFB;">ValueRule</span><span style="color:#ADBAC7;"> { </span><span style="color:#96D0FF;">&quot;</span><span style="color:#6CB6FF;">$it</span><span style="color:#96D0FF;">-value&quot;</span><span style="color:#ADBAC7;"> },</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can also specify the expected type class,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// the type you specify will be used during generation,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// and an exception will be thrown if the type cannot be converted correctly.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// If the [useTypeAutoConversion] is not enabled, this parameter will be ignored.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;some.key3&quot;</span><span style="color:#ADBAC7;"> to </span><span style="color:#DCBDFB;">ValueRule</span><span style="color:#ADBAC7;">(Int::</span><span style="color:#DCBDFB;">class</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"><span style="color:#ADBAC7;"> )</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set where to find properties&#39; key-values.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Defaults are [GropifyLocation.CurrentProject], [GropifyLocation.RootProject].</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can set this up using the following types.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - [GropifyLocation.CurrentProject]</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - [GropifyLocation.RootProject]</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - [GropifyLocation.Global]</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - [GropifyLocation.System]</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - [GropifyLocation.SystemEnv]</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// We will generate properties&#39; key-values in sequence from the locations you set,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// the order of the generation locations follows the order you set.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Risk warning: [GropifyLocation.Global], [GropifyLocation.System],</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// [GropifyLocation.SystemEnv] may have keys and certificates,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// please manage the generated code carefully.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">locations</span><span style="color:#ADBAC7;">(GropifyLocation.CurrentProject, GropifyLocation.RootProject)</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>When referencing <code>GropifyLocation</code>, the build script may generate the following at the top of the build script when used with IDE auto-import.</p><div class="language-kotlin" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">import</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">com.highcapable.gropify.plugin.config.type.GropifyLocation</span></span>
<span class="line"></span></code></pre></div><p><code>Gropify</code> does alias processing for this, you can directly delete this import statement.</p></div><h3 id="build-script-configuration" tabindex="-1"><a class="header-anchor" href="#build-script-configuration" aria-hidden="true">#</a> Build Script Configuration</h3><p>The code generated in the build script can be directly used by the current <code>build.gradle.kts</code>, <code>build.gradle</code>.</p><p>The configuration here includes the configuration in <code>common</code>, and you can override it.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">buildscript</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom buildscript extension name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;gropify&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> extensionName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;gropify&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container warning"><p class="custom-container-title">Notice</p><p>Gradle also has a <code>buildscript</code> method block, please be careful to use the correct DSL level.</p></div><h3 id="android-project-configuration" tabindex="-1"><a class="header-anchor" href="#android-project-configuration" aria-hidden="true">#</a> Android Project Configuration</h3><p>The content in this configuration block only takes effect for projects with AGP.</p><p>The configuration here includes the configuration in <code>common</code>, and you can override it.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated directory path.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can fill in the path relative to the current project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Format example: &quot;path/to/your/src/main&quot;, the &quot;src/main&quot; is a fixed suffix.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;build/generated/gropify/src/main&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// We recommend that you set the generated path under the &quot;build&quot; directory,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// which is ignored by version control systems by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> generateDirPath </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;build/generated/gropify&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom deployment \`sourceSet\` name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// If your project source code deployment name is not default, you can customize it here.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;main&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> sourceSetName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;main&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated package name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Android projects use the \`namespace\` in the \`android\` configuration method block</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The &quot;generated&quot; is a fixed suffix that avoids conflicts with your own namespaces,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// if you don&#39;t want this suffix, you can refer to [isIsolationEnabled].</span></span>
<span class="line"><span style="color:#ADBAC7;"> packageName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;com.example.mydemo&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated class name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is use the name of the current project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The &quot;Properties&quot; is a fixed suffix to distinguish it from your own class names.</span></span>
<span class="line"><span style="color:#ADBAC7;"> className </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;MyDemo&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to use Kotlin language generation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled will generate Kotlin code,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// disabled will generate Java code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: This option will be disabled when this project is a pure Java project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> useKotlin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable restricted access.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Disabled by default, when enabled will add the \`internal\` modifier to</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// generated Kotlin classes or remove the \`public\` modifier to generated Java classes.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isRestrictedAccessEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable code isolation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled will generate code in an</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// isolated package suffix &quot;generated&quot; to avoid conflicts with other projects that</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// also use or not only Gropify to generate code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: If you disable this option, please make sure that there are no other projects</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// that also use or not only Gropify to generate code to avoid conflicts.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isIsolationEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to use manifest placeholders&#39; generation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// </span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Disabled by default, when enabled will synchronize the properties&#39; key-values</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// to the \`manifestPlaceholders\` in the \`android\` configuration method block.</span></span>
<span class="line"><span style="color:#ADBAC7;"> manifestPlaceholders </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="jvm-project-configuration" tabindex="-1"><a class="header-anchor" href="#jvm-project-configuration" aria-hidden="true">#</a> JVM Project Configuration</h3><p>The content in this configuration block only takes effect for pure JVM projects (including Kotlin and Java projects). For Android projects, please refer to <a href="#android-project-configuration">Android Project Configuration</a> for configuration.</p><p>The configuration here includes the configuration in <code>common</code>, and you can override it.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">jvm</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated directory path.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can fill in the path relative to the current project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Format example: &quot;path/to/your/src/main&quot;, the &quot;src/main&quot; is a fixed suffix.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;build/generated/gropify/src/main&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// We recommend that you set the generated path under the &quot;build&quot; directory,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// which is ignored by version control systems by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> generateDirPath </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;build/generated/gropify&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom deployment \`sourceSet\` name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// If your project source code deployment name is not default, you can customize it here.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;main&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> sourceSetName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;main&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated package name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Java, Kotlin projects use the \`project.group\` of the project settings by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The &quot;generated&quot; is a fixed suffix that avoids conflicts with your own namespaces,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// if you don&#39;t want this suffix, you can refer to [isIsolationEnabled].</span></span>
<span class="line"><span style="color:#ADBAC7;"> packageName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;com.example.mydemo&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated class name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is use the name of the current project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The &quot;Properties&quot; is a fixed suffix to distinguish it from your own class names.</span></span>
<span class="line"><span style="color:#ADBAC7;"> className </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;MyDemo&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to use Kotlin language generation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled will generate Kotlin code,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// disabled will generate Java code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: This option will be disabled when this project is a pure Java project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> useKotlin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable restricted access.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Disabled by default, when enabled will add the \`internal\` modifier to</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// generated Kotlin classes or remove the \`public\` modifier to generated Java classes.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isRestrictedAccessEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable code isolation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled will generate code in an</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// isolated package suffix &quot;generated&quot; to avoid conflicts with other projects that</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// also use or not only Gropify to generate code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: If you disable this option, please make sure that there are no other projects</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// that also use or not only Gropify to generate code to avoid conflicts.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isIsolationEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="kotlin-multiplatform-project-configuration" tabindex="-1"><a class="header-anchor" href="#kotlin-multiplatform-project-configuration" aria-hidden="true">#</a> Kotlin Multiplatform Project Configuration</h3><p>The content in this configuration block only takes effect for projects with the Kotlin Multiplatform plugin.</p><p>The configuration here includes the configuration in <code>common</code>, and you can override it.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">kmp</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated directory path.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can fill in the path relative to the current project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Format example: &quot;path/to/your/src/main&quot;, the &quot;src/main&quot; is a fixed suffix.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;build/generated/gropify/src/main&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// We recommend that you set the generated path under the &quot;build&quot; directory,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// which is ignored by version control systems by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> generateDirPath </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;build/generated/gropify&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom deployment \`sourceSet\` name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// If your project source code deployment name is not default, you can customize it here.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is &quot;commonMain&quot;.</span></span>
<span class="line"><span style="color:#ADBAC7;"> sourceSetName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;commonMain&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated package name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Kotlin Multiplatform projects use the \`project.group\` of the project settings</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// In a Kotlin Multiplatform project, if the AGP plugin is also applied,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// the \`namespace\` will still be used as the package name by default.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The &quot;generated&quot; is a fixed suffix that avoids conflicts with your own namespaces,</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// if you don&#39;t want this suffix, you can refer to [isIsolationEnabled].</span></span>
<span class="line"><span style="color:#ADBAC7;"> packageName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;com.example.mydemo&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Custom generated class name.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Default is use the name of the current project.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// The &quot;Properties&quot; is a fixed suffix to distinguish it from your own class names.</span></span>
<span class="line"><span style="color:#ADBAC7;"> className </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;MyDemo&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable restricted access.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Disabled by default, when enabled will add the \`internal\` modifier to</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// generated Kotlin classes.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isRestrictedAccessEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Whether to enable code isolation.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Enabled by default, when enabled will generate code in an</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// isolated package suffix &quot;generated&quot; to avoid conflicts with other projects that</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// also use or not only Gropify to generate code.</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// - Note: If you disable this option, please make sure that there are no other projects</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// that also use or not only Gropify to generate code to avoid conflicts.</span></span>
<span class="line"><span style="color:#ADBAC7;"> isIsolationEnabled </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="usage-examples" tabindex="-1"><a class="header-anchor" href="#usage-examples" aria-hidden="true">#</a> Usage Examples</h2><p>Below is a project&#39;s <code>gradle.properties</code> configuration file.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">project.groupName</span><span style="color:#ADBAC7;">=com.highcapable.gropifydemo</span></span>
<span class="line"><span style="color:#F47067;">project.description</span><span style="color:#ADBAC7;">=Hello Gropify Demo!</span></span>
<span class="line"><span style="color:#F47067;">project.version</span><span style="color:#ADBAC7;">=1.0.0</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>In the build script <code>build.gradle.kts</code>, we can directly use these key-values as shown below.</p><p>Here is an example of the Maven publish configuration section.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">publications</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">&lt;</span><span style="color:#F69D50;">MavenPublication</span><span style="color:#ADBAC7;">&gt;(</span><span style="color:#96D0FF;">&quot;maven&quot;</span><span style="color:#ADBAC7;">) {</span></span>
<span class="line"><span style="color:#ADBAC7;"> groupId </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> gropify.project.groupName</span></span>
<span class="line"><span style="color:#ADBAC7;"> version </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> gropify.project.version</span></span>
<span class="line"><span style="color:#ADBAC7;"> pom.description.</span><span style="color:#DCBDFB;">set</span><span style="color:#ADBAC7;">(gropify.project.description)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">from</span><span style="color:#ADBAC7;">(components[</span><span style="color:#96D0FF;">&quot;java&quot;</span><span style="color:#ADBAC7;">])</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Similarly, you can also call the generated key-values in the current project.</p><blockquote><p>Kotlin</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> groupName </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> GropifyDemoProperties.PROJECT_GROUP_NAME</span></span>
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> description </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> GropifyDemoProperties.PROJECT_DESCRIPTION</span></span>
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> version </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> GropifyDemoProperties.PROJECT_VERSION</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><blockquote><p>Java</p></blockquote><div class="language-java line-numbers-mode" data-ext="java"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">var</span><span style="color:#F69D50;"> </span><span style="color:#ADBAC7;">groupName</span><span style="color:#F69D50;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> GropifyDemoProperties.PROJECT_GROUP_NAME;</span></span>
<span class="line"><span style="color:#F47067;">var</span><span style="color:#F69D50;"> </span><span style="color:#ADBAC7;">description</span><span style="color:#F69D50;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> GropifyDemoProperties.PROJECT_DESCRIPTION;</span></span>
<span class="line"><span style="color:#F47067;">var</span><span style="color:#F69D50;"> </span><span style="color:#ADBAC7;">version</span><span style="color:#F69D50;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> GropifyDemoProperties.PROJECT_VERSION;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Let&#39;s take another example with an Android project.</p><p>In Android projects, many repetitive and fixed properties usually need to be configured, such as <code>targetSdk</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">project.namespace</span><span style="color:#ADBAC7;">=com.highcapable.gropifydemo</span></span>
<span class="line"><span style="color:#F47067;">project.appName</span><span style="color:#ADBAC7;">=Gropify Demo</span></span>
<span class="line"><span style="color:#F47067;">project.compileSdk</span><span style="color:#ADBAC7;">=36</span></span>
<span class="line"><span style="color:#F47067;">project.targetSdk</span><span style="color:#ADBAC7;">=36</span></span>
<span class="line"><span style="color:#F47067;">project.minSdk</span><span style="color:#ADBAC7;">=26</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>When you set <code>useTypeAutoConversion = true</code>, <code>Gropify</code> will try to convert it to the corresponding type during the entity class generation process under the default configuration.</p><p>For example, the key-values used below can be identified as string and integer types, which can be directly used by the project configuration.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> namespace </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> gropify.project.namespace</span></span>
<span class="line"><span style="color:#ADBAC7;"> compileSdk </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> gropify.project.compileSdk</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">defaultConfig</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> minSdk </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> gropify.project.minSdk</span></span>
<span class="line"><span style="color:#ADBAC7;"> targetSdk </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> gropify.project.targetSdk</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>When you set <code>manifestPlaceholders = true</code>, Gropify will automatically synchronize these properties&#39; key-values to <code>manifestPlaceholders</code> in the android configuration method block.</p><p>You can then use these placeholders directly in <code>AndroidManifest.xml</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-xml line-numbers-mode" data-ext="xml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">&lt;</span><span style="color:#8DDB8C;">manifest</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">xmlns:android</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color:#ADBAC7;">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> &lt;</span><span style="color:#8DDB8C;">application</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:label</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">&quot;\${project.appName}&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">android:icon</span><span style="color:#ADBAC7;">=</span><span style="color:#96D0FF;">&quot;@mipmap/ic_launcher&quot;</span><span style="color:#ADBAC7;">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> ...</span></span>
<span class="line"><span style="color:#ADBAC7;"> &lt;/</span><span style="color:#8DDB8C;">application</span><span style="color:#ADBAC7;">&gt;</span></span>
<span class="line"><span style="color:#ADBAC7;">&lt;/</span><span style="color:#8DDB8C;">manifest</span><span style="color:#ADBAC7;">&gt;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>You no longer need to use <code>buildConfigField</code> to add code to <code>BuildConfig</code>. With the property key-value code generated by <code>Gropify</code>, you can manage your project more flexibly.</p><p>You can also use interpolation <code>\${...}</code> in property key-values to reference each other&#39;s content, but recursive references are not allowed.</p><p>When you set <code>useValueInterpolation = true</code>, <code>Gropify</code> will automatically merge these referenced contents to the corresponding positions.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">project.name</span><span style="color:#ADBAC7;">=MyDemo</span></span>
<span class="line"><span style="color:#F47067;">project.developer.name</span><span style="color:#ADBAC7;">=myname</span></span>
<span class="line"><span style="color:#F47067;">project.url</span><span style="color:#ADBAC7;">=https://github.com/\${project.developer.name}/\${project.name}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If you add <code>GropifyLocation.SystemEnv</code> to <code>locations</code>, you can also directly reference system environment variables.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;"># Use the $USER environment variable in Linux or macOS systems to get the current username.</span></span>
<span class="line"><span style="color:#F47067;">project.developer.name</span><span style="color:#ADBAC7;">=\${USER}</span></span>
<span class="line"><span style="color:#768390;"># Assume you have a system environment variable called SECRET_KEY (PLEASE BE SURE TO BE SAFE).</span></span>
<span class="line"><span style="color:#F47067;">project.secretKey</span><span style="color:#ADBAC7;">=\${SECRET_KEY}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container warning"><p class="custom-container-title">Notice</p><p>This feature is provided by <code>Gropify</code>. Native <code>gradle.properties</code> does not support this feature.</p><p>The interpolated content is searched and replaced from top to bottom through the <code>locations</code> hierarchy. If there are duplicate key names, the last found content will be used for replacement.</p></div><h2 id="possible-issues" tabindex="-1"><a class="header-anchor" href="#possible-issues" aria-hidden="true">#</a> Possible Issues</h2><p>If your project only has a root project and no subprojects are imported, and the extension method cannot be generated normally at this time, you can migrate your root project to a subproject and import this subproject in <code>settings.gradle.kts</code>, which can solve this problem.</p><p>We generally recommend categorizing the functions of the project, with the root project only used to manage plugins and some configurations.</p><h2 id="limitations" tabindex="-1"><a class="header-anchor" href="#limitations" aria-hidden="true">#</a> Limitations</h2><p><code>Gropify</code> cannot generate extension methods in <code>settings.gradle.kts</code> because it is upstream of <code>Gropify</code>.</p>`,98),p=[o];function i(c,t){return n(),a("div",null,p)}const d=s(l,[["render",i],["__file","quick-start.html.vue"]]);export{d as default};