nologyance.net

日々のアウトプット

Gradleでオフラインビルド

オフライン環境でのビルド

インターネットに接続できない環境でGradleビルドする方法

--offline オプション

まさしく、といった名前のオプションがGradleには用意されています。 これをつけてタスクを実行すると、ネットワーク接続をせずにタスクを実行することが出来ます。

オフラインのままどうやって依存関係を解決するか

「--offline」オプションではキャッシュ及びMavenLocalリポジトリを利用して依存を解決します。 つまり、あらかじめGradleビルドを実行しておくか、MavenでビルドしてMavenLocalにキャッシュを行っておく必要があります。

別のマシンで準備する

他のマシンでビルドしたキャッシュを利用してオフラインビルドしたいというケースもあるかもしれませんが、 Gradleのキャッシュにはディレクトリ構成などのメタ情報が含まれているためなかなか再利用は難しいです。 プロジェクトへのディレクトリ構成がキャッシュを作成した環境と同じであれば再利用も可能かもしれません。(要検証) Mavenでビルドを行い、MavenLocalリポジトリをコピーして配置するのが現実的な手段かも。

go-offlineコマンド

Mavenにはオフラインビルド用のローカルリポジトリを作成するゴールが用意されています。 詳しくはこちらの記事をご覧ください。

https://takezoe.hatenablog.com/entry/20120302/p1

Gradle go-offline plugin

pluginとして公開してくれている方もいましたが、BOM形式(spring-dependency-plugin)に対応しておらず、課題があるようです。 BOMを利用していない、利用予定のないプロジェクトであれば採用の余地があるかもしれません。 ただし、個人の方が開発しているので、バグfixのスピード感には期待できないです。 https://github.com/mdietrichstein/gradle-offline-dependencies-plugin

Gradle maven pluginのinstallコマンド

Mavenの場合であれば、mvn installコマンドを実行すると プロジェクトのjarとpomを依存ライブラリごとローカルリポジトリに配置してくれますが、 いかにも互換がありそうなこのpluginでは同じことができないようです。 gradle installと実行しても、プロジェクト自身がローカルリポジトリに配置されるだけで 依存ライブラリは置き去りになってしまいます。

タスクを書く

自分でタスクを書いて解決するのもGradleっぽくていいですね。 https://chengl.com/gradle-offline-build/