読者です 読者をやめる 読者になる 読者になる

倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

どんとこいタイプ・アノテーション! Checker Framework 導入あの手この手 ~without IDE 編~

前回の記事『ラムダ式やストリーム API や新しい日時 API だけじゃない! Java8 のタイプ・アノテーションあの手この手』で、Java8 で導入されたタイプ・アノテーションがどういったものか紹介しました。 その記事では同一要素に重複して同じアノテーション…

Spock ことはじめ ~without IDE 編~

Java/Groovy のテスティング・フレームワーク Spock の使い方をあれこれ調べてみました。 まぁ、Gradle 使えるならそれに越したことはないですが、なんとなく Maven3 やコマンドラインからの使用方法も試してみました。どうも Maven3 から GMaven が Groovy …

GMaven 1.3 での pom.xml

GMaven 1.3がリリースされていたので使ってみた(参照 URL : Ben Tilford's Blog「GMaven 1.3 is out」)。このバージョンでは configuration 要素の sourceEncoding, source, target が動作するようになった Java スタブコードで java.util.*, java.io.* …

Groovy プロジェクトを Maven2 でコンパイルしてみたら・・・

なんか、やたらとコンパイルエラーがでますねぇ・・・(^ ^;) ほとんどライブラリのダウンロード(+ちょっとしたスクリプト)にしか使ってなかったので、問題ないかと思ってたけど、あまり気持ちのいいものじゃないですねぇ。IntelliJ IDEA 上でコンパイル&…

イカす達人 (8) : テストにだけ Groovy を使うプロジェクト

以前に Maven2 プロジェクトで Groovy を使用する方法を見ました(一覧)。 ただし、Groovy は便利で、Java と Groovy がシームレスに連携できるとはいえ、いきなり Java プロジェクトを Groovy プロジェクトに変更できるとは限りません。そこで、メインコー…

GMaven プラグインを作ろう! (4) : GMaven プラグイン・プロジェクトを生成する Groovy スクリプト

GMaven プラグイン・プロジェクトの pom.xml は結構複雑なので(以前の記事)毎回書くのは大変です。 そこで Groovy の練習を兼ねて、テンプレートを生成するスクリプトを書いてみました(GMavenPluginArchetype.groovy)*1(一覧)。スクリプトの実行 上記…

GMaven プラグインを作ろう! (3) : GroovyMojo、プラグインのインストール&使用とか

今回はプラグインのインストール&使用とか(一覧)。GroovyMojo クラス GMaven プラグインで行う処理を実装するのは GroovyMojo のサブクラスです。 なので、GMaven プラグインには最低1つは以下のようなクラス(GroovyMojo クラス)を作成する必要がありま…

GMaven プラグインを作ろう! (2) : GMaven プラグイン・プロジェクトの pom.xml

今回は GMaven プラグイン・プロジェクト(Groovy による Maven2 プラグインを開発するプロジェクト)の pom.xml を見ていきます(一覧)。まずその前に、お詫びと訂正を。 別に拙者が悪いわけではないんですけど。 前回見た GMaven プラグイン・プロジェク…

プロジェクトのテンプレートが・・・

「対話的に Maven2 プロジェクトを生成する」際のコマンド mvn archetype:generate を実行すると、プロジェクトのテンプレートが249個も出てくるんですけど! 「番号で選べ」って言われても探しきれない! しかも番号が前のモノから変わってるし!挙げ句の果…

GMaven プラグインを作ろう! (1) : GMaven プラグイン・プロジェクトの生成

今回から何回かにわたって、Groovy を使った Maven2 プラグイン(以下「GMaven プラグイン」)の開発方法を見ていきます(Implemeting Maven Plugins 参照)。 今回は GMaven プラグイン・プロジェクトの生成方法(一覧)。 GMaven プラグイン・プロジェクト…

イカす達人 (7) : その他、GMaven でできること

GMaven の全ての機能を紹介するのは面倒なので、GMaven できることを列挙してみました(一覧)。 大きく分けて次の2つ: Groovy コードを実行する GMaven のその他のゴール 詳しくは各表の「ドキュメント」に張っているリンクを参照。Groovy コードを実行す…

イカす達人 (6) : Groovy コード内で使用できる定義済み変数

前々回、前回に Maven2 で Groovy コードを実行する方法を見ましたが、このコード中で、自分で定義する必要なく使用できる「定義済み変数」がいくつかあります。 今回はそれらと、それらのプロパティを見ていく、というか参考のために列挙しておきます(一覧…

イカす達人 (5) : フェイズ実行時に Groovy コードを実行する

前回に引き続き、今回は「フェイズ実行時」に Groovy コードを実行する方法を見ていきます(一覧)。今回以降、特に必要がない限り Groovy 1.7 ではなく、Groovy 1.6 (GMaven 1.2) の環境を前提とします。pom.xml 実行したい Groovy コードは前回と同じく pr…

イカす達人 (4) : Groovy コードを実行する

今回は Maven2 で Groovy コードを実行する方法を紹介(一覧)。 「Executing Groovy Code」を参考にしてます。前々回と同じように、GMaven のサポートのせいで Groovy 1.7 以降を使うにはいろいろ設定が必要です。 とはいっても、ここで Groovy 1.6 を使っ…

イカす達人 (3) : GMaven プロジェクトのコンパイル、テスト、インストールとか

GMaven プロジェクトのコンパイル、テスト、インストールとか GMaven を使って作成した Groovy プロジェクトを「GMaven プロジェクト」と呼ぶことにします(一般的には使われてないと思いますが)。前回は GMaven プロジェクトの作成方法を見ました(一覧)…

イカす達人 (2) : Maven2 流 Groovy プロジェクト with Groovy 1.7

前回、GMaven でプロジェクトを生成する方法を見ましたが、どうもドキュメントが古いようで Groovy のバージョンが 1.5.6 とかでしか使えないので、Groovy, GMaven ともにもう少し新しいバージョンのものを使えるようにしましょう(一覧)。今回の内容: プ…

イカす達人 (1) : Maven2 流 Groovy プロジェクト

今回から何回かにわたり、GMaven の使い方を見ていきます(一覧)。今回の内容 プロジェクトを生成する 対話的にプロジェクトを生成する パラメータを指定してプロジェクトを生成する 生成されるプロジェクト ディレクトリ構造 pom.xml プロジェクトを生成す…

記事を整理

Maven2 関連の記事を整理しました(→) Apache Maven 2.0入門 Java・オープンソース・ビルドツール作者: 野瀬直樹,横田健彦出版社/メーカー: 技術評論社発売日: 2006/12/13メディア: 大型本購入: 8人 クリック: 141回この商品を含むブログ (97件) を見る

Archetype -- generate ゴール (2):パラメータを指定してプロジェクトを作成する

今回は「パラメータを指定してプロジェクトを作成する」方法を見ていきます(一覧)。 この方法は、Archetype プラグインの「create ゴール」と同じです*1。パラメータを指定してプロジェクトを作成する プロジェクト生成の流れは以下のようになります: コ…

Archetype -- generate ゴール (1):対話的にプロジェクトを作成する

最近あまり使っていなかったので更新に疎くなっていましたが、Archetype プラグインの「generate ゴール」がそれなりに使いやすくなっているようなので、使い方を見てみましょう。 といっても、以前の記事と内容はあまり変わりませんが*1。プロジェクトの作…

Maven2 プロジェクトで JSON を使う

Maven2 プロジェクトで JSON を用いるためには、プロジェクトの POM ファイルに以下のような <dependency> 要素を付加します: <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20070829</version> </dependency> JSON を使ったサンプル Maven2 とはあまり関係ありませんが、『Ajax&JavaーJavaプログラマのためのAjaxプライマー</dependency>…

Web アプリケーション開発のための Maven2 プロジェクト(4):ローカル・サーバへの配備

初めて Web アプリケーションを配備する 開発中のプロジェクトをビルドしてローカル・サーバへ配備 (deploy) するには、プロジェクトのベース・フォルダ上でコマンド mvn tomcat:deploy を実行します。 このコマンドで、デフォルトのビルド・ライフサイクル…

Web アプリケーション開発のための Maven2 プロジェクト(3):ローカル・サーバの設定

Web アプリケーションを開発する際、実際にローカル・サーバなどのサーバに配備 (deploy) して挙動を確認する作業をする必要があります。 ローカル・サーバに Tomcat を用いている場合、「tomcat-maven-plugin」によって、Web アプリケーションを配備する処…

Web アプリケーション開発のための Maven2 プロジェクト(2):プロジェクトの Eclipse 上への読み込み

Eclipse プロジェクトの設定ファイルを生成する プロジェクトのベース・フォルダ上で以下のコマンドを実行します: mvn eclipse:eclipse Eclipse 上へプロジェクトを読み込む Eclipse 上で、[メニュー]File → Import として 「Import ダイアログ」を開き、下…

Web アプリケーション開発のための Maven2 プロジェクト(1):Maven2 プロジェクトの新規作成と設定

Maven2, Eclipse, Tomcat を用いて Web アプリケーションを開発する環境を構築してみましょう(一覧)*1。 あまり本格的なものは扱いません。 ほぼ最低限の設定のみです。 また、Maven2, Eclipse, Tomcat はそれぞれインストールされているものとします。環…

javax.xml.validation で RELAX NG を使うための POM プロジェクト

前回、Maven2 プロジェクト内で RELAX NG による妥当性検証を行うために必要なライブラリの設定の仕方をみました。ただし、それらを毎回 POM ファイルに書くのは面倒なので、それらの依存性を別の POM プロジェクトに書いて、それを再利用できる用にしましょ…

javax.xml.validation で RELAX NG を使う in Maven2 プロジェクト

RELAX NG を用いて妥当性検証を行うには、幾つかのライブラリを CLASSPATH に含める必要がありました。 必要なのは msv (multi schema validator) とその関連ライブラリ msv isorelax relaxngDatatype xsdlib それに加えて、msv と javax.xml.validation パ…

「アスペクト・ライブラリを作る」への注意

前回までに、アスペクト・ライブラリの作成の仕方を見てきました。 今回は、アスペクト・ライブラリの作成に当たっての注意を1つ。アスペクト・ライブラリの作成方法を書くに当たって参考にしたドキュメントは、AspectJ のコンパイル&織り込みを行うツール…

アスペクト・ライブラリを作る 其ノ参 -- アスペクト・ライブラリを使用する

今回は、前回作成したアスペクト・ライブラリを使用してみましょう。アスペクト・ライブラリを使用するプロジェクトは「greeting-app」とします。pom.xml とりあえず、サンプルを。 <project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>greeting-app</artifactId> <packaging>jar</packaging> <version>0.1</version> <dependencies> <dependency> <groupId>org.s…</groupid></dependency></dependencies></project>

アスペクト・ライブラリを作る 其ノ弐 -- 「アスペクト・ライブラリ」プロジェクト

今回は、前回のサンプル・ライブラリに対するアスペクト・ライブラリを作成しましょう。 プロジェクト名は「greeting-lib」とします。pom.xml とりあえずサンプルを。 <project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>greeting-lib</artifactId> <packaging>jar</packaging> <version>0.1</version> <dependencies> <dependency> <groupId>org.sample<…</groupid></dependency></dependencies></project>

アスペクト・ライブラリを作る 其ノ壱 -- サンプル

アスペクト指向プログラミングの1つの使用法として、「既存のライブラリにアスペクトを織り込んで、機能を拡張する」というものがあります。 この織り込む機能を実装した AspectJ コード(と成果物)を「アスペクト・ライブラリ」と呼びましょう。今回から何…

Archetype -- 以前の方法でプロジェクトを作成する

前回、対話的にプロジェクトを作成する方法を見ました。ただし、この方法では独自の archetype を使ったプロジェクト生成ができない(っぽい)ので*1、以前の方法でプロジェクトを生成する方法を見てみましょう。概要 一般には、以前のバージョンのライブラ…

Archetype -- 対話的にプロジェクトを作成する

Maven1.x では出来ていた「対話的にプロジェクトを作成する」ことが、やっとこさ Maven2 でも出来るようになりました(こちらやmarsのメモを参考)。作成方法 適当なフォルダ上でコマンド「mvn archetype:creategenerate」を実行すると、プロジェクト作成プ…

プラグインを作ろう!(15) -- @component:Maven2 内のコンポーネントを取得する

前々回、Mojo 内からPOM ファイル内の要素(をモデル化したオブジェクト)を取得する方法を見ました。今回は POM ファイル内ではなく、Maven2 内で動いているコンポーネントを取得する方法を見てみましょう。 ただし、取得の仕方は簡単ですが、どうやって使…

プラグインを作ろう!(14) -- プロジェクトの構成要素を扱ったプラグインのサンプル

前回、@parameter アノテーションを使用してプロジェクトの構成要素を取得する方法を見ました。 今回は、これを用いて簡単なサンプル・プラグインを作ってみましょう。サンプルの概要は、「maven-compiler-plugin にエンコーディングが設定されていれば、そ…

プラグインを作ろう! (13) -- プロジェクトの構成要素を取得する

プロジェクトの構成要素の取得方法 以前の記事で、パラメータ(JavaDoc アノテーション「@parameter」を付加したフィールド)に値を代入するには引数 expression を付加ればいいというのを見ました: /** * @parameter expression="${project.packaging}" */…

プラグインを作ろう! (12) -- その他のパラメータレベル・アノテーション

今回は、パラメータに付加するアノテーションを幾つかご紹〜介。 詳しくはこちらを参照。@required 必ず設定が必要なパラメータがある場合、「@required アノテーション」を付加します: /** * @parameter * @required */ private String target もし POM フ…

プラグインを作ろう! (11) -- パラメータ値の型:multiple value

前回に続き、今回は「多重値 (multiple value)」*1のパラメータを見ていきましょう。 「多重値」とは、配列やコレクション・フレームワーク内の型などのことです。使用できる「多重値」の型 具体的な「多重値」の型には以下のようなものがあります: 配列 ja…

プラグインを作ろう! (10) -- パラメータ値の型:one value

前回はパラメータの定義の仕方を見ましたが、パラメータ値の型は文字列 (String) としていました。 実際には文字列以外にもいろいろな型のパラメータを定義することができます。パラメータ値の型は、プリミティブ型のような「単一値 (one value)」と、コレク…

プラグインを作ろう! (9) -- @parameter:パラメータを使う

Mojo も Java オブジェクトなのでフィールドを宣言して使用することが多いと思いますが、そのフィールドの値を外部から設定できるようにしておくと柔軟性が向上します。 Mojo ではこれをパラメータと呼びます。以下でパラメータの定義や設定の仕方を見ていき…

プラグインを作ろう! (8) -- その他のクラスレベル・アノテーション

今までに「@goal」「@phase」「@execute」という3つのアノテーションを紹介しました。 これらはどれもクラスに付加するアノテーションでした。 その他にも幾つかクラスに付加するアノテーションがあります。 詳しくはこちらを参照。幾つかを簡単にご紹〜介*1…

プラグインを作ろう! (7) -- @execute:事前に他の処理を呼び出す

前回は、あるフェーズを実行したときに作成した mojo の処理を割り込ませる方法を見ました。 今回は自作の mojo を実行する際に、(事前に)他のフェーズやゴールの処理を呼び出す方法を見ていきます。これには「@execute アノテーション」を使います。サン…

プラグインを作ろう! (6) -- @phase:他のフェーズに処理を割り込ませる

前回は自作の mojo にゴール名を設定する仕方を見ました。 これによって、コマンド・プロンプトから自作のプラグインを実行できるようになりました。しかし実際には、何らかのフェーズ(例えばコンパイルやインストールなど)が実行されたとき、それをトリガ…

プラグインを作ろう! (5) -- @goal:ゴール名を設定する

前回までで Mojo インターフェースの仕様に関する事項は概ね終わりました。ただし、Mojo インターフェースの実装を提供するだけではまだ実際に動く mojo にはならなくて、少なくとも作成した Mojo の実装に「@goal アノテーション」*1を付加する必要がありま…

プラグインを作ろう! (4) -- Mojo#execute() と例外

Mojo#execute() メソッドを実装する際、このメソッド内で投げることの出来る例外は「MojoExecutionException」と「MojoFailureException」の2つだけです。 どちらも実行時例外ではなく、補足すべき例外です。 例外 表示されるメッセージ 内容 MojoExecutionE…

プラグインを作ろう! (3) -- Log

今回は、処理の実行中にコンソール等にメッセージを出力する方法を見てみましょう。 これには Mojo#getLog() メソッドで取得できる Log オブジェクトを使います。Log インターフェース Log インターフェースは、定義されているメソッド、使い方などが common…

プラグインを作ろう! (2) -- Mojo, AbstractMojo

前回は独自プラグインを作成するための Maven2 プロジェクト「Mojo プロジェクト」の作成・インストール・実行の手順を見ました。今回からは、プラグインで行う処理を実装する仕方を見ていきます。 Java 以外の言語を用いて処理を実装することもできるそうで…

プラグインを作ろう! (1) -- Mojo プロジェクトの作成・インストール・実行

Maven2 を用いてビルドを行う際、独自の処理を織り込みたいこともあるかと思います。 なので、何回かに渡って Maven2 プラグインの作成方法を見ていきましょう。 公式にはこちらを参照。基本的なステップは以下の通り: Mojo プロジェクトを作成する 処理を…

commons-logging-1.1.1 リリース

commons-logging-1.1.1 が Maven2 のリモート・リポジトリにアップされました。 以前の記事に書いた「依存性の <optional> 設定が間違っている」という問題点は改善されておりまする。 めでたし、めでたし。 Apache Maven 2.0入門 Java・オープンソース・ビルドツール</optional>…

プロジェクトを持ち運ぶ・バックアップをとる

以前の記事で、プロジェクトの成果物をアーカイブにまとめる方法を見ました。 同様の方法で、ソース・コードなどをアーカイブにまとめることも出来ます。アーカイブの生成方法は「assembly 記述子」というファイルで指定し、事前に定義されている「assembly …