Maven Central へ行く前にjarとpomを作成

# 準備する必要なもの
Maven Centralの要求により、公開したいjarとともに、pomとsourceとjavadocを一緒にアップロードする必要です。以下は一式ファイルの例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/0836257f-e569-05f7-b466-4f9c209246a1.png)
# jarの名称について
jarの命名はルールがあります。pomに記載されるartifactIdとversionは、「-」で連結してjarファイル名になります。javadocとsourcesファイルは、リリースしたいjarファイル名に接尾語を付けて命名します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/fcb2e968-ba33-9621-c42b-31a28509891f.png)
```java
efw-4.06.015.jar = [artifactId] + "-" + [version] + ".jar"
efw-4.06.015-javadoc.jar = [artifactId] + "-" + [version] + "-" + "javadoc" + ".jar"
efw-4.06.015-sources.jar = [artifactId] + "-" + [version] + "-" + "sources" + ".jar"
```
※また、リリースするjarは、正式版とスナップショット版も接尾語"SNAPSHOT"で区別します。それぞれは、Maven Centralに格納場所が違うらしいです。画面経由のアップロードは正式版のみで、スナップショット版はmavenツールでしかできません。残念ですが、mavenツールには不慣れの点が多く、スナップショット版のアップロードは別途チャンレンジします。
# jarの作成
自分はeclipseを利用しています。eclipseでjarを作成する場合、プロジェクトを選んで右クリックして「エクスポート」メニューを選択して、エクスポート画面が表示します。エクスポート画面にjarファイルを選択して「次へ」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/de71323e-aa6b-0684-febe-2cdb66f331bf.png)
jarエクスポート画面が表示されます。ソースフォルダ、クラスファイルとリソース、jarファイル名、３点を入力して、完了ボタンを押します。これでjar作成が完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/8f217842-006e-4d9e-b482-e1281a69fc2e.png)
# javadocの作成
javadocの作成は、ソースをもう一回レビューしてくれと理解してよいです。このクラスは継承される必要ですか、このメソッドを本当に公開してよいですかなど、いろいろ整理して必要最小限のpublicクラス・属性・メソッドにしましょう。そうしないといっぱいjavadocを作らないといけないからです。とMaven Centralの考えでしょう。

eclipseでjavadocを作成する場合、プロジェクトを選んで右クリックして「エクスポート」メニューを選択して、エクスポート画面が表示します。エクスポート画面にjavadocを選択して「次へ」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/a0145628-b34f-7bee-ce64-f2d803bc1a64.png)
まずjavadoc.exeのパスを登録します。次はソースフォルダ、public選択子、保存先パスを入力して、完了ボタンを押します。これでjavadocが作成されます。もしソースのコメントに不備がある場合、いろいろエラーと警告が出ます。自分の場合、気が遠くなるまで修正し続けました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/b35fcf44-7410-fcb3-08b1-180c993ba6cc.png)
javadocのステップはまだ終わっていません。次はdocフォルダをjarファイルに圧縮することです。javadocのjarファイル名は前述のルールに従います。
```batchfile
set path=C:\EFW_ALL\jdk1.8.0_351\bin
cd C:\EFW_ALL\pleiades\workspace\efw4x\doc
rem 現在フォルダ配下の全ファイルを対象にする
jar -cvf ../maven/efw-4.06.015-javadoc.jar .
pause
```
# sourcesの作成
もう一回エクスポート画面を呼び出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/de71323e-aa6b-0684-febe-2cdb66f331bf.png)
jarエクスポート画面に、ソースフォルダ、ソース、jarファイル名を入力します。sourcesのjarファイル名は前述のルールに従います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476221/b3ed4813-2436-492e-65fd-157be4e10247.png)
# POMの作成
jarを準備できました。次はpomを作成します。Maven Centralの要求事項をご参考。https://central.sonatype.org/publish/requirements/
```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>io.github.efwgrp</groupId>
  <artifactId>efw</artifactId>
  <version>4.06.015</version>
  <name>ESCCO-Framework</name>
  <description>
    "efw" is an Ajax framework for server site JavaScript designed 
    and developed by Escco Co., Ltd. using a goal-oriented method. 
    It is provided as open source free software.
  </description>
  <url>https://github.com/efwGrp/efw4.X</url>
  <licenses>
    <license>
      <name>The Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>kejun.chang</name>
      <email>kejun.chang@escco.co.jp</email>
      <organization>efwgrp</organization>
      <organizationUrl>https://github.com/efwGrp</organizationUrl>
    </developer>
  </developers>
  <scm>
    <connection>https://github.com/efwGrp/efw4.X.git</connection>
    <developerConnection>https://github.com/efwGrp/efw4.X.git</developerConnection>
    <url>https://github.com/efwGrp/efw4.X/tree/master</url>
  </scm>
</project>
```
これで準備完了。残りは署名とアップロードですが、もう文書がながくなっているから、次にしましょう。

[Maven Central へリポジトリを申し込む](https://qiita.com/changkejun/items/646825ddada989942149)
[Maven Central へ行く前にjarとpomを作成](https://qiita.com/changkejun/items/e90e5c18167cd43c6723)
[jarとpomを署名してMaven Centralへアップロード](https://qiita.com/changkejun/items/5c5151a68c32518a765d)