Apache Maven Site PluginでArtifactResolutionExceptionが出力されて困ることがある。

はじめに

件名通りのことが発生して、地味に困ったのでメモ。

環境

解決方法

以下の記事に記載されています。
tcollignon.github.io

解決方法の補足

私は「Tell maven-site-plugin to not using inheritence」の部分を読んで解決したのですが、ちょっと苦労したので補足。

前述の記事は閉じタグが書いてない

忘れずにprojectを閉じる必要があります。

<project name="test" combine.self="override">
</project>
上記は何にかく?

以下のファイルに書きます。

前述のproject要素だけでもOKです。

/src/site/site.xml

さいごに

Apache Maven Site Plugin、時々手強い……。

Jenkins 2.5以降のDeclarative PipelineでCheckstyle PluginとFindBugs Pluginを使いたい

はじめに

Jenkins 2.5以降のDeclarative PipelineでCheckstyle PluginとFindBugs Pluginを使おうとしたら、やたら苦労したのでメモ。

環境

  • Jenkins ver. 2.60.3

したかったこと

  • Declarative Pipeline*1でPipelineを書く。
  • Maven で出力したCheckstyleとSpotbugsの結果をJenkinsに表示する。
  • parallelとか凝ったことはせず、シンプルにまずはやりたい。

Pipelineの書き方の例

mvnがBUILD FAILUREになっても後続が実行されるようにcatchErrorで囲みます。

pipeline {
//中略
    stage('checkstyle and spotbugs') {
        when {
          branch 'develop'
        }
        steps {
          catchError{
            sh 'mvn checkstyle:check spotbugs:check'
          }
          checkstyle canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
          findbugs canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', pattern: '', unHealthy: ''
        }
    }
//中略
}

checkstyleおよびfindbugsプラグインは先に書いても結果を収集してくれるので、これでもいけます。

pipeline {
//中略
    stage('checkstyle and spotbugs') {
        when {
          branch 'develop'
        }
        steps {
          checkstyle canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
          findbugs canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', pattern: '', unHealthy: ''
          sh 'mvn checkstyle:check spotbugs:check'
        }
    }
//中略
}

はまったこと

pluginの解説をみると全部のパラメータにoptionalと書いてあるが、省略するとpipeline実行時にエラーが発生する。

首記のとおりです。以下のリファレンスを読むと全部のパラメータにoptionalと書いてあるのに……。

リファレンスを見てもさっぱりわからないので、【Jenkins】Declarative Pipeline入門 - Qiita で解説されている「コードスニペットを自動で生成してくれる機能」を使用して生成したコードを貼りつけました。

Mavenの実行結果がBUILD FAILUREになると後続処理が実行されない

首記の仕様があるため、以下のように記述すると結果がJenkinsに表示ません。
mvn checkstyle:check、mvn spotbugs:checkともに指摘を検知するとBUILD FAILUREになりますものね。

//中略
        steps {
          sh 'mvn checkstyle:check'
          checkstyle canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', healthy: '', pattern: '', unHealthy: ''
          sh 'mvn spotbugs:check'
          findbugs canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', pattern: '', unHealthy: ''
        }
//中略

さいごに

苦労してpiplelineを書いたのですが、Checkstyle PluginとFindBugs PluginはDeprecatedです。
Warnings Next Generation Pluginが後継のpluginのようです。

余談ですが、最初、この名前みても後継のpluginであることが分からなかったです。
この記事書いている途中に復習していて気づいた。

*1:余談ですが、Scripted Pipelinesという別の書き方が存在することを知らず、「なんか書き方複数あるっぽい??」と混乱しながら調査してた

CSSフレームワークの使いやすさについて「えっ。そこがそんなに大事だったの?」と思った話

はじめに

CSSフレームワークを指定して画面デザインを行ってもらったときに、驚いたことがあったのでメモ。

起きたこと

Bulmaを使って画面デザインを頼んだところ、進捗が思わしくなかったのです。
で、チームのメンバーから「Semantic UIに変えてみたら?」と提案があり変更したら、進捗が劇的に改善されました。

そこで私はびっくりです。
何がそんなに違うか分からなかったためです。

ヒアリングして分かったこと

