2012年03月12日(月) [長年日記]
■ [java] JenkinsにNetBeansのbuild.xml用のJUnitのjarファイルを指定する
NetBeansがプロジェクト用に生成するbuild.xmlのtestターゲットをJenkinsで実行しようとしたら、JUnitのクラスを見つけられなくてエラーになってしまった。NetBeansのバージョンは7.0.1(ちょっと古い)だけど、build.xmlを生成したのはもっと前のバージョンかもしれない。
検索すると ANT_HOME/lib にjunit.jarを置けばうまくいきそうなんだけど、手元ではこうしても結果は変わらなかった。
build.xmlがimportしているbuild-impl.xmlを一生懸命読んだ所、nbproject/project.properties ファイル内で libs.junit_4.classpath というプロパティをテスト時のクラスパスに設定していることが分かった。
なので、Jenkinsのジョブの設定画面の「ビルド」の「Antの呼び出し」の「高度な設定」の「プロパティ」欄に「libs.junit_4.classpath=junit.jarのフルパス」のように書いたらうまくいくようになった。
■ [java] NetBeansのbuild.xmlを使うとテスト失敗時にJenkinsの結果が赤になる
Jenkins上でJUnitが動くようになったけど、テストが1つでも失敗すると結果がfailed(赤)になってしまう。このケースではunstable(黄)になって欲しい。再びbuild-impl.xmlを読む。やれやれ。
testターゲットでは、j2seproject3:junit というタスクが使われていていた。このタスクの実体は、同ファイルの-init-macrodef-junitターゲットに定義されている。該当箇所の最初だけ引用:
<target name="-init-macrodef-junit"> <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3"> <attribute default="${includes}" name="includes"/> <attribute default="${excludes}" name="excludes"/> <attribute default="**" name="testincludes"/> <sequential> <property name="junit.forkmode" value="perTest"/> <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
最後の行の「errorproperty="tests.failed" failureproperty="tests.failed" 」で、テストがエラーまたは失敗するとtests.failedというプロパティがtrueになるようにしているようだ。エラーと失敗を区別しないのか。
そして、別の箇所に
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run"> <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail> </target>
とあって、tests.faildがtrueだとfailタスクでAntをエラー終了させていた。この部分を見ると、ignore.failing.testsというプロパティがtrueの場合はfailタスクが動かないようなので、上のlibs.junit_4.classpathと同じようにしてJenkinsの設定に
ignore.failing.tests=true
を追記したら、テストが失敗したときに赤ではなく黄色になるようにできた。
2012年03月14日(水) [長年日記]
■ [windows] バッチプログラム内でバッチプログラムを呼び出す
Windowsでantコマンドを複数回呼び出すバッチプログラムを作ったが、1回目のantコマンドしか実行してくれない。
調べると、バッチプログラムからバッチプログラムを呼び出したときは制御が戻ってこない仕様みたい。制御を戻してほしい時はcallコマンドを使えばいいようだ。
コマンドライン リファレンスからcallコマンドの説明を引用。
- Call
- 親バッチ プログラムを停止せずに、あるバッチ プログラムから別のバッチ プログラムを呼び出します。call コマンドでは、ラベルを呼び出し先として使用できます。Call は、スクリプトまたはバッチ ファイル以外で使用した場合は、コマンド ラインで効力を生じません。
- 構文
- call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
2012年03月24日(土) [長年日記]
■ [java] Javaの日本語ドキュメント
http://java.sun.com/ が繋がらない。そうするとJavaの日本語ドキュメントが読めなくて困る。
英語でよければ
で見られるが、オラクルのサイトに日本語版は見当たらない。
ちょっと探して、次のページで日本語ドキュメントがダウンロードできるようになっているのを見つけた。
「※HTMLファイルを圧縮し、提供しております」とあるけど、圧縮はされておらずダウンロードに時間がかかる。
(追記)
オラクルのサイトで日本語ドキュメントが公開されるようになっていたのでメモ。
- 続:旧 Java SE API リファレンスへの新しいリンク先変更について (寺田 佳央 – Yoshio Terada)
あと、java.sun.com は、トップページはオラクルのサイトへリダイレクトされてしまうけど、配下にあるドキュメントは読めるみたい。
■ やること
- 請求書