Open3

gradleとは?

ふじしろふじしろ

参考:Gradle入門 - Qiita

Gradleとは?

AntやMavenに取って代わるとされるビルドツール。

Groovyと呼ばれるスクリプト言語で記述された設定ファイル。
GroovyはJVM上で動く。
IntelliJでは最初からGradleを利用することができる

ふじしろふじしろ

外部ライブラリを追加するには?

結論

build.gradledependencies { }に追加したいライブラリの情報を記述することでビルド時にダウンロードされる。

  • ライブラリを直接インストールしてプロジェクトに入れ込む必要性は低い。むしろ悪手と思われる。
  • Mavenのセントラルリポジトリに含まれるライブラリの場合はrepository { }mavenCentral()を記述しておく
  • ライブラリを調べると同じライブラリでもapiimplementationに別れていたりするが、理解が浅いうちはimplementationを用いるのが良さげ。(理由はGoogleさんが言ってる

参考

Gradle 依存関係 | IntelliJ IDEA

Gradle 依存関係を生成する
プロジェクトに追加された依存関係は、Gradle によって管理されます。依存関係を追加または管理する最良の方法は、build.gradle ファイルを使用することです。IntelliJ IDEA モジュール設定内で手動で設定した依存関係は、次の Gradle プロジェクトの再ロード時に破棄されます。

build.gradleファイルを使うのがベストとのこと。
手動で設定した依存関係は再ロードすると破棄されるらしい。

依存関係追加の手順Gradle依存関係を追加する | Gradle 依存関係 | IntelliJ IDEA

  1. エディターで build.gradle ファイルを開きます。
  2. ⌘ N を押して、生成コンテキストメニューを開きます。
  3. コンテキストメニューから依存関係の追加を選択します。
  4. 依存関係ツールウィンドウの検索フィールドで、依存関係の名前の入力を開始します。結果のリストで必要なものを選択し、追加をクリックします。
  • 依存関係ツールウィンドウの操作の詳細については、パッケージ検索を参照してください。
  1. プロジェクトを再ロードします。
  • IntelliJ IDEA は、build.gradle ファイルに依存関係を追加します。
  • IntelliJ IDEA は、Gradle ツールウィンドウの依存関係ノードとプロジェクトツールウィンドウの外部ライブラリにも依存関係を追加します。
  • 追加された依存関係に独自の推移的な依存関係がある場合、IntelliJ IDEA はそれらを両方のツールウィンドウに表示します。推移的な依存関係に加えて、IntelliJ IDEA は Gradle ツールウィンドウで循環依存関係も示します。
  • ソースセットの依存関係設定を追加すると、Gradle ツールウィンドウにも表示されます

GradleでJavaライブラリをビルドしよう|JavaのビルドとCIのキホン

依存関係を理解する | GradleでJavaライブラリをビルドしよう

さてビルドの際になぜファイルのダウンロードが行われたのでしょうか。これは build.gradle にかかれている以下の箇所が関係しています。
依存関係とは、そのプロジェクトのコンパイルや実行、テストに利用する他のライブラリやフレームワークのことです。ここでは以下の4種類の依存関係が宣言されています。

  1. ライブラリのユーザにも見える依存先である api
  2. ユーザには見えない内部的な依存先である implementation
  3. テストコードに利用している依存先である testImplementation
  4. 自動テスト実行時にのみ使う testRuntimeOnly

このZenn Bookによると、Gradleではプロジェクトをビルドする際にファイルのダウンロードを実行する。
このダウンロードはbuild.gradledependencies { }に記載された内容をもとに実行される。
->つまり、build.gradleに依存関係を記述するだけでファイルはダウンロードされる模様。

Gradle 依存関係 | IntelliJ IDEA

依存性の追加
依存性とはプロジェクトで使用する外部のライブラリです.

この記事によると、外部ライブラリ = 依存性 らしい。
従って、外部ライブラリの追加=依存性の追加 ということになる。
追加したい外部ライブラリの情報を調べ、
build.gradleファイルのdependencies { }の中に以下のように情報を書き込めばOKとのこと。

dependencies {
    //使いたいライブラリの情報を調べておいて,
    //ここに書き加える.
    compile group: 'グループID', name: 'アーティファクトID', version: 'バージョン'
}

ビルド依存関係を追加する  |  Android デベロッパー  |  Android Developers

この記事については、gradleそのものよりも記述の違いについての理解が深まった。
外部ライブラリを導入する際のdependencies { }の書き方には、以下の2種類があるらしい。

  1. バージョンや名前空間、ライブラリ名等を宣言する書き方
  • 例)implementation group: 'com.example.android', name: 'app-magic', version: '12.3'
  1. 省略形の書き方
  • 例)implementation 'com.example.android:app-magic:12.3'

依存関係のタイプ

プロジェクトに依存関係を追加するには、build.gradle ファイルの dependencies ブロックで、implementation などの依存関係コンフィグレーションを指定します。
たとえば、次に示すアプリ モジュールの build.gradle ファイルには 3 種類の依存関係が含まれています。

apply plugin: 'com.android.application'

android { ... }

dependencies {
    // Dependency on a local library module
    implementation project(":mylibrary")

    // Dependency on local binaries
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    implementation 'com.example.android:app-magic:12.3'
}

リモート バイナリへの依存関係

implementation 'com.example.android:app-magic:12.3'

これは、実際には次の省略形です。

implementation group: 'com.example.android', name: 'app-magic', version: '12.3'

これは、「com.example.android」名前空間グループ内に存在するバージョン 12.3 の「app-magic」ライブラリへの依存関係を宣言しています。

Gradle使い方メモ - Qiita

下記の項目が参考になった。文中のMeven2のセントラルリポジトリについては別にまとめる。

サードパーティのライブラリjarを使用する

Maven2 のセントラルリポジトリに存在する jar を指定する場合
Maven2 のセントラルリポジトリに存在する jar を指定する場合は、 build.gradle を以下のように記述する。

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
}

group は GroupId、 name は ArtifactId を指定する。
リポジトリからダウンロードした jar ファイルは、 %ユーザのホームフォルダ%.gradle\caches 以下に保存される。
ライブラリをキャッシュする場所を変更したい場合は、環境変数 GRADLE_USER_HOME に任意のフォルダのパスを設定すれば良い。

dependencies の部分は、以下のようにも書ける。

dependencies {
    compile 'org.apache.commons:commons-lang3:3.1'
}
ふじしろふじしろ

「Maven2セントラルリポジトリ」とは

【Maven】セントラルリポジトリについて | プログラミングマガジン
セントラルリポジトリは、Maveのライブラリ等が保管されているリポジトリで、URLを追加しなくてもデフォルトで利用できる。
->おそらく、Gradleの場合は、build.gradlerepository { }に記述しておくことで、ライブラリのDLが可能になる。

リポジトリの場所:Central Repository:

どんなライブラリがリポジトリに含まれているかは、下記の検索エンジンで探せる模様。
Maven Central Repository Search