「使いやすさの違いはどこにあるのです?」と、画面デザインをしている人にヒアリングしました。
曰く「コピー&ペーストのし易さが違う」と。

どういうことなのかもう少し聞いたところ…。
Semantic UIは、Button | Semantic UIの左側から要素を簡単に選んで、コード例のページに遷移できる。
これが大きかったらしいです。
BulmaはDocumentation | Bulma: Free, open source, & modern CSS framework based on Flexboxからドリルダウンしていく必要があり、確かにちょっと使いにくいとは思います。

軽くヒアリングしたので言わなかった理由もあるのだと想像していますが、予想外の理由でした。

@Betaが付与されているクラス使用時の警告を抑止したい

はじめに

GitHub - google/guava: Google core libraries for Javaのクラスに@Betaが付与されているものがあります。
@Betaが付与されているクラスを使用すると警告がでます。
「抑止したいなー」と思ったのですが、抑止方法探すのに5分ぐらい掛ったので、将来の自分のためにメモ。

抑止方法

クラスの使用箇所に以下のように記載すると抑止できます。

@SuppressWarnings("UnstableApiUsage")

以下のページに記載されておりました。
stackoverflow.com

さいごに

Guavaの公式ページで見つけられると本当はよかったんですけどね。
アプリケーションの挙動に影響を与える部分でもないし、公式ページのどこに載っているかは気にしないことにします。

Bulmaをカスタマイズ前提でちょっと触ってみる

はじめに

Bulma*1というCSSフレームワークがあります。
カスタマイズ前提でちょっと触ってみました。

環境

  • Windows 10 Pro
  • Node.js v11.15.0
  • Bulma 0.7.4
  • node-sass 4.12.0

カスタマイズの基本について理解する

Customizeから始める

Customizeから一つ選んで始めることにします。
今回はWith node-sassを選びました。

bulma-startから始めるのもありなのですが今回は勉強目的なので、一から作っていくっぽさがあるCustomizeから選びました。

6. Add your own Bulma stylesを理解する

With node-sassの手順1~5までは特筆することはありません。
そのままやっていきます。

問題は6. Add your own Bulma stylesです。
ここがカスタマイズを行う手順なのですが、3. Create a Sass fileのSass fileと6. Add your own Bulma stylesのSass fileが全く違うため、真面目に読解する必要があります。

以下に6. Add your own Bulma stylesのSass fileを引用します。

@charset "utf-8";

// Import a Google Font
@import url('https://fonts.googleapis.com/css?family=Nunito:400,700');

// Set your brand colors
$purple: #8A4D76;
$pink: #FA7C91;
$brown: #757763;
$beige-light: #D0D1CD;
$beige-lighter: #EFF0EB;

// Update Bulma's global variables
$family-sans-serif: "Nunito", sans-serif;
$grey-dark: $brown;
$grey-light: $beige-light;
$primary: $purple;
$link: $pink;
$widescreen-enabled: false;
$fullhd-enabled: false;

// Update some of Bulma's component variables
$body-background-color: $beige-lighter;
$control-border-width: 2px;
$input-border-color: transparent;
$input-shadow: none;

// Import only what you need from Bulma
@import "../node_modules/bulma/sass/utilities/_all.sass";
@import "../node_modules/bulma/sass/base/_all.sass";
@import "../node_modules/bulma/sass/elements/button.sass";
@import "../node_modules/bulma/sass/elements/container.sass";
@import "../node_modules/bulma/sass/elements/form.sass";
@import "../node_modules/bulma/sass/elements/title.sass";
@import "../node_modules/bulma/sass/components/navbar.sass";
@import "../node_modules/bulma/sass/layout/hero.sass";
@import "../node_modules/bulma/sass/layout/section.sass";

以下のカスタマイズをしているため、3. Create a Sass fileと比べて6. Add your own Bulma stylesのSass fileは長くなってます。

  • Variablesで解説されている変数の定義(Sass fileのコメントの"Set your brand colors, Update Bulma's global variables", "Update some of Bulma's component variables"の部分)
    (ちなみにコメントの"Import a Google Font"の部分は、Nunitoフォントを使うための布石)
  • Bulmaに含まれるCSSのうち使う部分だけの取り込み(Sass fileのコメントの"Import only what you need from Bulma"の部分)

