先人が用意してくれたappassemblerプラグインが入ってるプロジェクトを久しぶりにビルドしたら、programタグで指定している実行ファイルの最後の、実行するところに
@APP_ARGUMENTS@ \
とかっていうのが付いてる。
exec "$JAVACMD" $JAVA_OPTS \ $EXTRA_JVM_ARGUMENTS \ -classpath "$CLASSPATH" \ -Dapp.name="exsecuter" \ -Dapp.pid="$$" \ -Dapp.repo="$REPO" \ -Dbasedir="$BASEDIR" \ foo.bar.Executer \ @APP_ARGUMENTS@ \ "$@"
shebangに/bin/shって書いてるからshスクリプトでいいと思うんですが、@APP_ARGUMENTS@の意味がわかりません!
なので、古いバージョンを指定することに。
全然理解してないからなにがベターなのかわからないため、いくつか選択肢があって、はじめはpluginRepository> releases > enableタグで指定してたのを丸ごとfalseにしようかと思いましたが、
<pluginRepositories> <pluginRepository> <id>codehaus snapshot repository</id> <url>http://snapshots.repository.codehaus.org</url> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories>
codehaus系のプラグインがごっそりバージョン変わったらやだなと思ったので、versionタグで明示的に指定するようにしてみた。
http://snapshots.repository.codehaus.org/org/codehaus/mojo/appassembler/maven-metadata.xml をみたら
<?xml version="1.0" encoding="UTF-8"?><metadata> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler</artifactId> <version>1.0-SNAPSHOT</version> <versioning> <versions> <version>1.0-SNAPSHOT</version> </versions> <lastUpdated>20070315151920</lastUpdated> </versioning> </metadata>
としか書いてなくて、一個前の20061130のが指定できない。なので、http://repo1.maven.org/maven2/org/codehaus/mojo/appassembler/maven-metadata.xml のほうをみて
<?xml version="1.0" encoding="UTF-8"?><metadata> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler</artifactId> <version>1.0-alpha-1</version> <versioning> <release>1.0-alpha-2</release> <versions> <version>1.0-alpha-1</version> <version>1.0-alpha-2</version> </versions> <lastUpdated>20061130140416</lastUpdated> </versioning> </metadata>
と書いてあったので、
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions>
と記述して一応以前と同じように動きました。
mvn help:describe -Dplugin=appassembler -Dwar:assemble -Dfull=true
ってやるとヘルプドキュメントが一応見られますが、しっかり書いてあるのばかりじゃないですね。