はじめに
筆者について
新卒3年目のデータエンジニアです.
- https://github.com/KazuSh1geru
- https://www.linkedin.com/in/%E5%92%8C%E5%8F%B2-%E9%AB%98%E8%8D%89%E6%9C%A8-7b912b2a6/
執筆の背景
初めてJARファイルを作成しようとした時、そのプロセスが意外と複雑であること、そして必要な情報がWeb上に十分に存在しないことに気づきました。これが、JARファイルの作成過程を詳細に解説するブログを書くことにした主な理由です。
このブログを通じて、同じような課題に直面するかもしれない他の開発者たちに向けて、参考となるTIPSを提供したいと思います。
JARファイルとは何か?
Java ARchiveの略で、Javaクラスファイルとリソースを一つのファイルにまとめたものです。
依存関係を含めて配布や実行が簡単になるため、Javaアプリケーションの管理と配布を効率的に行うことができます。
私は初めてJARファイルを触るきっかけとしては、SalesforceからGCP(BigQuery)へのデータパイプラインを開発がありました.
データパイプラインのパッケージとして、ApacheベースのSalesforceプラグインを使用しています.
このプラグインをJAR形式で保持する必要があります。
しくじり0: 欲しいファイル(JAR)が全然検索にヒットしない..
ゆとりエンジニアである私は、開発に用いるパッケージはパッケージ管理ツールでバージョン指定すれば手に入ると思っていました.
そうでなくても、公式ページのアーカイブページからダウンロードできるものだと思っていました.
ないパッケージは、自分で作る!
しくじり1: Javaプロジェクトをどうパッケージ化すればいいか?がわからない
今回開発したデータパイプライン(Cloud Data Fusion)がCDAPに依存していました。
CDAPとは、マルチクラウド環境でデータアプリケーションを構築・管理するためのアプリケーションプラットフォームです。
そのCDAPがJAVAで作成されていました。
紆余曲折あって、下記のパッケージまで辿り着きました。
https://github.com/data-integrations/salesforce/releases/tag/v1.6.2
これをプラグインとしてパッケージングできれば勝ちです。が、パッケージってどうやって作るんだ?となりました。
結論としては、mavenというJavaプロジェクトの管理ツールを使えば良いことまで分かりました.
プロジェクト管理ツールを使ってパッケージを作れるぞ。
Pythonで言えばpyproject.toml
があるように、他のプロジェクトでもパッケージ化するための方法がある前提を持つ。
しくじり2: パッケージ管理ツールの過去バージョンが見当たらない
mavenのバージョン3.6.3が必要だったのですが、ダウンロードページは最新版のみでした。
https://maven.apache.org/download.cgi
リリースノートはあるけど、ダウンロードできない.
https://maven.apache.org/ref/3.6.3
arvhiveはドメイン自体が別にあった.
https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
アーカイブ版は目立たないところにあるぞ!
この後、mavenを使用して無事JARファイルは作れました。
学び
扱い慣れていないファイルやパッケージは初めに使い方やコンセプトを理解すべきだと思いました。
それとともに、一般的なファイルの扱い方を参考にすべきだと思いました。