かんがるーさんの日記

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

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その14 )( sources と javadoc をアップロードする )

概要

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その13 )( 利用するライブラリが依存しているライブラリの別バージョンを build.gradle で指定したらどうなるのか? ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Nexus にライブラリをアップロードする時に sources と javadoc もアップロードする。

参照したサイト・書籍

  1. How to build sources jar with gradle
    http://stackoverflow.com/questions/11474729/how-to-build-sources-jar-with-gradle

    • sources と javadoc の jar ファイルを生成するための gradle の設定が記載されています。
  2. Eclipse gradleタスクでのjavadoc出力文字コード指定
    http://qiita.com/nakkspeed/items/b18560d9dfd32308e495

    • 上の stackoverflow の回答に書かれている設定だけではエラーが出たので、その解決策を調査している時に参照しました。
  3. IntelliJ IDEA 2016.2 Help - Viewing Inline Documentation
    https://www.jetbrains.com/help/idea/2016.2/viewing-inline-documentation.html

目次

  1. Javadoc のコメントを追加する
  2. sources と javadoc をアップロードするための設定を build.gradle に追加する
  3. Nexus にアップロードする
  4. ksbysample-webapp-demo でアップロードした sources と javadoc が閲覧できることを確認する

手順

Javadoc のコメントを追加する

  1. ksbysample-library-depend-nospring プロジェクトを開きます。

  2. Javadoc をアップロードするので、ソースに Javadoc のコメントを追加します。src/main/java/ksbysample/library/dependnospring の下の OrderBuilder.javaリンク先の内容 に変更します。

sources と javadoc をアップロードするための設定を build.gradle に追加する

  1. build.gradle を リンク先の内容 に変更します。

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

Nexus にアップロードする

  1. uploadArchives タスクを実行して Nexus に登録します。

    f:id:ksby:20160824111413p:plain

  2. Nexus の画面を見ると ksbysample-library-depend-nospring の 1.1-RELEASE が登録されていることが確認できます。

    f:id:ksby:20160824111536p:plain

    1.1-RELEASE をクリックして次の画面を見ると sources と javadoc の JAR ファイルが登録されていることが確認できます。

    f:id:ksby:20160824111804p:plain

ksbysample-webapp-demo でアップロードした sources と javadoc が閲覧できることを確認する

  1. ksbysample-webapp-demo プロジェクトを開きます。

  2. build.gradle を リンク先の内容 に変更します。

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

  4. まず sources.jar をダウンロードして閲覧できることを確認します。OrderController.java を開いた後、new OrderBuilder()OrderBuilder の部分にカーソルを移動して Ctrl+B を押してソースを表示します。

    f:id:ksby:20160824114339p:plain

    decompile されたソースではなく Javadoc のコメントが記述されたソースが表示されました。

    f:id:ksby:20160824114438p:plain

  5. 次に javadoc.jar をダウンロードして閲覧できることを確認します。OrderController.java.price(2000)price の部分にカーソルを移動して Ctrl+Q を押します。

    f:id:ksby:20160824114843p:plain

    Javadoc が表示されました。

    f:id:ksby:20160824115252p:plain

ソースコード

OrderBuilder.java

package ksbysample.library.dependnospring;

import org.apache.commons.lang3.builder.Builder;

import java.math.BigDecimal;

/**
 * Order クラスのインスタンスを Builder パターンで生成するためのクラスである。
 */
public class OrderBuilder implements Builder<Order> {

    private Order order;

    /**
     * OrderBuilder クラスの新規インスタンスを生成する。
     */
    public OrderBuilder() {
        this.order = new Order();
    }

    /**
     * 注文数を設定する。
     * @param number 注文数
     * @return OrderBuilder クラスのインスタンス
     */
    public OrderBuilder number(int number) {
        this.order.setNumber(new BigDecimal(Integer.toString(number)));
        return this;
    }

    /**
     * 単価を設定する。
     * @param price 単価(単位:円)
     * @return OrderBuilder クラスのインスタンス
     */
    public OrderBuilder price(int price) {
        this.order.setPrice(new BigDecimal(Integer.toString(price)));
        return this;
    }

    /**
     * Order クラスのインスタンスを生成する。
     * @return 生成された Order クラスのインスタンス
     */
    @Override
    public Order build() {
        return this.order;
    }

}
  • Javadoc のコメントを追加します。

ksbysample-library-depend-nospring/build.gradle

group 'ksbysample.library'
version '1.1-RELEASE'

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'

sourceCompatibility = 1.8
targetCompatibility = 1.8

compileJava.options.compilerArgs = ['-Xlint:all']
compileTestGroovy.options.compilerArgs = ['-Xlint:all']
compileTestJava.options.compilerArgs = ['-Xlint:all']

repositories {
    jcenter()
}

dependencies {
    compile("org.apache.commons:commons-lang3:3.4")
    testCompile("org.spockframework:spock-core:1.0-groovy-2.4")
}

javadoc {
    options.charSet = 'UTF-8'
    options.encoding = 'UTF-8'
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}

uploadArchives {
    def nexusUrl = "http://localhost:8081"
    def nexusUsername = "admin"
    def nexusPassword = "admin123"

    repositories {
        mavenDeployer {
            repository(url: "${nexusUrl}/repository/maven-releases") {
                authentication(userName: nexusUsername, password: nexusPassword)
            }
            snapshotRepository(url: "${nexusUrl}/repository/maven-snapshots") {
                authentication(userName: nexusUsername, password: nexusPassword)
            }
        }
    }
}
  • version を 1.0-RELEASE1.1-RELEASE に変更します。
  • javadoc { ... } を追加します。
  • sourcesJar タスクを追加します。
  • javadocJar タスクを追加します。
  • artifacts { ... } を追加します。

ksbysample-webapp-demo/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-RELEASE')
    compile('ksbysample.library:ksbysample-library-depend-nospring:1.1-RELEASE')
}
  • ksbysample.library:ksbysample-library-depend-nospring のバージョンを 1.0-RELEASE1.1-RELEASE に変更します。

履歴

2016/08/24
初版発行。