Web系エンジニアのごはんブログ

JavaとかKotlinとかのごはん関係のブログです。

GitHubをMavenリポジトリにする(GitHub pagesでできなかった)

KExcelAPIを作ったのはいいのですが、jarファイルをダウンロードして使用する方法では使う人が面倒なためオレオレMavenリポジトリを作成することにしました。

当初は、gh-pagesにリポジトリを作成(ただファイルを置くだけ)でやってみたのですが、IntelliJ上のGradleでライブラリーを取得する際に次のようなエラーが出てしまいました。

f:id:webarata:20151112040859p:plain

これ自体はインデックスを取得できない感じのエラーなので無視して(Disable)も問題ないのですが、上記画面の「Open Repository List」から飛べる設定画面でもエラーが出ています。(Updateしても同じ)

f:id:webarata:20151112040759p:plain

このエラーメッセージにマウスポインタを合わせるとエラーの内容が出てきますが、これはリポジトリー上に「nexus-maven-repository-index.properties」ファイルが無いために起きているということでした。ですので、このファイルを作成する方法を探したところ、次のページを見つけました。

stackoverflow.com

このサイトの通り、nexus-indexer-3.0.4-cli.jarをダウンロードして、nexus-maven-repository-index.propertiesファイル等を作成しました。ファイルはrepositoryトップに.indexディレクトリーを作成しその中に作ります。

ここまでで作成したファイルをgh-pages上に構築したのですがエラーは消えませんでした。確認(ソースが見つけられなかった)は取れてないのですが、gh-pages上では「.」が先頭のファイルは参照できないため、「.index」以下にあるインデックスファイルが参照できない、ということのようです。(この辺違ったら教えて下さい)

いろいろと試行錯誤していたのですが、GItHubのrawモードをMavenリポジトリとするとインデックスファイルが正しく読めるようになり、IntelliJ上のエラーも消えました。

ということで次の場所にリポジトリーができ、IntelliJ上の警告やエラーも消えてすっきりです。

github.com

KExcelAPIリポジトリー

repositories {
    maven { url 'https://raw.githubusercontent.com/webarata/maven/master/repository' }
}

dependencies {
    compile 'link.arata.kexcelapi:kexcelapi:0.1.0'
}

で取得できます。

残念なのは、GitHubページのURLに比べて長くなってしまうことですが、エラーが出るよりはいいかなと思っています。

Kotlin用Apache POIのラッパーライブラリーKExcelAPI 0.1.0をリリースしました

Kotlin用Apache POIのラッパーライブラリーKExcelAPIをリリースしました。

github.com

もともとGroovy用のGExcelAPIというライブラリーがあり、それが便利そうなためKotlin版を作成しました。

コードのイメージは次のようになります。

// 簡単にファイルオープン、クローズ
KExcel.open("file/book1.xlsx").use { workbook ->
    val sheet = workbook.getSheetAt(0)

    // セルの読み込み
    // セル名でのアクセス
    println("""B7=${sheet["B7"].toStr()}""")
    // セルのインデックスでのアクセス [x, y]
    println("B7=${sheet[1, 6].toDouble()}")
    println("B7=${sheet[1, 6].toInt()}")

    // セルの書き込み
    sheet["A1"] = "あいうえお"
    sheet[3, 7] = 123

    // ファイルの書き込みも簡単に
    KExcel.write(workbook, "file/book2.xlsx")
}

B1のようなセル名や、[1, 3]のようなセルのインデックスのどちらでも読み書きできるのが特徴です。書きながらシートへのアクセスも何かしたほうがいいなと思い始めました。。

ということで、まだ0.1.0なのでいろいろ改善していきたいと思います。