Submit Search
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
12 likes
7,885 views
Y Watanabe
1 of 26
Download now
Downloaded 23 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
More Related Content
What's hot
(20)
PDF
chat bot framework for Java8
masahitojp
PPTX
Jenkins+Maven活用術
cynipe cynipe
PDF
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
Y Watanabe
PDF
Vagrantと網元で開発環境を作ってみよう
Takuma Morikawa
PDF
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
PDF
Cpi mega mix
Ryuji Egashira
ODP
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
PDF
laravel x モバイルアプリ
Masaki Oshikawa
PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
PDF
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
PDF
Mojolicious::Liteを使ってみよう
charsbar
PDF
Mojoliciousでつくる! Webアプリ入門
Yusuke Wada
KEY
capybara で快適なテスト生活を
Ryunosuke SATO
PDF
フレームワークを使うべき 3 つの理由
Kenichi Mukai
PDF
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
Yuki Minakawa
PDF
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
PDF
Mojolicious+redisでチャットを作った
Tetsuya Tatsumi
PDF
Gradleどうでしょう
Takuma Watabiki
PDF
Gradle布教活動
Nemoto Yusuke
PPTX
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Koichi Sakata
chat bot framework for Java8
masahitojp
Jenkins+Maven活用術
cynipe cynipe
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
Y Watanabe
Vagrantと網元で開発環境を作ってみよう
Takuma Morikawa
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
Cpi mega mix
Ryuji Egashira
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
laravel x モバイルアプリ
Masaki Oshikawa
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Mojolicious::Liteを使ってみよう
charsbar
Mojoliciousでつくる! Webアプリ入門
Yusuke Wada
capybara で快適なテスト生活を
Ryunosuke SATO
フレームワークを使うべき 3 つの理由
Kenichi Mukai
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
Yuki Minakawa
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
Mojolicious+redisでチャットを作った
Tetsuya Tatsumi
Gradleどうでしょう
Takuma Watabiki
Gradle布教活動
Nemoto Yusuke
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
Koichi Sakata
Similar to 20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
(20)
ODP
VC6によるRuby拡張ライブラリ開発環境について
goritto
PPTX
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
PDF
Sflt17 meteorではじめる最速ウェブアプリ開発
Hironao Sekine
PPTX
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
PDF
Harmoware-VIS Tutorial
Nobuo Kawaguchi
PDF
OpenShift のある生活
Yoshimasa Tanabe
PDF
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
Yoshiharu Hashimoto
PDF
さくらのクラウドフォーメーション with Chef [XEgg session]
Yukihiko SAWANOBORI
PDF
DebianとWordPressでハッピーになろう!
Jun Nogata
PDF
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
Yukihiko SAWANOBORI
PDF
Vagrant & Dockerによるイマドキの開発環境構築
Nakazawa Yuichi
PPT
Devsumi2008
Agata Toshikata
PDF
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
PDF
自宅で出来る!ゲームサーバの作り方
光晶 上原
PPTX
How to deploy & operate OpenStack Production
VirtualTech Japan Inc.
PDF
DockerでWordPressサイトを開発してみよう
mookjp
PDF
Swiftで外部ライブラリを使ってみよう
Kanako Kobayashi
PDF
割と新し目の Open shift origin で作る自宅 paas 作成記
Hara Yoshihiko
PDF
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
PDF
Hello Java
Chihiro Ito
VC6によるRuby拡張ライブラリ開発環境について
goritto
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
Sflt17 meteorではじめる最速ウェブアプリ開発
Hironao Sekine
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
Harmoware-VIS Tutorial
Nobuo Kawaguchi
OpenShift のある生活
Yoshimasa Tanabe
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
Yoshiharu Hashimoto
さくらのクラウドフォーメーション with Chef [XEgg session]
Yukihiko SAWANOBORI
DebianとWordPressでハッピーになろう!
Jun Nogata
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
Yukihiko SAWANOBORI
Vagrant & Dockerによるイマドキの開発環境構築
Nakazawa Yuichi
Devsumi2008
Agata Toshikata
自分色のLinuxホームサーバーを作ってみよう
Masahiko Hashimoto
自宅で出来る!ゲームサーバの作り方
光晶 上原
How to deploy & operate OpenStack Production
VirtualTech Japan Inc.
DockerでWordPressサイトを開発してみよう
mookjp
Swiftで外部ライブラリを使ってみよう
Kanako Kobayashi
割と新し目の Open shift origin で作る自宅 paas 作成記
Hara Yoshihiko
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
Hello Java
Chihiro Ito
Ad
More from Y Watanabe
(16)
PDF
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
PDF
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
PDF
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
PDF
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
PDF
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
PDF
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
PDF
properties, yaml, and me
Y Watanabe
PDF
テストゼロからイチに進むための戦略と戦術
Y Watanabe
PDF
The cost of learning - advantage of mixer2
Y Watanabe
PDF
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Y Watanabe
PDF
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
PDF
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
PDF
Mixer2によるdynamic css sprite 201309第三回渋谷java
Y Watanabe
PDF
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
properties, yaml, and me
Y Watanabe
テストゼロからイチに進むための戦略と戦術
Y Watanabe
The cost of learning - advantage of mixer2
Y Watanabe
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Y Watanabe
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
Mixer2によるdynamic css sprite 201309第三回渋谷java
Y Watanabe
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Ad
Recently uploaded
(8)
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
PPTX
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
iPride Co., Ltd.
PDF
【AI論文解説】 RLHF不要なLLMの強化学習手法: Direct Preference Optimization(+α)
Sony - Neural Network Libraries
PDF
20250711JIMUC総会_先進IT運用管理分科会Connpass公開資料.pdf
ChikakoInami1
PDF
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
PDF
20250711JIMUC総会IBM Automation_Platform最新情報_Connpass公開版.pdf
ChikakoInami1
PDF
20250717_Devin×GitHubCopilotで10人分の仕事は出来るのか?.pdf
Masaki Yamakawa
PDF
論文紹介:OVO-Bench: How Far is Your Video-LLMs from Real-World Online Video Unde...
Toru Tamaki
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
iPride Co., Ltd.
【AI論文解説】 RLHF不要なLLMの強化学習手法: Direct Preference Optimization(+α)
Sony - Neural Network Libraries
20250711JIMUC総会_先進IT運用管理分科会Connpass公開資料.pdf
ChikakoInami1
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
20250711JIMUC総会IBM Automation_Platform最新情報_Connpass公開版.pdf
ChikakoInami1
20250717_Devin×GitHubCopilotで10人分の仕事は出来るのか?.pdf
Masaki Yamakawa
論文紹介:OVO-Bench: How Far is Your Video-LLMs from Real-World Online Video Unde...
Toru Tamaki
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
Download