その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

Maven Archetype で ## がコメントとして扱われるのでなんとかする

Maven Archetypearchetype を作る時,archetype に含めるファイルの中に ## が入っていると行のそれ以降がコメントとして扱われる為,内容が抜け落ちてしまうというような事があります.
例えば Markdown 形式のファイルなんかを archetype 内に含めていると悲惨で,

## My Awesome Project!

という風に,見出しを期待して ## から始める文を書いてしまうと,これはコメントとして扱われ空行として出力されることになります.
これはMaven Archetype が内部で使っている Apache Velocity が ## をコメントとして扱う為です.ジーザス.


こうした時にどうやって archetype 中のファイルで ## を使うのか,という話ですけれども,archetype-resources/pom.xml の先頭に #set($sharp = '#') と書いてやるとよろしい.


例;

#set($sharp = '#')
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
</project>

こうすると,$sharp という変数が # として扱われるようになります.
そして ## が含まれるファイルはこのように書き換える;

${sharp}${sharp} My Awesome Project!


見た目は悪いがコイツは動く.