いっぽんの猟銃のむこうに (DAIZOじいさんとGun)

ヌルめの技術メモとか。フリーランスやってます (http://acez.jp/)

Maven

SVNのリビジョン番号をビルド時にアーカイブファイル内の特定ファイルに含める

ビルドしたwarファイルの中身がいつのリビジョンの奴か見れるようにしておきたい、 みたいなことを言われたときに。コマンドライン用のsvnをあらかじめ入れといて、以下をpom.xmlに追加。 <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>generate-resources</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> </tasks></configuration></execution></executions></plugin>

ejb内部のwar, jar等をアーカイブしない

以下のようにearのpom.xmlに trueを追記する。 <webModule> <groupId>test</groupId> <artifactId>test</artifactId> <contextRoot>/test</contextRoot> <bundleFileName>test.war</bundleFileName> <unpack>true</unpack> </webModule>こうすると.warとか.jarとかに固められないので中を見るときとか ちょっとは楽になるかもしれない。

pom.xmlで共通のプロパティを定義する

定数定義みたいなことをしたい場合。propertiesをつかう。親のpom.xml (略) <packaging>pom</packaging> <name>Parent Project</name> <properties> <local.fix.version>1.0.0</local.fix.version> </properties> (略)で、子のpom.xmlで (略) <dependency> <groupId>local_libs</groupId> <artifactId>opencsv</artifactId> <version>${local.fix.version}</version></dependency>

ビルドした成果物にいらないライブラリが勝手に含まれる

大抵scopeが「compile」になってる。 「compileだからコンパイル時にだけ使われるんじゃねーの?」って思いがちだけど、 それをしたいなら「provided」を指定しないとダメ。 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>ぼけーっとしてるからか、僕だけなのか…

Test reports were found but none of them are new. Did tests run?  とかいわれる

時刻とかがNTPとかでそれなりに同期されててもこれが出るときは、 他の設定ファイル(POM.xml)の不具合を疑ったほうがいい。ぜんぜん関係ないはずのをコメントアウトしたらこのエラーが出た。 一度に一箇所ずつ直すのを徹底しないと大変なことになるかもしれ…

coberturaでカバレッジが二回走る

http://d.hatena.ne.jp/ssogabe/20091115/1258211831 とかにも書かれてて、どうも既存の問題っぽいのだけれど、ここに書かれてる 対策取ってもうまくいかなかった。要は mvn package と coberture:cobertura で二回JUnitテストが回ってしまうみたい。それで…

ある日突然mvn cobertura:cobertura does not work with Archiva repository set as mirror

$ mvn -e -X -U とかオプションつけてライブラリを更新すると直ったりした。にしてもMavenの中央リポジトリライブラリの仕組みはなんともびみょー。 たしかに便利なんだけどさー。なんかアクセスすげー遅いし。うーん。

java.lang.OutOfMemoryError: PermGen spaceで落ちる

pom.xmlの設定でJavaVMメモリを上げてやる。 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.3</version> <configuration> <skip>false</skip> <includes> <include>**/*Test.java</include> </includes> <excludes> <excludes>**/Generic*</excludes> </excludes> …</configuration></plugin>

Hudsonで使うpom.xmlにcobertura-maven-plugin設定するとこける

以下のような感じでHudsonで使うpom.xmlにcoberturaを設定すると ビルド失敗するようになった。 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.4</version> <configuration> <formats> <format>html</format> </formats> </configuration> </plugin>理由は不明。たぶん髭のおっさんの機嫌を損ねたんだとおもう。

mavenのJUnitでTest class should have exactly one public constructorとかなってこける

インナークラスが*Testって名前になってないか確認する。これはeclipse経由でのJUnitだと普通に流れるが、mavenのsurefireだとこける。まあそもそもそんなの書くなよって感じだけど、インナークラスはテスト実行させなくてよいって場合は、以下のように記述…

Maven 社内リポジトリの作成

Maven 社内リポジトリの作成 ■事前準備 mavenのインストール apacheのインストール 公開リポジトリ用ディレクトリの作成(ex. /var/www/html/repo/ e.g. http://192.168.153.128/repo/) アクセス権限は適切になっていること ■作業方針 ローカルリポジトリにja…

Maven 導入(Linux系)

■前提条件 JDKがインストールされ、パスが通っていること。■ダウンロード # cd /usr/local/ # wget http://ftp.riken.jp/net/apache//maven/binaries/apache-maven-2.2.1-bin.tar.gz # tar xzvf apache-maven-2.2.1-bin.tar.gz■環境変数設定 [root@localhost…

mavenでcoberturaプラグインの設定

公式ページ http://mojo.codehaus.org/cobertura-maven-plugin/usage.htmlに書いてあるのが間違っていて動かない。正しくは以下。 <project> ... <build> ... <plugins> ... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.4</version> <configuration> <formats> <format>html</format> </formats></configuration></plugin></plugins></build></project>