あまりシェルとか書いた事ないんだけれども。。。
mavenでよくレポジトリにファイルがないjarとか、ローカルのディレクトリをリポジトリとして指定するとかやるんですが、mavenのリポジトリ構成を作るのがわりとめんどいので、簡単なシェルを書いてみた。あんまり書いた事ないから自信はない!
#!/bin/sh OUTPUT_DIR="target" function create_md5_file(){ MD5_TMP=`openssl md5 $1` echo ${MD5_TMP##* } > $1.md5 } function write_pom_file(){ echo "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" >> $1 echo " xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">" >> $1 echo " <modelVersion>4.0.0</modelVersion>" >> $1 echo " <groupId>$2</groupId>" >> $1 echo " <artifactId>$3</artifactId>" >> $1 echo " <packaging>jar</packaging>" >> $1 echo " <version>$4</version>" >> $1 echo "</project>" >> $1 create_md5_file $1 } if [ $# -lt 1 -o $# -gt 2 ]; then echo "Usage: mkmavendir same.jar [same-sources.jar]" exit 1 fi ARTIFACT_MODULE=$1 ARTIFACT_SOURCES=$2 if [ ! -r "$ARTIFACT_MODULE" ]; then echo "$ARTIFACT_MODULE" "is not found" exit 1 fi if [ -n "$2" ]; then if [ ! -r "$ARTIFACT_SOURCES" ]; then echo "$ARTIFACT_SOURCES" "is not found" exit 1 fi fi echo -n "Define value for groupId: " read GROUP_ID echo -n "Define value for artifactId: " read ARTIFACT_ID echo -n "Define value for version: " read VERSION echo "groupId: ${GROUP_ID}" echo "artifactId: ${ARTIFACT_ID}" echo "version: ${VERSION}" echo -n "ok?[y/n]: " read CONTINUE if [ "$CONTINUE" != "y" -a "$CONTINUE" != "Y" ]; then exit 1 fi echo "[INFO] create artifact directory" ARTIFACT_DIR=${OUTPUT_DIR}/${GROUP_ID//.//}/${ARTIFACT_ID}/${VERSION} mkdir -p ${ARTIFACT_DIR} echo "[INFO] copy artifact module" cp ${ARTIFACT_MODULE} ${ARTIFACT_DIR}/${ARTIFACT_ID}-${VERSION}.jar create_md5_file ${ARTIFACT_DIR}/${ARTIFACT_ID}-${VERSION}.jar echo "[INFO] copy artifact sources" if [ -n "$2" ]; then cp ${ARTIFACT_SOURCES} ${ARTIFACT_DIR}/${ARTIFACT_ID}-${VERSION}-sources.jar create_md5_file ${ARTIFACT_DIR}/${ARTIFACT_ID}-${VERSION}-sources.jar fi echo "[INFO] generate artifact pom" ARTIFACT_POM=${ARTIFACT_DIR}/${ARTIFACT_ID}-${VERSION}.pom touch ${ARTIFACT_POM} write_pom_file ${ARTIFACT_POM} ${GROUP_ID} ${ARTIFACT_ID} ${VERSION} echo "[INFO] ------------------------------------------------------------------------" echo "[INFO] SUCCESSFUL" echo "[INFO] ------------------------------------------------------------------------" exit $?
なんとなくmaven風の出力にしてみた。
使いは
$ ./mkmavendir.sh hoge.jar hoge-sources.jar Define value for groupId: : aaa.bbb Define value for artifactId: : ccc Define value for version: : 1.0 groupId: aaa.bbb artifactId: ccc version: 1.0 ok?[y/n]: :y [INFO] create artifact directory [INFO] copy artifact module [INFO] copy artifact sources [INFO] generate artifact pom [INFO] ------------------------------------------------------------------------ [INFO] SUCCESSFUL [INFO] ------------------------------------------------------------------------ $ ls target/aaa/bbb/ccc/1.0/ ccc-1.0-sources.jar ccc-1.0-sources.jar.md5 ccc-1.0.jar ccc-1.0.jar.md5 ccc-1.0.pom ccc-1.0.pom.md5
あ、macでしか動作確認してません!