Maven で headless build.バッドノウハウ,ザクザク
うへぇ.バッドノウハウの塊っぽいぞ.でも便利ではある.困ったもんだなぁ.
featureのバージョンをqualifierにしている場合の回避法.
featureのバージョンをqualifierにしていると,ビルドまでは通るが,installやdeploy時にエラーになる.
[INFO] [install:install] [INFO] Installing /Users/monaka/svk/pizza-ipa-oss/3.2/crosschains/common/trunk/features/jp.pizzafactory.crosschains/jp.pizzafactory.crosschains_1.0.0.qualifier.bin.dist.zip to /Users/monaka/.m2/repository/jp/pizzafactory/crosshains/common/3.2.2-SNAPSHOT/common-3.2.2-SNAPSHOT.zip [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error installing artifact: File /Users/monaka/svk/pizza-ipa-oss/3.2/crosschains/common/trunk/features/jp.pizzafactory.crosschains/jp.pizzafactory.crosschains_1.0.0.qualifier.bin.dist.zip does not exist
こんな感じ.
試行錯誤した結果,antrunとreplaceタスクを使うのが楽そうだという結論になった.
<plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>process-resources</phase> <configuration> <tasks> <replace file="feature.xml" token=".qualifier" value=".${project.version}" /> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
こんな感じ.運用上の制約事項がいくつかある,project/version の値には「.」を含めてはいけない.また,同名のフィーチャーで中身が違う物がたくさんできる可能性がある.まあ,リリースタグを打った後のコンテンツに.qualifier 入りのバージョンを入れるような無神経には,対応しなくてよいのではなかろうかと.