<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>archive</title><link>https://archive-w.netlify.app/devops/build/gradle/</link><description>Recent content on archive</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://archive-w.netlify.app/devops/build/gradle/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://archive-w.netlify.app/devops/build/gradle/gradle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://archive-w.netlify.app/devops/build/gradle/gradle/</guid><description>&lt;h2 id="gradle入门到实战">
 Gradle入门到实战
 &lt;a class="anchor" href="#gradle%e5%85%a5%e9%97%a8%e5%88%b0%e5%ae%9e%e6%88%98">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>
&lt;h3 id="groovy语言的学习">
 Groovy语言的学习
 &lt;a class="anchor" href="#groovy%e8%af%ad%e8%a8%80%e7%9a%84%e5%ad%a6%e4%b9%a0">#&lt;/a>
&lt;/h3>
&lt;p class="warn">学习Geadle我们需要先来学习一下Groovy，很多同学估计听说过Groovy语言，有的也许没听说过，其实我们每天在配置Gradle的时候就是在跟Groovy接触了。Groovy是一门jvm语言，最终编译成class文件然后在jvm上执行，Java语言的特性Groovy都支持，我们可以混写Java和Groovy，就是在同一文件中可以混写， 注意，这里与Java和Kotlin可不一样，Java和Kotlin是可以互相调用，而不能在同一文件混写 。
&lt;br>&lt;br>Groovy的优势是什么呢？Groovy增强了Java的很多功能。比如解析xml文件，文件读写等，Groovy只需要几行代码就能搞定，而如果用Java则需要几十行代码，简单说就是使用Groovy实现某些功能比Java要少些很多代码。
&lt;br>&lt;br>好了，说了那么多&amp;quot;废话&amp;quot;，下面就具体来了解一下Groovy语言，我们只需要了解其中核心的一些使用就可以了，没必要完全了解，作为一门语言Groovy也算比较复杂的，但是我们学习Groovy是为了编写Gradle插件那就只需要了解其核心部分就可以了，其实从我的经验来说学习Groovy更多是为了写更少的代码来实现一些功能，否则我直接用Java写不就完了。&lt;/p>
&lt;ul>
&lt;li>
&lt;h4 id="1groovy的变量和方法声明">
 1.Groovy的变量和方法声明
 &lt;a class="anchor" href="#1groovy%e7%9a%84%e5%8f%98%e9%87%8f%e5%92%8c%e6%96%b9%e6%b3%95%e5%a3%b0%e6%98%8e">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>
&lt;p>Groovy使用def来声明变量，声明变量可以不加类型，运行的时候可以自动推断出变量类型，并且声明语句可以不加分号结尾，如下：&lt;/p>
&lt;div class="outer yosemite">&lt;div class="dot red">&lt;/div>&lt;div class="dot amber">&lt;/div>&lt;div class="dot green">&lt;/div>&lt;/div>
&lt;div class="code-toolbar">&lt;pre data-lang="groovy" data-line="" class="language-groovy line-numbers" style="max-height: none">&lt;code class="language-groovy">def i = 10
def str = &amp;quot;hello groovy&amp;quot;
def d = 1.25
&lt;/code>&lt;/pre>&lt;/div>
&lt;/li>
&lt;li>
&lt;p>def同样用来定义函数，Groovy中函数返回值可以是无类型的：&lt;/p>
&lt;div class="outer yosemite">&lt;div class="dot red">&lt;/div>&lt;div class="dot amber">&lt;/div>&lt;div class="dot green">&lt;/div>&lt;/div>
&lt;div class="code-toolbar">&lt;pre data-lang="groovy" data-line="" class="language-groovy line-numbers" style="max-height: none">&lt;code class="language-groovy">def showName(){
 &amp;quot;wang lei&amp;quot; //最后一行执行结果默认作为函数返回值，可以不加return
}
&lt;/code>&lt;/pre>&lt;/div>
&lt;/li>
&lt;li>
&lt;p>如果我们指定了函数的返回值类型，那么可以不加def关键字：&lt;/p>
&lt;div class="outer yosemite">&lt;div class="dot red">&lt;/div>&lt;div class="dot amber">&lt;/div>&lt;div class="dot green">&lt;/div>&lt;/div>
&lt;div class="code-toolbar">&lt;pre data-lang="groovy" data-line="" class="language-groovy line-numbers" style="max-height: none">&lt;code class="language-groovy">//定义函数
String showName(){
 &amp;quot;wang lei&amp;quot; //最后一行执行结果默认作为函数返回值
}
&lt;/code>&lt;/pre>&lt;/div>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;h4 id="2groovy的字符串">
 2.Groovy的字符串
 &lt;a class="anchor" href="#2groovy%e7%9a%84%e5%ad%97%e7%ac%a6%e4%b8%b2">#&lt;/a>
&lt;/h4>
&lt;p class="tip"> Groovy中字符串分为三种，我们一个个来看。&lt;/p></description></item><item><title/><link>https://archive-w.netlify.app/devops/build/gradle/usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://archive-w.netlify.app/devops/build/gradle/usage/</guid><description>&lt;ul>
&lt;li>
&lt;h2 id="目录结构">
 目录结构
 &lt;a class="anchor" href="#%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84">#&lt;/a>
