かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その6 )( 登録した ksbysample-library-simpleutils ライブラリを Spring Boot のプロジェクトから利用してみる )

概要

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その5 )( 簡単なライブラリを作成して Nexus に登録してみる ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Spring Boot のプロジェクトを作成し、登録した ksbysample-library-simpleutils ライブラリを利用してみます。

参照したサイト・書籍

目次

  1. ksbysample-library-simpleutils ライブラリを利用する Spring Boot のプロジェクトを作成する
    1. Spring Initializr でプロジェクトを作成する
    2. build.gradle を変更して ksbysample-library-simpleutils ライブラリを利用できるようにする
    3. SampleController クラスを作成する
    4. 動作確認
  2. 次回は。。。

手順

ksbysample-library-simpleutils ライブラリを利用する Spring Boot のプロジェクトを作成する

Spring Initializr でプロジェクトを作成する

  1. IntelliJ IDEA のメインメニューから「File」-「Close Project」を呼び出して、ksbysample-library-simpleutils ライブラリのプロジェクトを閉じます。

  2. 「Welcome to IntelliJ IDEA」ダイアログが表示されます。「Create New Project」メニューをクリックします。

    f:id:ksby:20160720013421p:plain

  3. 「New Project」ダイアログが表示されます。画面左側の一覧から「Spring Initializr」を選択した後、「Next」ボタンをクリックします。

    f:id:ksby:20160720013822p:plain

  4. Name、Type 等を入力する画面が表示されます。以下の画像の内容を入力後、「Next」ボタンをクリックします。

    f:id:ksby:20160720014244p:plain

  5. Spring Boot の Version 及び Dependencies を指定する画面が表示されます。Spring Boot は 1.3.6 を、Dependencies は Web のみ選択して「Next」ボタンをクリックします。

    f:id:ksby:20160720014548p:plain

  6. Project name、Project locationj を入力する画面が表示されます。ただし、なぜか "-"(ハイフン) が消えてしまっていますね。以前は残っていたと思うのですが。。。

    f:id:ksby:20160720014945p:plain

    以下の画像のように Project Name に "-"(ハイフン) を追加して Project location を修正した後、「Finish」ボタンをクリックします。

    f:id:ksby:20160720015608p:plain

  7. IntelliJ IDEA のメイン画面が表示された後、「Import Module from Gradle」ダイアログが表示されます。「Create directories for empty content roots automatically」のチェックボックスをチェックした後、「OK」ボタンをクリックします。

    f:id:ksby:20160720020413p:plain

  8. 以下の画像のダイアログが表示されますので、処理が完了するまで待ちます。

    f:id:ksby:20160720021111p:plain

  9. 処理が完了して Project View を見ると以下のような構成になります。

    f:id:ksby:20160720021328p:plain

  10. Gradle projects View から bootRun を実行して Tomcat が起動することを確認します。

    f:id:ksby:20160720022040p:plain

    Ctrl+F2 を押して Tomcat を停止します。

build.gradle を変更して ksbysample-library-simpleutils ライブラリを利用できるようにする

  1. Spring Initializr で生成した直後の build.gradle は リンク先のその1の内容 なので、Nexus に登録した ksbysample-library-simpleutils ライブラリを利用できるようにするために リンク先のその2の内容 に変更します。

  2. Gradle projects View の左上にある「Refresh all Gradle projects」ボタンをクリックして build.gradle を反映します。

  3. 反映後 Project View の External Libraries を展開すると、ksbysample-library-simpleutils ライブラリが利用可能になっていることが確認できます。

    f:id:ksby:20160720031530p:plain

SampleController クラスを作成する

  1. src/main/java/ksbysample/webapp/demo の下に SampleController.javaを作成し、[リンク先の内容] にします。

動作確認

  1. Gradle projects View から bootRun タスクを実行して Tomcat を起動します。

  2. ブラウザから http://localhost:8080/sample にアクセスすると、"1,2,3" の文字列が表示されました。

    f:id:ksby:20160720033451p:plain

  3. Ctrl+F2 を押して Tomcat を停止します。

  4. commit します。

次回は。。。

以下の内容を試してみます。

  • ksbysample-library-simpleutils ライブラリの内容を変更してアップロードすると Nexus にどのように登録されるのか確認します。
  • ksbysample-library-simpleutils ライブラリを Nexus にアップロードした時にバージョン番号が 1.0-SNAPSHOT ではなく 1.0-20160716.025552-1 に変わったのですが、1.0-SNAPSHOT のままアップロードする方法があるのか調べてみます。
  • ksbysample-library-simpleutils ライブラリの SNAPSHOT のリリースを削除して 1.0-RELEASE でリリースしてみます。

ソースコード

build.gradle

■その1

buildscript {
    ext {
        springBootVersion = '1.3.6.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'

jar {
    baseName = 'ksbysample-webapp-demo'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}


eclipse {
    classpath {
         containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
         containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
}

■その2

buildscript {
    ext {
        springBootVersion = '1.3.6.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'maven'

jar {
    baseName = 'ksbysample-webapp-demo'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    maven { url "http://localhost:8081/repository/maven-public" }
}


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-20160716.025552-1')
}


eclipse {
    classpath {
         containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
         containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
}
  • apply plugin: 'maven' を追加します。
  • repositories の指定を mavenCentral()maven { url "http://localhost:8081/repository/maven-public" } へ変更します。Maven Central も Nexus の Proxy 経由でアクセスしてみます。
  • dependencies に ompile('ksbysample.library:ksbysample-library-simpleutils:1.0-20160716.025552-1') を追加します。

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"));
    }

}

履歴

2016/07/20
初版発行。