0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

build.gradleのbuildscriptとpluginsの違い

Posted at

背景

Gradleのbuild.gradleには様々な記法があります。その中でもbuildscriptpluginsの違いがわからなかったので調べてみました。

build.gradleの記述言語はGroovyを使用しますが、Kotlinでも本質は同じです。

buildscript

buildscriptではbuild.gradleの中で使用するプラグインなどを指定します。

  • 社内でリポジトリを運用していて、そこでGradleプラグインを管理しているような場合はrepositoryの中に追記します。
  • dependanciesにはbuild.gradleの中で使いたいプラグインのclasspathを指定します。
  • ここで指定するのはあくまでbuild.gradleの中で使いたいプラグインを指定するのであって、アプリケーション内で使いたいライブラリ (たとえばAWS SDKなど)はここに書きません。
  • dependanciesに追加したプラグインはapply pluginで適用します。プラグインでないライブラリの場合はこれは不要です。
build.gradle
buildscript {
    repositories {
        gradlePluginPortal()
        mavenCentral()
        maven { 
            url 'https://my-internal-repository.example.com/'
        }    
    }
    dependencies {
        classpath "org.jlleitschuh.gradle:ktlint-gradle:12.1.1"
    }
}

apply plugin: "org.jlleitschuh.gradle.ktlint"

dependanciesに書くclasspathapply pluginの記法は異なります。考えてもよくわからないので使用したいライブラリがある場合はGradle Plugin Portalで検索してコピペしましょう。

plugins

pluginsも同様にbuild.gradleの中で使いたいプラグインを指定します。

  • リポジトリの設定などはありません。
  • 使いたいプラグインとそのバージョンを指定します。プラグインでないものは指定できません。
  • Core Pluginに指定されているものは省略記法が使えます。
build.gradle
plugins {
    id 'java'
    id "org.jlleitschuh.gradle.ktlint" version "12.1.1"
}

で、どっち使うの?

pluginsを使うことが推奨されています。

pluginsは簡潔でわかりやすいですが、buildscriptはやや冗長です。また、リファレンスではbuildscriptはレガシーとされていますので積極的には使わないほうがよいでしょう。

ただ、見てわかるようにpluginsの方にはrepositoriesの設定がありません。
実はデフォルトではpluginsCore PluginGradle Plugin Portalにあるプラグインしか指定できません。つまり、これらで管理されていないプラグインを使用できないわけです。
そのような場合はbuildscriptを使うのも手でしょう。

もし、どうしてもpluginsを使いつつ、独自のリポジトリのプラグインも使いたい場合はsettings.gradlepluginManagementのブロックを作成してリポジトリを指定します。このあたりの説明は下記の記事などを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?