もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

gradleマルチプロジェクトのサブプロジェクト全部ひっくるめたjavadocを生成する

gradleマルチプロジェクトのサブプロジェクト全部ひっくるめたjavadocを生成する方法

ググっても決定打がなかったのでまとめ。

Java界隈ってなんかそんなの多い気がする。)

前提は以下。

  • lombokで楽してるソース
  • SpringBootを使ってるソース(XMLは使ってません。全部ソース上で@Autowired)
  • ソースのエンコードUTF-8
  • Visual Studio Code for Windowsのgit bashからgradlewで実行したいです
  • gradleのプロジェクトはフラットレイアウトです
  • リーリエ可愛い!スイレン可愛い!こんな子たちにちやほやされてるサトシ、ズルすぎでしょ!

はっ!雑念が。(ポケモンサンムーン見ながら検証)

成功例

master/build.gradleをこんな感じにします。

plugins {
  // サブプロジェクトにdelombokなソースを生成させるためのプラグイン
  id "io.freefair.lombok" version "6.0.0-m2" apply false

  // 全部入りjavadocを生成するプラグイン
  id "io.freefair.aggregate-javadoc" version "6.0.0-m2"
}

// サブプロジェクトに対するオプション
subprojects {
  // delombokソース生成プラグインを読み込む
  apply plugin: "io.freefair.lombok"

  // javadocの出力文字コードを指定する(これがないとコメントの日本語がWindows-31Jに変換できないと怒られます)
  apply plugin: "java"

  javadoc {
    options.encoding = "UTF-8"
  }
}

// 全部入りjavadocプラグインに対するオプション
aggregateJavadoc {
  // javadocの出力文字コードを指定する(これがないとコメントの文字列がWindows-31Jに変換できないと怒られます)
  options.encoding = "UTF-8"
}

masterディレクトリでaggregateJavadocタスクを実行するとmaster/build/docs/aggregateJavadoc/に全部入りjavadocが生成されてます。

../gradlew aggregateJavadoc

【この記事がお気に召しましたら、ぜひ以下のリツイートをお願いします!】

フラットレイアウトなgradleマルチプロジェクトをJenkinsでビルドする

はじめに

春。成長と発展の季節ですね。

こちらもお仕事で開発してるソフトが複数バージョン並走x複数人開発になって、テスト環境で動いてるのが何なのかさっぱり分からなくなってきたところです。

なので、巷でよく聞くJenkinsくんに各バージョンのブランチをTomcatに自動デプロイしてもらえないかと思いました。

・・・ん?これってテスト環境の最新化以外にもメリットがあるのでは?

例えば、本番環境のリリースするモジュールのルールを

「ver_1ブランチのソースを使うこと(守れよ!絶対守れよ!!)」

って決めるより

「Jenkinsが(ver_1ブランチから)作ったwarファイルを使うこと」

の方が単純明快になるのではないか。

さらに、リリース時にgradlewを叩く必要がなくなるので新入りの学習コストの削減にも寄与できるのでは。

すげぇなJenkinsさん。
これはなんとしても実現しないと。

ハマる

今回自動デプロイする対象はmaster/にsettings.gradleを置くタイプのgradleマルチプロジェクトです。

それをJenkins 2.277.2 + 推奨プラグインで自動化してみると。

設定完了!さてその結果は・・・エラーが出ました。

FAILURE: Build failed with an exception.

* What went wrong:
Project directory '/var/lib/jenkins/workspace/test' is not part of the build defined by settings file '/var/lib/jenkins/workspace/test/master/settings.gradle'. If this is an unrelated build, it must have its own settings file.

アレですね。masterにcdせずにgradlewしたときのアレですね。
どこで設定すんのこれ?

解決策

Invoke Gradle scriptの「高度な設定...」を押すと出てくる「Root Build script」にmasterを設定するとビルド通りました。

f:id:moguno:20210411211949p:plain

f:id:moguno:20210411212032p:plain

【この記事がお気に召しましたら、ぜひ以下のリツイートをお願いします!】

高機能Wiki GROWIをインターネット接続に制限がある環境で使う


GROWIは高機能なWikiシステムです。 社内のredmineやGitBukketなんかのおまけWikiにナレッジとかプロジェクトの決定事項を書きなぐっていたけど、階層構造とかタグとかで整理しないと収拾がつかなくなった。的な状況に最適だと思います。

f:id:moguno:20210331031540p:plain

一番お手軽なのがSaaSクラウド版。

growi.cloud

さらに、オンプレミスのサーバにdocker-composeや生でインストールすることもできます。特にdocker-compose版はコマンド一発で終わるのでお勧めです。

オンプレ版の注意点としては、GROWIはデフォルトでは自身の画面を描画するためのcssJavascriptライブラリをインターネット上のコンテンツ配信ネットワーク(CDN)から取り寄せるため、クライアントがインターネットに出られない(or 閲覧できるサイトがガチガチにホワイトリスト管理されている)環境では使用できません。

しかしながら公式から「CDNを使わない版」のdockerイメージが提供されているので、そちらを使ってインストールをすればよいです。

今回はそんな「CDNを使わない版」のGROWIのインストール方法を解説します。

手順

公式のdocker-composeインストーラをcloneする

https://github.com/weseek/growi-docker-compose

CDNを使わない版イメージができるようにDockerfileを書き換える

FROM weseek/growi:4-nocdn ←:4を:4-nocdnに書き換える
LABEL maintainer Yuki Takei <yuki@weseek.co.jp>

ENV APP_DIR /opt/growi
…

アクセス制限を解除する

docker-compose.yml

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: ./Dockerfile
    ports:
      - 3000:3000  ←127.0.0.1:を削除
    links:
…

インストール&実行

docker-compose up -d

これで完了です。http://インストールしたサーバ:3000でアクセスできるはずです。

【この記事がお気に召しましたら、ぜひ以下のリツイートをお願いします!】