Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@aki-f

maven repogitory をgitlabのpagesで作成する。

そもそもmavenリポジトリとは?

ビルド済みjarファイルのライブラリを配布するハブ空港みたいなもの。

今回はmavenセンターやjcenterなどの国際線空港を使わずに、gitlab pagesを使って自宅にヘリポートを作る試みです。

サーバーが自由に使えるならnexusなどを立ち上げればいいので、色々事情があって、gitlabプロジェクト単体でサポートしたい試みです。

mavenリポジトリの仕様はただの静的なwebページであることが最大のポイントです。実際にmaven deployせずに手動でnexusに登録することもできます。この仕組を再現する。つまり、mavenに頼らず、全てCIで管理する。

作ったもの

https://gitlab.com/akihirof0005/hello
で自動生成するリポジトリの
https://akihirof0005.gitlab.io/hello/
のURLです。

 やっていること

## 
dir=`pwd`
mkdir -p ./public/org

## latest version
sed -i -e 's/<version>.*replace-->$/<version>latest<\/version>/' pom.xml
mvn -Dmaven.repo.local=./repo/ clean install
mv ./repo/org/sample ./public/org

## javadoc
mvn javadoc:javadoc
mv ./target/site/apidocs ./public/

## releases version
json=`curl "https://gitlab.com/api/v4/projects/17557723/releases?private_token=$CI_DEPLOY_PASSWORD"`
len=$(echo $json | jq length)
for i in $( seq 0 $(($len - 1)) ); do
  version=$(echo $json | jq -r .[$i].name)
  link=$(echo $json | jq -r .[$i].assets.links)
  len2=$(echo $link | jq length)
  mkdir "$dir/public/org/sample/hello/$version"
  cd "$dir/public/org/sample/hello/$version"
  for k in $( seq 0 $(($len2 - 1)) ); do
    curl $(echo $link | jq -r .[$k].url) -o  $(echo $link | jq -r .[$k].name)
  done
done

## create index.html
cd "$dir/public"
curl "https://gist.githubusercontent.com/andyferra/2554919/raw/10ce87fe71b23216e3075d5648b8b9e56f7758e1/github.css" -o ./github.css
pandoc -s ../README.md -t html5 -c github.css -o ./index.html
echo "<html><body><h1>Directory listing:</h1>" >> ./index.html
find ./org/sample/hello/ -exec echo "<a href='{}'>{}</a><br/>" \; >> ./index.html
echo "</body></html>" >> ./index.html

 使ってみる

こちらから、gradleで検証した。

お願い

mavenリポジトリの仕様に詳しい方などいらしたら詳しいツッコミをお待ちしています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?