メモ : 【Java】pom.xmlに記載するgroupId等の調べ方

#**背景**
いつもSpring(Eclipse)で開発していて、外部ライブラリーを使う時は訳も分からずに
Javaのビルド・パス画面で外部jarの追加をして、使えるようになった～って:slight_smile:やってました。

最近Javaで色々書いてるうちに、あれ？もしやその作業は
プログラムが依存するライブラリを指定するのにpom.xmlに追記するってことなのね
と薄々分かってきました。
![背景.png](https://qiita-image-store.s3.amazonaws.com/0/237418/955f50fb-1ca6-e619-071e-d040986b446a.png)
じゃあもう外部jarの追加から卒業しよう:thumbsup_tone3:って思ったんだけど
あれ？ダウンロードしたjarだけじゃ **`<groupId>`**が わかんないじゃん:frowning2:というわけで
調べた内容を書き残します。

依存するライブラリを指定するには、
pom.xmlの**`<dependencies>`**タグ内に**`<dependency>`**タグを追加します。こんな感じで
ちなみにこれは、前回の[SFTPでRaspberry Piのデータを取得する](https://qiita.com/tedkuma/items/91021e9160ef9ab38087)で使用したjschの記載です。

```pom.xml
    <dependencies>
		<dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
        </dependency>
    </dependencies>
```
**`<dependency>`**タグの中には**`<groupId>``<artifactId>``<version>`**の3つの要素があります。
これらを正しく指定することで依存関係を認識してくれるんですね。
#**groupId, artifactId, version に指定する値の調べ方**
じゃあその要素どうやって書けばいいの～？適当に書いたってダメですよね。
Maven のデフォルトリポジトリは **[こちら](http://repo1.maven.org/maven2)** だそうです。
groupId や artifactId に指定する値は、この中に入っています。

じゃあ早速jschを探してみます。com.jcraft・・・と、　あ！本当だ。ありました。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/237418/a7aa05fb-fdbf-e999-e09d-84c8764f25b4.png)

でも、ものすごい数あるリポジトリから自分の使いたいライブラリーが
どこに入ってるかなんて探し出すの大変すぎ・・・:disappointed_relieved:
![2.png](https://qiita-image-store.s3.amazonaws.com/0/237418/a2e892cc-fae6-71b8-e4bb-e17316196600.png)

・・・と思っていたら素敵なページを見つけましたー！
**[The Central Repository](https://search.maven.org)**さんです。リポジトリの検索エンジンです。
![3.png](https://qiita-image-store.s3.amazonaws.com/0/237418/1deb234b-9707-d5bc-3c3a-70b2f86611bb.png)

早速、jschを検索してみます。おー！出ました。そしてダウンロードページまで備えています:thumbsup_tone2:素敵～:two_hearts:
![4.png](https://qiita-image-store.s3.amazonaws.com/0/237418/525df763-1b1c-3cc9-11f4-9d0f49cd1e46.png)

#**ライブラリーをpom.xmlに追記する**
例としてこのConnectDBというプロジェクトで使用したpostgresqlというライブラリーでやってみます。
sample.javaには、ポスグレに繋いでデータを追加する。って内容のコードを書いています。
それに必要なライブラリーなのですが、例によってワタシは **jarの追加** でこのライブラリーを追加しました。
![5.png](https://qiita-image-store.s3.amazonaws.com/0/237418/caec8a6c-697f-cec6-04b8-934d29f1e1cb.png)
ビルドパスから除外します。
![6.png](https://qiita-image-store.s3.amazonaws.com/0/237418/6ea6b7c2-f198-b670-621b-7b4074b115d9.png)

そのまま実行すると、もちろんエラーになります。
![7.png](https://qiita-image-store.s3.amazonaws.com/0/237418/23f95249-09c8-6d32-cf4c-f3146b3d2463.png)

先ほどの[The Central Repository](https://search.maven.org)さんでpostgresqlを検索します。
おー！ありました。Latest(最新)に42.2.4がありましたー！
![8.png](https://qiita-image-store.s3.amazonaws.com/0/237418/0fe217b1-82ce-5f54-b89d-784e69094353.png)

では、groupId、artifactId、versionをpom.xmlに追記します。

```pom.xml
		<!-- postgresql_adding_at_self_ -->
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>42.2.4</version>
		</dependency>
```
よーし、これで実行してみます。良かったー。ちゃんと実行できました。
![9.png](https://qiita-image-store.s3.amazonaws.com/0/237418/da65fc09-bfb8-a2df-c523-90ba6f223a5d.png)

#**あとがき**
最近、ぼんやりした点がぼんやりした線になってきたような感覚があります…:open_mouth:
設定ファイルって、色々膨大に謎の文字が羅列されてる得体の知れないモノ(苦手意識の塊)って
思ってたのですが、Javaに限らず設定ファイルって便利だなーってやっと実感できるようになりました。
ワタシのような漠然と設定ファイルに苦手意識をお持ちの方の参考になれば幸いです。