共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その7 )( ksbysample-library-simpleutils ライブラリをアップロードし直した時の挙動と、1.0-SNAPSHOT で呼び出せるのかを確認する )
概要
- 今回の手順で確認できるのは以下の内容です。
- ksbysample-library-simpleutils ライブラリを変更してアップロードし直した場合に Nexus にどのように登録されるのかを確認します。
- Spring Boot のサンプルプロジェクトから ksbysample-library-simpleutils ライブラリを呼び出す時に 1.0-SNAPSHOT のバージョン番号で指定して呼び出せる方法があるか確認します。
参照したサイト・書籍
目次
- ksbysample-library-simpleutils ライブラリを変更してアップロードし直した場合に Nexus にどのように登録されるのかを確認する
- 何も変更せずにアップロードし直したら Nexus にどのように登録されるのか?
- Spring Boot のサンプルプロジェクトから ksbysample-library-simpleutils ライブラリを呼び出す時に 1.0-SNAPSHOT のバージョン番号で指定して呼び出す
手順
ksbysample-library-simpleutils ライブラリを変更してアップロードし直した場合に Nexus にどのように登録されるのかを確認する
アップロード前の Nexus の登録状況を確認する
Nexus の管理画面を見ると、現在は maven-snapshots repository の下に以下の画像の状態で登録されています。
StringListUtils クラスに sumStringLength メソッドを追加する
ksbysample-webapp-demo を閉じて、ksbysample-library-simpleutils プロジェクトを開きます。
src/main/java/ksbysample/library/simpleutils の下の StringListUtils.java を リンク先の内容 に変更します。
sumStringLength メソッドのテストを作成して動作確認する
src/test/groovy/ksbysample/library/simpleutils の下の StringListUtilsTest.groovy を リンク先の内容 に変更します。
テストを実行します。
def "sumStringLength(#stringList) --> #result"()
メソッド名の左側の矢印アイコンをクリックしてメニューを表示した後、「Run 'sumStringLength(#s...()'」メニューを選択します。テストが実行され、全て成功することが確認できました。
ksbysample-library-simpleutils ライブラリを Nexus にアップロードする
Gradle projects View の uploadArchives タスクをダブルクリックして登録します。
アップロード後の Nexus の登録状況を確認する
再び Nexus の管理画面を見ると、maven-snapshots repository の下に以下の画像の状態で登録されていました。1.0-20160720.072325-2 のバージョンのコンポーネントが増えていました。古いバージョンは自動では消えないようです。
何も変更せずにアップロードし直したら Nexus にどのように登録されるのか?
単にアップロードし直したらどうなるのか興味が出たので試してみます。
Gradle projects View の uploadArchives タスクをダブルクリックして登録します。
Nexus の管理画面を見ると、maven-snapshots repository の下に 1.0-20160720.080138-3 のバージョンのコンポーネントが増えていました。単に増えるだけのようです。あとバージョンの末尾の数字が1つずつ上がることに気づきました。
Spring Boot のサンプルプロジェクトから ksbysample-library-simpleutils ライブラリを呼び出す時に 1.0-SNAPSHOT のバージョン番号で指定して呼び出す
Nexus の管理画面を見た時に ksbysample-library-simpleutils ライブラリのバージョンが 1.0-20160716.025552-1 と表示されたのでてっきりこれで指定するものと思ってしまったのですが、1.0-SNAPSHOT でも指定できるようです。試してみます。
ksbysample-library-simpleutils を閉じて、ksbysample-webapp-demo プロジェクトを開きます。
build.gradle を リンク先の内容 に変更します。
Gradle projects View の左上にある「Refresh all Gradle projects」ボタンをクリックして build.gradle を反映します。
反映後 Project View の External Libraries を展開すると、ksbysample-library-simpleutils ライブラリのバージョンが 1.0-SNAPSHOT になっていることが確認できます。
※実は1日前に試した時は何度やっても 1.0-20160716.025552-1 のまま変わらなかったんですよね。今日になったら jar のファイル名のバージョン番号は 1.0-SNAPSHOT に変わるし、追加した sumStringLength メソッドも呼び出せるようになっているし、不思議です。。。
src/main/java/ksbysample/webapp/demo の下の SampleController.java を リンク先の内容 に変更します。
Gradle projects View から bootRun タスクを実行して Tomcat を起動します。
ブラウザから http://localhost:8080/sample/sum にアクセスすると、"6" の文字列が表示されました。
Ctrl+F2 を押して Tomcat を停止します。
ソースコード
StringListUtils.java
package ksbysample.library.simpleutils; import java.util.List; import java.util.stream.Collectors; public class StringListUtils { static public String convertStringList2LengthCsv(List<String> stringList) { String result = null; if (stringList != null) { result = stringList.stream() .map(s -> s == null ? "0" : Integer.toString(s.length())) .collect(Collectors.joining(",")); } return result; } static public int sumStringLength(List<String> stringList) { int result = 0; if (stringList != null) { result = stringList.stream() .mapToInt(s -> s == null ? 0 : s.length()) .sum(); } return result; } }
- sumStringLength メソッドを追加します。
StringListUtilsTest.groovy
package ksbysample.library.simpleutils import spock.lang.Specification import spock.lang.Unroll class StringListUtilsTest extends Specification { .......... @Unroll def "sumStringLength(#stringList) --> #result"() { expect: StringListUtils.sumStringLength(stringList) == result where: stringList || result null || 0 [null] || 0 ["a"] || 1 ["テスト"] || 3 ["a", "ab", "abc"] || 6 ["a", null, "abc"] || 4 } }
def "sumStringLength(#stringList) --> #result"()
テストメソッドを追加します。
build.gradle
dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') compile('ksbysample.library:ksbysample-library-simpleutils:1.0-SNAPSHOT') }
- dependencies に記述した ksbysample-library-simpleutils ライブラリのバージョンを
1.0-20160716.025552-1
→1.0-SNAPSHOT
に変更します。
SampleController.java
package ksbysample.webapp.demo; import ksbysample.library.simpleutils.StringListUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Arrays; @Controller @RequestMapping("/sample") public class SampleController { @RequestMapping @ResponseBody public String index() { return StringListUtils.convertStringList2LengthCsv(Arrays.asList("a", "ab", "abc")); } @RequestMapping("/sum") @ResponseBody public String sum() { return Integer.toString(StringListUtils.sumStringLength(Arrays.asList("a", "ab", "abc"))); } }
- sum メソッドを追加します。
履歴
2016/07/22
初版発行。