Kengo's blog

Technical articles about original projects, JVM, Static Analysis and TypeScript.

Maven

エコシステムにビルドツールがたくさんあるのは悪いことではない

JavaやNodeJSには多数のビルドツールがあります。ものによってはビルドツールではなくタスクランナーとかワークフローとか名前が付いてるかもしれませんが些細なことです、ここでは以下のようなツールのことをまとめてビルドツールと呼びます: Apache Ant A…

Maven4の動向メモ

Maven 4は2年近く前から開発されていて、最近alphaバージョンがリリースされています。自分がMavenを使うことは殆ど無いとは思うのですが、傾向だけでも把握しておきたくてリリースノートやメーリングリストに潜ってみました。 4.0.0-alpha2 Release Notes 4…

--add-exportsをMaven/Gradleで使う

--add-exports なんてオプションは使わないに越したことはないのですが、依存先ライブラリの都合でどうしても必要という私のような人のためのメモ。 ポイントは javac だけでなく javadoc ないし java (テスト実行)コマンドに対するオプション提供も必要と…

GitPodでJavaプロジェクトを開発する

GitHub Codespacesがなかなか個人向けに来ないので、changelog.comで宣伝していたGitPodを試しています。 どうも公式のJava向けの説明が古いようで、既にDeprecatedになっているtheiaを前提としているため、調べたことをメモしておきます。 最新のJavaを使う…

最近キャッチアップしているもの 2020-05

いろいろ手を出しすぎてごちゃごちゃしてきているので、頭の中を整理する目的でここに書き出す。 reproducible build Mavenのメーリスで話題に出ることがあり知った。特別新しい概念ではないけどある種のunlearningであり、ビルド職人は見といて損ないやつ。…

考察:Reactive Workflowが生まれた背景とその狙い

人に説明するのがスムーズにできなさそうなので、理論武装というか順序立てて話すためにこの記事をまとめる。 対象 ブラウザから利用するマルチプラットフォーム向けウェブアプリケーションの開発 モバイルのネイティブアプリ開発は含まない(知らないので)…

JavaウェブアプリプロジェクトにJavaScript/TypeScriptなどの静的アセットをどう配置するか

以前のJavaウェブアプリ開発では、JavaScriptをはじめとした静的アセットはsrc/main/webappディレクトリに配置するのが普通だった。そこに置くことでmaven-war-pluginのようなビルドシステムが.warファイルの中に突っ込んでくれる。この挙動は今でも変わらな…

Javaプロジェクトにおけるリリース周りの手法あれこれ

考慮する点 成果物のデプロイ ビルドの成果物(artifct)をアップロードすること。アップロードと公開は分けて考えることに注意。デプロイ先にはいくつか候補がある: GitHub Packages (旧GitHub Package Registry) Maven Central Repository Docker Hubなど…

Java屋がsemantic-releaseに思うこと

最近Java周りでもsemantic-releaseの利用機会が増えています。Gradle pluginとMaven pluginが生まれ、特に後者はyarn*1で実行されるため既存のプラグインとも組み合わせやすく、JavaScriptと比較しても遜色ない状態と言えそうです。 2019年3月時点で、Java特…

2019年初頭でのMaven Site作成における注意点

最近新しいMaven Plugin用サイトを作ったので、mvn siteで作成できるサイトについて現時点での注意点をまとめる。 skinについて maven-fluido-skinが最も使われていてかつ実用的と思われる。以下の記述はこのskinのv1.7を利用することを前提とする。 maven-s…

SpotBugsプラグインを元にしたSonarQubeプラグインを実装する方法

SpotBugsプラグインの実装方法には公式ドキュメントがありますが、SpotBugsプラグインをSonarQube上で実行するための手法はまだ固まっていません。最近Guava Migration HelperのSonarQubeプラグインのリリースに動いているので、要点をまとめておきます。 So…

Maven3電子書籍の利用され具合(2017年)

ほそぼそと続けているMaven3の入門書「Maven3のはじめかた」ですが、最近はprh入れたり、リポジトリの適当すぎた説明を修正したりといった微修正を行っています。 www.gitbook.com で、意外にも年間2万人のユニークユーザがついたようです。以下が2016年12月…

Mavenプロジェクト用Travis CI設定(2017年末)

今年はビルド周りで自分の常識がいろいろ変わった年だったので、既存の知見もあわせてまとめます。 Mavenのバージョンを固定する Travis CIは不定期にビルド用仮想マシンを更新しますが、そのタイミングでの最新のMavenを仮想マシンに入れるようです。このブ…

maven archetype v2の作り方

メモ。公式ドキュメントにはv1の作り方しか書いてないのだが、v2も別のドキュメント読み解けばちゃんと作れるよ、ということを教えてもらった。 https://github.com/spotbugs/spotbugs-archetype/pull/7#issuecomment-320870124

