- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-01-13T10:11:43+00:00","","")
* GitリポジトリをMavenリポジトリとして使用する [#l5636c4f]
#author("2020-01-16T22:23:22+00:00","","")
#mynavi()
#setlinebreak(on)
GitlabをMavenリポジトリとして使用する方法について記載する。
&br;
* 目次 [#u5ced353]
#contents
-- 関連
-- [[Javaメモ]]
** 概要 [#y780c8fa]
#html(<div style="padding-left:10px;">)
GitlabをMavenリポジトリとして使用する方法について記載する。
*** ライブラリプロジェクト [#xd0f955f]
#html(<div style="padding-left:10px;">)
|URL(例)|説明|h
|https://gitlab.com/username/java_lib.git|Mavenリポジトリとして公開するライブラリプロジェクト|
#html(<div style="clear:both">)
#html(<div style="float:left">)
ビルド前
#html(<div style="padding:10px; border:1px solid #333;display: inline-block">)
├ build.gradle
└ src
└ main
└ java
└ com/example
└ SampleUtil.java
#html(</div>)
#html(</div>)
#html(<div style="float:left">)
ビルド後
#html(<div style="padding:10px; border:1px solid #333;display: inline-block;margin-left:20px;">)
├ build.gradle
├ maven
│ └ com/example/sample
│ ├ 1.0.0
│ │ ├ sample-1.0.0.jar
│ │ ├ sample-1.0.0.pom
│ │ └ :
│ └ maven-metadata.xml
└ src
└ main
└ java
└ com/example
└ SampleUtil.java
#html(</div>)
#html(</div>)
#html(</div>)
#html(</div>)
#html(<div style="clear:both">)
*** ライブラリを使用する側のプロジェクト [#i2f50643]
#html(<div style="padding-left:10px;">)
ビルド前
#html(<div style="padding:10px; border:1px solid #333;display: inline-block">)
├ build.gradle
└ src
└ main
└ java
└ com/example
└ UseSample.java
#html(</div>)
#html(</div>)
#html(</div>)
#html(</div>)
** 環境設定 [#xb8127e8]
#html(<div style="padding-left:10px;">)
*** SSH鍵の作成 [#r2c43441]
#html(<div style="padding-left:10px;">)
秘密鍵: ~/.ssh/gitlab_xxx@example.com、 公開鍵: ~/.ssh/gitlab_xxx@example.com.pub として生成
#myterm2(){{
ssh-keygen -t rsa -C xxx@example.com
}}
#html(</div>)
*** gitlabに作成した公開鍵を登録 [#x2a0e24b]
#html(<div style="padding-left:10px;">)
#myterm2(){{
cat gitlab_xxx@example.com.pub
# Macの場合
cat gitlab_xxx@example.com.pub | pbcopy # そのままクリックボードにコピー
}}
※取得した内容をgitlabに登録する。( https://gitlab.com/profile/keys )
#html(</div>)
*** ~/.ssh/configの追記 [#oa4e8a74]
#html(<div style="padding-left:10px;">)
#mycode2(){{
Host gitlab.com
User xxx@example.com
IdentityFile ~/.ssh/gitlab_xxx@example.com
}}
#html(</div>)
*** ssh-agent に秘密鍵を追加する [#g4b0bd93]
#html(<div style="padding-left:10px;">)
#myterm2(){{
# ssh-agent起動
eval `ssh-agent`
# 登録されている秘密鍵の一覧を確認
ssh-add -l
# 秘密鍵を登録
ssh-add ~/.ssh/gitlab_xxx@example.com
# 登録されている秘密鍵の一覧を確認
ssh-add -l
# 接続確認
ssh -T git@gitlab.com
}}
#html(</div>)
#html(</div>)
** ライブラリ側プロジェクトの作成 [#wb182ef7]
#html(<div style="padding-left:10px;">)
事前に gitlab にプロジェクト( java_lib )を作成しておく。
*** git clone [#f299559f]
#html(<div style="padding-left:10px;">)
#myterm2(){{
git clone git@gitlab.com:username/java_lib.git
}}
#html(</div>)
*** ライブラリの作成 [#da338ae2]
#html(<div style="padding-left:10px;">)
src/main/java/com/example/SampleUtil.java
#mycode2(){{
package com.example;
public class SampleUtil {
public static String hello(String name){
return "Hello " + name;
}
}
}}
#html(</div>)
*** build.gradleの作成 [#o423c837]
#html(<div style="padding-left:10px;">)
#mycode2(){{
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'maven'
def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
sourceCompatibility = 1.8
targetCompatibility = 1.8
group = 'com.example'
archivesBaseName = 'samplelib'
version = '1.0.0'
repositories {
//maven { url System.getenv('HOME') + '/.m2/repository' }
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4'
}
// グループID、アーティファクトID、バージョンを指定
group = 'com.example'
archivesBaseName = 'samplelib'
version = '1.0.0'
// maven構成の生成用タスクを追加
uploadArchives.repositories.mavenDeployer {
repository(url: "file:${projectDir}/maven")
}
}}
#html(</div>)
*** ビルド [#p8a20fb1]
#html(<div style="padding-left:10px;">)
#myterm2(){{
gradle uploadArchives
}}
※ プロジェクト maven 配下にビルドされる
*** gitlabにプッシュ [#i42b25fd]
#myterm2(){{
git add .
git commit -m 'first commit'
git push
}}
#html(</div>)
** ライブラリを使用する側のプロジェクト [#t2db92a1]
#html(<div style="padding-left:10px;">)
build.gradle
#mycode2(){{
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'maven'
//apply plugin: 'git-repo'
apply plugin: 'application'
def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = 'com.example.UseSample'
buildscript {
repositories {
jcenter()
//maven { url "https://github.com/layerhq/releases-gradle/raw/master/releases" }
}
dependencies {
//classpath 'com.layer:gradle-git-repo-plugin:2.0.2'
}
}
repositories {
//maven { url System.getenv('HOME') + '/.m2/repository' }
mavenCentral()
/*
プライベートリポジトリ上のライブラリを利用する場合 (利用するプラグインによって書き方は様々)
mavenプラグインを利用する場合は素の maven-metadata.xml を読めるURLのプレフィックスを指定する
*/
//git("https://gitlab.com/username/java_lib.git", "com.example.samplelib", "master", "maven")
//git("git@gitlab.com:username/java_lib.git", "com.example.samplelib", "master", "maven")
//maven { url "http://localhost:8080/sample-group1/sample1/raw/master/maven" }
maven { url "git@gitlab.com:username/java_lib.git/raw/master/maven" }
/*
maven {
url "https://gitlab.com/username/java_lib/raw/master/maven"
//credentials {
// username "username"
// password "password"
//}
}
*/
}
dependencies {
testCompile 'junit:junit:4'
// 先程作成したライブラリのグループID、アーティファクトID、バージョンを追加
compile "com.example:samplelib:1.0.0"
//compile fileTree(dir: "libs", includes: ['*.jar'])
}
// ファイルのコピー先(カレントからの相対PATH)
def dependJarCopyTo = 'libs'
// コピー先にあるファイルをいったん削除
task delDependJar << {
delete dependJarCopyTo
}
// 依存するライブラリjarを指定したディレクトリにコピーする
task getDependJar(dependsOn: delDependJar) {
doLast {
configurations.compile.each {
def fromJarFile = it.absolutePath
copy {
from fromJarFile
into dependJarCopyTo
}
}
println "----- 以下のjarファイルを取得しました -----"
FileCollection copyFiles = files { file(dependJarCopyTo).listFiles() }
copyFiles.each {File file -> println file.name}
}
}
}}
#html(</div>)
*** ライブラリを使用する処理の作成 [#te9ce1b5]
#html(<div style="padding-left:10px;">)
src/main/java/com/example/UseSample.java
#mycode2(){{
package com.example;
import com.example.SampleUtil;
public class UseSample {
public static void main(String[] args){
System.out.println(SampleUtil.hello("Taro"));
}
}
}}
#html(</div>)
*** ビルド [#tf25e596]
#html(<div style="padding-left:10px;">)
#myterm2(){{
gradle build
}}
#html(</div>)
*** 実行 [#x3af2854]
#html(<div style="padding-left:10px;">)
#myterm2(){{
gradle run
}}
#html(</div>)
#html(</div>)