SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
Report
Y Watanabe
Follow
Sofrware Developer at ビズリーチ (BizReach)
Apr. 5, 2014
•
0 likes
•
7,876 views
1
of
26
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
Apr. 5, 2014
•
0 likes
•
7,876 views
Download Now
Download to read offline
Report
Technology
Y Watanabe
Follow
Sofrware Developer at ビズリーチ (BizReach)
Recommended
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
Y Watanabe
3.7K views
•
21 slides
Maven基礎
Toshio Takiguchi
44.3K views
•
40 slides
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
Y Watanabe
4.2K views
•
45 slides
Apache Archiva を試す
bouzuya
4.2K views
•
11 slides
Web技術勉強会 第30回
龍一 田中
664 views
•
18 slides
Web技術勉強会 第31回
龍一 田中
730 views
•
10 slides
More Related Content
What's hot
chat bot framework for Java8
masahitojp
1.3K views
•
14 slides
Jenkins+Maven活用術
cynipe cynipe
5.2K views
•
15 slides
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
Y Watanabe
4.7K views
•
17 slides
Vagrantと網元で開発環境を作ってみよう
Takuma Morikawa
4.3K views
•
64 slides
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
13K views
•
51 slides
Cpi mega mix
Ryuji Egashira
1.7K views
•
47 slides
What's hot
(20)
chat bot framework for Java8
masahitojp
•
1.3K views
Jenkins+Maven活用術
cynipe cynipe
•
5.2K views
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
Y Watanabe
•
4.7K views
Vagrantと網元で開発環境を作ってみよう
Takuma Morikawa
•
4.3K views
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
•
13K views
Cpi mega mix
Ryuji Egashira
•
1.7K views
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
•
2.8K views
laravel x モバイルアプリ
Masaki Oshikawa
•
3.6K views
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
•
3.7K views
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
•
12.4K views
Mojolicious::Liteを使ってみよう
charsbar
•
4.4K views
Mojoliciousでつくる! Webアプリ入門
Yusuke Wada
•
22.2K views
capybara で快適なテスト生活を
Ryunosuke SATO
•
14.7K views
フレームワークを使うべき 3 つの理由
Kenichi Mukai
•
15.5K views
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
Yuki Minakawa
•
3.4K views
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
•
37.1K views
Mojolicious+redisでチャットを作った
Tetsuya Tatsumi
•
3.8K views
Gradleどうでしょう
Takuma Watabiki
•
17.2K views
Gradle布教活動
Nemoto Yusuke
•
2K views
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Koichi Sakata
•
4.1K views
Similar to 20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
VC6によるRuby拡張ライブラリ開発環境について
goritto
355 views
•
27 slides
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
10.1K views
•
38 slides
Sflt17 meteorではじめる最速ウェブアプリ開発
Hironao Sekine
1.5K views
•
8 slides
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
5.4K views
•
37 slides
Harmoware-VIS Tutorial
Nobuo Kawaguchi
941 views
•
165 slides
OpenShift のある生活
Yoshimasa Tanabe
3.6K views
•
19 slides
Similar to 20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
(20)
VC6によるRuby拡張ライブラリ開発環境について
goritto
•
355 views
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
•
10.1K views
Sflt17 meteorではじめる最速ウェブアプリ開発
Hironao Sekine
•
1.5K views
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
•
5.4K views
Harmoware-VIS Tutorial
Nobuo Kawaguchi
•
941 views
OpenShift のある生活
Yoshimasa Tanabe
•
3.6K views
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
Yoshiharu Hashimoto
•
1.9K views
さくらのクラウドフォーメーション with Chef [XEgg session]
Yukihiko SAWANOBORI
•
12.2K views
DebianとWordPressでハッピーになろう!
Jun Nogata
•
1.6K views
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
Yukihiko SAWANOBORI
•
6.7K views
Vagrant & Dockerによるイマドキの開発環境構築
Nakazawa Yuichi
•
26.4K views
Devsumi2008
Agata Toshikata
•
1.9K views
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
•
2.1K views
自宅で出来る!ゲームサーバの作り方
光晶 上原
•
27.5K views
How to deploy & operate OpenStack Production
VirtualTech Japan Inc.
•
1K views
DockerでWordPressサイトを開発してみよう
mookjp
•
47.1K views
Swiftで外部ライブラリを使ってみよう
Kanako Kobayashi
•
3.8K views
割と新し目の Open shift origin で作る自宅 paas 作成記
Hara Yoshihiko
•
3.5K views
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
•
81.7K views
Hello Java
Chihiro Ito
•
6.3K views
More from Y Watanabe
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
3.2K views
•
46 slides
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
16.9K views
•
78 slides
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
4.4K views
•
120 slides
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
4.6K views
•
42 slides
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
1.4K views
•
21 slides
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
1.8K views
•
24 slides
More from Y Watanabe
(16)
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
•
3.2K views
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
•
16.9K views
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
•
4.4K views
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
•
4.6K views
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
•
1.4K views
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
•
1.8K views
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
•
6.8K views
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
•
3.4K views
properties, yaml, and me
Y Watanabe
•
7.7K views
テストゼロからイチに進むための戦略と戦術
Y Watanabe
•
4.7K views
The cost of learning - advantage of mixer2
Y Watanabe
•
2.4K views
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Y Watanabe
•
13.3K views
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
•
25.7K views
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
•
11.9K views
Mixer2によるdynamic css sprite 201309第三回渋谷java
Y Watanabe
•
1.5K views
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
•
5.4K views
Recently uploaded
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
6 views
•
11 slides
gtk4_gem_usage.pdf
ssuser0ef4681
11 views
•
6 slides
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
81 views
•
16 slides
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
25 views
•
20 slides
GraphQLはどんな時に使うか
Yutaka Tachibana
6 views
•
37 slides
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
97 views
•
31 slides
Recently uploaded
(10)
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
6 views
gtk4_gem_usage.pdf
ssuser0ef4681
•
11 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
81 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
25 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
6 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
97 views
松下研究室紹介_関西大学高槻キャンパスオープンキャンパス
Matsushita Laboratory
•
26 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
57 views
テスト自動化.pdf
ssuserf8ea02
•
16 views
CatBoost on GPU のひみつ
Takuji Tahara
•
203 views
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
1.
これであなたもOSS開発者! Mavenセントラルリポジトリに 自作ライブラリをUPするときの いろんなコツの話 @nabedge = 渡辺
祐 http://mixer2.org/ 2014/2/15 2014/4/5 第5回 #渋谷java
2.
CM 2
3.
Mixer2というライブラリを作ってる者です http://mixer2.org JavaでWebアプリを作るための テンプレートエンジン 3
4.
CMおわり 4
5.
今日のおはなし • Mixer2というテンプレートエンジンって すごい便利なんだぜ • 例えばMixer2みたいなJavaライブラリ (本体は
*.jar ファイル一つ)を Mavenセントラルリポジトリに登録する にはどんなふうにしたらいいの? 5
6.
つまりこんなふうに 6 http://repo1.maven.org/maven2/org/mixer2/mixer2/1.2.22
7.
論より証拠! いまこの場で、 Mixer2-1.2.xxの mavenセントラルリポジトリへの リリース作業を開始します。 7 デモ
8.
さっきのデモみたいな流れに至るまでのコツ • pom.xmlを調整する • <groupId>,
<artifactId>,親pomの指定 • GPG鍵とmaven-gpg-plugin • *.md5/*.sha1チェックサムはmaven-install-plugin • maven-sources-plugin, maven-javadoc-plugin • アップロード権限をもらうための申請 • Mixer2の場合はどうだった? • ビルドとリリースに関する3つのポイント • 仮想OS + Jenkinsを使う • maven-release-pluginのことを忘れる • 細かいバージョン番号を自分で決めない 8 今日の話は ここだけ 各自ググる あるいは mixer2 のpomを参考に。
9.
• pom.xmlを調整する • <groupId>,
<artifactId>,親pomの指定 • GPG鍵とmaven-gpg-plugin • *.md5, *.sha1 チェックサムはmaven-install-plugin • maven-souces-plugin, maven-javadoc-plugin • アップロード権限をもらうための申請 • Mixer2の場合はどうだった? • ビルドとリリースに関する3つのポイント • 仮想OS + Jenkinsを使う • maven-release-pluginのことを忘れる • 細かいバージョン番号を自分で決めない 9
10.
アップロード権限をもらう 1. 大きなプロジェクトでは自前のリポジトリサーバをセントラル リポジトリサーバが直接rsyncしてくれる。 例: Apache
Commons Project 例: Spring Framework Project 2. 小さいプロジェクトの場合は http://oss.sonatype.org に直 接アップする。 1. 申請すれば<groupId>ごとにアップロード権限をくれる。 例: アカウント”nabedge”は<groupId>org.mxier2</ groupId>の配下ならどんなartifactでも登録可能 2. とりあえず本家の解説を一生懸命読みましょう。 https://docs.sonatype.org/display/Repository/Sonatype +OSS+Maven+Repository+Usage+Guide 10
11.
Mixer2の場合はどうだった? 1. mixer2.org というドメイン名を取得 2.
http://mixer2.org/ にあらかじめmaven siteで作ったページ を用意。もちろん<groupId>はorg.mixer2 3. 自分のメールアドレスでgpg鍵つくって鍵サーバに登録 4. pom.xmlを調整 5. mvn deploy するとステージングリポジトリにUPされる 6. 3で使ったメールアドレスでSonatypeのJIRAにアカウント登 録&チケットを作成。 7. すんなりリポジトリへのアクセス権をくれた。 8. NEXUSにJIRAアカウントでログインし、ステージング状態 のartifactをリリースするとセントラルリポジトリへ反映される ※以降のリリースでは5と8の作業だけでよい。 11
12.
• pom.xmlを調整する • <groupId>,
<artifactId>,親pomの指定 • GPG鍵とmaven-gpg-plugin • *.md5, *.sha1 チェックサムはmaven-install-plugin • maven-souces-plugin, maven-javadoc-plugin • アップロード権限をもらうための申請 • Mixer2の場合はどうだった? • ビルドとリリースに関する3つのポイント • 仮想OS + Jenkinsを使う • maven-release-pluginのことを忘れる • 細かいバージョン番号を自分で決めない 12
13.
なぜ仮想OS + Jenkinsでやるのか 1.
ビルド&リリースに使うコマンドやその実行手順を間違えない 2. ビルドした記録と成果物を保存しやすい 3. 異なるJDK/JREでのmvn testを実行しやすい • mixer2はJRE同梱のJAXB実装に依存している。 Java6とJava7とでJAXB実装のバージョンが微妙に異なる。 • なので、Java7でのmvn testもいつでもやれるようになってる。 4. 確実に環境を一定に保てる 5. バックアップしやすい • 「ソースはgithubに入ってるから大丈夫」では甘い。 • JDK/JRE環境、gpg署名用の秘密鍵、ビルドジョブの設定(≒ビルド とリリースの手順そのもの)、過去の成果物、etcetc… • ↑うっかり失うと再構築が面倒くさいという意味でダメージ大 • 仮想OSのイメージファイルで丸ごとバックアップしてしまえ! 13
14.
• pom.xmlを調整する • <groupId>,
<artifactId>,親pomの指定 • GPG鍵とmaven-gpg-plugin • *.md5, *.sha1 チェックサムはmaven-install-plugin • maven-souces-plugin, maven-javadoc-plugin • アップロード権限をもらうための申請 • Mixer2の場合はどうだった? • ビルドとリリースに関する3つのポイント • 仮想OS + Jenkinsを使う • maven-release-pluginのことを忘れる • 細かいバージョン番号を自分で決めない 14
15.
maven-release-pluginのことを忘れる 1. mvn release:prepare
release:perform のように簡単 なコマンド一発にできるが、pom.xmlがややこしくなり がち。 2. どうせjenkinsを使うのだから、pom.xmlにややこしい設 定を書く代わりにビルドジョブ上にUNIXコマンドを書く ようにするほうがわかりやすい&メンテしやすい。 3. 「maven-release-pluginは、-SNAPSHOTなversion指 定が自分自身や依存先に指定されていないかまで チェックしてくれるんだぜ!」 →そういうのも最近はセントラルリポジトリ(のステージ ング環境)にUPする段階で自動チェックしてくれるから 必ずしも自分でやらなくてもいい。 15
16.
• 「maven-release-pluginを使うな」 とは言ってません。 • 人間、慣れている方法が一番! 16
17.
• pom.xmlを調整する • <groupId>,
<artifactId>,親pomの指定 • GPG鍵とmaven-gpg-plugin • *.md5, *.sha1 チェックサムはmaven-install-plugin • maven-souces-plugin, maven-javadoc-plugin • アップロード権限をもらうための申請 • Mixer2の場合はどうだった? • ビルドとリリースに関する3つのポイント • 仮想OS + Jenkinsを使う • maven-release-pluginのことを忘れる • 細かいバージョン番号を自分で決めない 17
18.
よくあるバージョン番号の考え方 trunk/1.0.0-SNAPSHOT ↓ リリース→ tags/1.0.0 trunk/1.0.1-SNAPSHOT ↓ リリース→ tags/1.0.1 trunk/1.0.2-SNAPSHOT •
リリースタグを切るときに<version>を書き換える。 (これは当然) • trunk側も<version>を書き変える必要あるの? 18
19.
バージョン番号の固定観念を捨ててみる 「trunk(開発の本線)のpom.xmlはずっと <version>1.0-SNAPSHOT</version> のまま」 というルールにしてしまう! 1. それで開発してて、意外と困らない。 2. trunk配下のpom.xmlの<version>を リリースのたびに書き換える面倒は無くなる 3.
リリースのときに<version>1.2.3</version>に書 き換えてtagを切るのはセオリーどおりで。 19
20.
細かいバージョン番号を自分で決めない versions-maven-pluginでpom.xmlの <version>1.2-SNAPSHOT</version>を <version>1.2.3</version> に自動書き換え。 20 mvn versions:set –DnewVersion=1.2.${BUILD_NUMBER}
21.
${BUILD_NUMBER} ?? 21 ${BUILD_NUMBER} version 1.2.22の ビルド履歴ココ
22.
ビルド失敗=バージョン番号が飛ぶ=気にしない version 1.2.22 の 次のリリースが 1.2.30
だと 何か困ることが あるか? たぶん無い。 22 欠番 欠番 実際リリース したバージョン
23.
<version>を整えたらあとはデプロイ 23 mvn clean deploy -Dgpg.keyname=[自分のgpg鍵id] -Dgpg.passphrase=[gpg鍵のパスフレーズ]
24.
全体の流れ 24 mvn versions:set –DnewVersion=1.2.${BUILD_NUMBER} mvn
clean deploy -Dgpg.keyname=[自分のgpg鍵id] -Dgpg.passphrase=gpg鍵のパスフレーズ Git/Subversionにタグを切る ※タイミングは最後じゃないほうがいいかも。 ※下のコマンドはマネしないで! git commitせずにgit tagしてる(いい加減すぎw)
25.
おまけ:パスワードはマスク 25 Jenkins Maskpasswords Plugin
26.
おしまい ご清聴ありがとうございました! 26