SpotBugsプラグイン実装方法2017

過去にFindBugsプラグインの実装方法について記事にしたとおり、FindBugsプラグインの実装には複雑なハックが必要でした。特にfindbugs.xmlやmessages.xmlなどのメタデータ管理が煩雑でした。 FindBugsのバグパターンを実装する - Kengo's blog FindBugsのバ…

Mirror repositories for developer in China mainland

In China mainland, default repositories are not so useful because of bad network latency. Instead of them, we should use following mirrors for better productivity. Maven central 开源中国 Maven 库 gem RubyGems 镜像 - 淘宝网 npm 淘宝 NPM 镜像

FindBugsのバグパターンをMavenでビルド&テストする

以前の記事はFindBugsバグパターンの実装方法を試行錯誤している最中に作成したものでしたが、今回はその結果どのような開発手法に行き着いたかをまとめます。Mavenベースです。 前提 findbugs.xmlをsrc/main/resourcesに置いてしまうと単体テスト実行時にエ…

My acts on the WWW in 2013

I will summarize my online actions in this year. Old articles are below: My acts on the WWW in 2011 (Japanese) My acts on the WWW in 2012 personal products I have released several personal products, and 4 of them are important to explain m…

ウェブアプリケーションサーバでよくあるクラスローダのトラブル

これはJ2EE Advent Calendarの25日目の記事です。昨日の記事はnobuokaさんによるJava Persistence API (JPA) 実践入門でした! 本記事の趣旨は、developerWorksのクラスローダーとJ2EEパッケージング戦略を理解するに書いてあることをコードで確かめようとい…

Useful libraries and Maven plugins to implement executable jar

When you implement executable jar, there is some good libraries and Maven plugins to implement. I will list them and explain how to use. args4j args4j is a good library to parse command line argument. It is more modern than commons-cli, an…

How to build FindBugs 3.0-SNAPSHOT by Maven

Now FindBugs 3.0-SNAPSHOT depends on SNAPSHOTs which is not hosted on Maven repository. To build, we have to execute install:install-file manually. $ git clone https://code.google.com/p/skypencil-findbugs/ $ cd findbugs/findbugs $ git chec…

log: Oct/7-Nov/29

Interest guavapt docker packer Output A patch to fix Maven build I have submitted a patch to FindBugs 3.0 to fix broken Maven build. https://sourceforge.net/p/findbugs/bugs/1229/ Unofficial Maven repository for jaxen Now jaxen:jaxen:1.1.6 …

log: Jul/27-Aug/17

Interests Launch4j It looks good to distribute executable files which is implemented by Java or other JVM languages. http://launch4j.sourceforge.net/ Output Maven introduction for beginners in Japanese Now Maven can be common way to build …

FindBugsコードリーディング

FindBugsをMavenizeしたツワモノがいるのでありがたくeclipse:eclipseしてコードを読んだ。srcとsrc/javaの両方がsource folderとして認識されているのでそこだけ手直ししてやる必要があったが、概ね良好。 eller86/findbugs-2.0.2 · GitHub "findbugs.execp…

技術者2年目の貴方におくる応援の言葉

やあ(´・ω・`) 呆れずにメールのリンクを開いてくれてありがとう。そうなんだ、このページは前回の続きというわけなんだ。おっと、control+wでタブを閉じるのは待ってほしい。ショートカットキーに親しんだ貴方を見られて感慨深く思うが、せっかくなので居…

log: 2013/Mar/18 ~ 31

Interests llvm-j A thin wrapper of LLVM library for Java. DOCKER I have not understood this, but it might be helpful to manage distributed system like Cassandra. Globalize I knew jquery-glob, but I did not know it switched independent libr…

Javaライブラリを配布する際のログ周りにおける配慮と実践

2020-07-22更新: 以下の投稿で情報をアップデートしています。 https://blog.kengo-toda.jp/entry/2020/07/21/223136 いつも購読させていただいている id:teppeis さんのブックマークに以下のエントリが流れてきて、なるほどこいつはたしかに厄介だと思いま…

build matrix for Maven project on Travis CI

Travis CI supports build matrix, it let you to build your project in several environment. For instance, I build my project in 6 environments: OpenJDK 1.6, SLF4J 1.6.6 OpenJDK 1.7, SLF4J 1.6.6 OracleJDK 1.7, SLF4J 1.6.6 OpenJDK 1.6, SLF4J 1…

finsbugs-slf4j version 1.0.1 released

Today I released findbugs-slf4j version 1.0.1, since I got a bug report. Now that ClassNotFoundException problem has been fixed. Getting feedback is always great experience. I am very happy :) To use latest version, what you have to do is …

log: 2013/Feb/16~24

Outputs RequireJS dependency graph plugin I found that r.js does not execute define function because it uses AST. It means that wrapping define function has no meaning. I think I need to use parentMap to know dependency, but currently I ca…