かんがるーさんの日記

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

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その15 )( pom ファイルに name, description を追加する )

概要

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

  • 今回の手順で確認できるのは以下の内容です。

参照したサイト・書籍

  1. Apache Maven Project - POM Reference
    https://maven.apache.org/pom.html

  2. MavenPom
    https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPom.html

目次

  1. http://maven.apache.org/xsd/maven-4.0.0.xsd で name, description の出力フォーマットを確認する
  2. build.gradle を変更して pom ファイルに name, description が出力されるようにする
  3. Nexus にアップロードする
  4. 次回は。。。

手順

http://maven.apache.org/xsd/maven-4.0.0.xsd で name, description の出力フォーマットを確認する

Apache Maven Project - POM Reference ( https://maven.apache.org/pom.html ) では name や description という項目が出力可能なことは分かるのですが、具体的にどのようなフォーマットで出力するのかは分からないんですよね。

Nexus に登録されている ksbysample-library-depend-nospring-1.1-RELEASE.pom を見ると一番上に <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"> と書かれていましたので、http://maven.apache.org/xsd/maven-4.0.0.xsd で出力フォーマットを確認します。

f:id:ksby:20160824124240p:plain

name も description も type="xs:string" ですので単に文字列を設定すればよいようです。

build.gradle を変更して pom ファイルに name, description が出力されるようにする

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

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

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

Nexus にアップロードする

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

    f:id:ksby:20160824175844p:plain

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

    f:id:ksby:20160824175956p:plain

    1.2-RELEASE をクリックして pom ファイルを表示すると name, description が追加されていることが確認できます。

    f:id:ksby:20160824180151p:plain f:id:ksby:20160824180306p:plain f:id:ksby:20160824180422p:plain

次回は。。。

  • Nexus へのアップロードを admin 権限で実行していますが、アップロード用の User を作成して実行する方法を確認します。
  • Spring Framework に依存するライブラリを作成してみます。こちらは Nexus はあまり関係なく(おそらく)、Spring に依存するライブラリを作成した時のテストの書き方をまとめるのが目的です。

ソースコード

build.gradle

group 'ksbysample.library'
version '1.2-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)
            }
            pom.withXml {
                asNode().appendNode('name', 'Spring非依存のテストライブラリ ksbysample-library-depend-nospring')
                asNode().appendNode('description', 'Spring には依存しないが他のライブラリに依存する共有ライブラリである')
            }
        }
    }
}
  • version を 1.1-RELEASE1.2-RELEASE に変更します。
  • uploadArchives の中に pom.withXml { ... } を追加します。この中で name, description を追加します。

履歴

2016/08/24
初版発行。