Variablesで解説されている変数の定義だけしたい場合

@import で"../node_modules/bulma/bulma.sass"を読み込むSass fileにすればOKです。
以下に例を示します。

@charset "utf-8";
$family-sans-serif: Helvetica, "Arial", "Hiragino Kaku Gothic ProN",'ヒラギノ角ゴ ProN W3', Meiryo, "メイリオ", sans-serif;
@import "../node_modules/bulma/bulma.sass";

' `import "../node_modules/bulma/bulma.sass"; 'を、変数の定義より後に記載するのが注意点です。
Sassの仕様上はあたりまえなのですが、私は知らなくてハマってました。

さいごに

これで、あとはVariablesのページを理解すれば、カスタマイズが可能になりました。
私はまだ理解していませんが、そんなに数多くないしどうにかカスタマイズできるようになる…、かな?

*1:Bulmaが何なのかは、CSSフレームワーク BULMA チュートリアル① - Qiitaにわかりやすく説明されています。理解するための記事としてお勧めです。

Javaのライセンス変更に関するメモ

はじめに

私が人にJavaのライセンスを説明するときに使うためのメモです。

Javaのライセンス変更について良い感じの解説ページがある

全般的な話

以下が一番わかりやすいです。
togetter.com

JVMで動作するアプリを利用する視点での話

この案内をそのまま適用できる組織も多いのではないでしょうか。
ipc.kyokyo-u.ac.jp

その他の資料

TogetterのOpenJDKソムリエタグを見るとよいです。
OpenJDKの様々なビルドを試すうちにソムリエと呼ばれ始めた@yamadamn*1という方がみえます。
その方がまとめた発言(または「まとめ」の主体となっているもの)につけられているタグです。
togetter.com

Docker for Windows上で、GitLabを動かしたい

はじめに

GitLab Docker images | GitLabの通りやるとDocker for Windows上でGitLabを動かせませんでした。
動かし方を閃くまでちょっと時間が掛ったためメモ。

環境

  • WIndows 10 Pro 1809
  • Docker for Windows(Docker Desktop Community 2.0.0.3)
  • GitlLab CE 11.10.1-ce.0

名前付きボリュームを使えば動かせます

名前付きボリュームを使用するdocker-compose.ymlの例を以下に示します。

version: "2.2"
services:
  gitlab:
    image: 'gitlab/gitlab-ce:11.10.1-ce.0'
    restart: always
    hostname: 'localhost'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://localhost'
    ports:
      - '10080:80'
      - '10443:443'
      - '10022:22'
    volumes:
      - 'gitlab-log:/var/log/gitlab'
      - 'gitlab-config:/etc/gitlab'
      - 'gitlab-data:/var/opt/gitlab'
volumes:
  gitlab-log:
  gitlab-config:
  gitlab-data:

GitLab Docker images | GitLabのdocker-compose.ymlはホストのディレクトリをマウントしているため、Windowsがホストだと、パーミッション設定で失敗して起動してこないのです。

名前付きボリュームの中を見るのはちょっと面倒

以下のいずれかの方法を使用することになります。

ホストLinux(ハイパーバイザ型の軽量Linux)のルートディレクトリをマウントする

Dockerでデータボリュームを使ってみる|crz33の「管理ボリュームはどこにあるのか?」に具体的な方法が記載されています。

余談ですがGit for Windowsに同梱のGit BASHではうまくできませんでした。PowerShellを使いましょう。

見たいボリュームを1個1個マウントする

例えば、以下のようになります。

docker run --name mount_test -v practiceofgitlab_gitlab-log:/gitlab_gitlab-log -it alpine:latest sh

Gitlabの使い方を知るのにはいい書籍がある

GitLab実践ガイド impress top gearシリーズがお勧めです。
この書籍がなかったら、GitlLabがどういうものか理解するのに私は多大な時間を要したでしょう。
GitLab実践ガイド impress top gearシリーズ

さいごに

Docker for Windowsを使っているとこういうちょっとしたことで苦労しがちです。
しかしながら、Windowsへの愛ゆえこれからもDocker for Windowsでどうにかできるときは頑張っていきたい所存。