&lt;/h2>
&lt;p class="warn">Gradle uses two main directories to perform and manage its work: the Gradle User Home directory and the Project Root directory.


 &lt;a href="https://docs.gradle.org/current/userguide/directory_layout.html" rel="noopener" target="_blank">参考&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://archive-w.netlify.app/.images/devops/build/gradle/usage/gradle-usage-02.png" alt="" width="49%">
&lt;img src="https://archive-w.netlify.app/.images/devops/build/gradle/usage/gradle-usage-03.png" alt="" width="50%">&lt;/p>
&lt;/li>
&lt;li>
&lt;h2 id="初始化脚本">
 初始化脚本
 &lt;a class="anchor" href="#%e5%88%9d%e5%a7%8b%e5%8c%96%e8%84%9a%e6%9c%ac">#&lt;/a>
&lt;/h2>
&lt;p class="warn">在项目构建之前进行初始化。


 &lt;a href="https://docs.gradle.org/current/userguide/init_scripts.html#init_scripts" rel="noopener" target="_blank">参考&lt;/a>&lt;/p>
&lt;ul>
&lt;li>
&lt;h3 id="基本用法">
 基本用法
 &lt;a class="anchor" href="#%e5%9f%ba%e6%9c%ac%e7%94%a8%e6%b3%95">#&lt;/a>
&lt;/h3>
&lt;p class="warn">初始化脚本（又名init 脚本）与 Gradle 中的其他脚本类似。但是，这些脚本是在构建开始之前运行的。
&lt;br>以下是几种可能的用途：&lt;/p>
&lt;ul>
&lt;li>设置企业范围的配置，例如在哪里可以找到自定义插件。&lt;/li>
&lt;li>根据当前环境设置属性，例如开发人员的计算机与持续集成服务器。&lt;/li>
&lt;li>提供构建所需的有关用户的个人信息，例如存储库或数据库身份验证凭据。&lt;/li>
&lt;li>定义特定于计算机的详细信息，例如 JDK 的安装位置。&lt;/li>
&lt;li>注册构建监听器。希望监听 Gradle 事件的外部工具可能会发现这很有用。&lt;/li>
&lt;li>注册构建记录器。您可以自定义 Gradle 如何记录它生成的事件。&lt;/li>
&lt;/ul>
&lt;p class="tip"> 初始化脚本的一个主要限制是它们无法访问buildSrc项目中的类。&lt;/p>
&lt;/li>
&lt;li>
&lt;h3 id="使用初始化脚本">
 使用初始化脚本
 &lt;a class="anchor" href="#%e4%bd%bf%e7%94%a8%e5%88%9d%e5%a7%8b%e5%8c%96%e8%84%9a%e6%9c%ac">#&lt;/a>
&lt;/h3>
&lt;p class="warn">使用 init 脚本有多种方法：
&lt;br>如果找到多个 init 脚本，它们都将按照下面指定的顺序执行。
&lt;br>给定目录中的脚本按字母顺序执行。例如，工具可以在命令行上指定一个 init 脚本，并在主目录中指定另一个 init 脚本来定义环境。这两个脚本都会在 Gradle 执行时运行。&lt;/p>
&lt;ul>
&lt;li>在命令行上指定一个文件。命令行选项后面是&lt;code>-I,--init-script &lt;/code>的路径。(命令行选项可以出现多次，每次都会添加另一个初始化脚本。如果命令行上指定的任何文件不存在，构建将失败。)&lt;/li>
&lt;li>init.gradle将一个名为（或init.gradle.ktsKotlin）的文件放入该目录中。$GRADLE_USER_HOME/&lt;/li>
&lt;li>.gradle将以（或.init.gradle.ktsKotlin）结尾的文件放入目录中。$GRADLE_USER_HOME/init.d/&lt;/li>
&lt;li>.gradle将以（或.init.gradle.ktsKotlin）结尾的文件放入Gradle 发行版的目录中。$GRADLE_HOME/init.d/&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;h3 id="编写初始化脚本">
 编写初始化脚本
 &lt;a class="anchor" href="#%e7%bc%96%e5%86%99%e5%88%9d%e5%a7%8b%e5%8c%96%e8%84%9a%e6%9c%ac">#&lt;/a>
&lt;/h3>
&lt;p class="warn">与 Gradle 构建脚本一样，init 脚本是 Groovy 或 Kotlin 脚本。每个 init 脚本都有一个与其关联的


 &lt;a href="https://docs.gradle.org/current/dsl/org.gradle.api.invocation.Gradle.html" rel="noopener" target="_blank">Gradle&lt;/a>实例。初始化脚本中的任何属性引用和方法调用都将委托给此Gradle实例。
&lt;br>每个 init 脚本还实现


 &lt;a href="https://docs.gradle.org/current/dsl/org.gradle.api.Script.html" rel="noopener" target="_blank">Script&lt;/a>接口。&lt;/p></description></item></channel></rss>