LoginSignup
1
0

More than 1 year has passed since last update.

Jar を作り、Azure Artifacts を利用して成果物を配布する

Last updated at Posted at 2022-07-17

はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、ライブラリ開発者が Jar の Library を作り、Azure Artifacts を利用して成果物を配布する工程を模倣します。

対象者と関連環境・機能

この記事は下記のような人を対象にしています。

  • CI/CD 初学者
  • プログラミング初学者
  • 駆け出しエンジニア

記載している環境・機能は以下です。

  • Java
  • Spring Tool Suite 4
  • gradlew
  • Azure DevOps
  • Azure Artifacts

準備

No 参照 URL
1 CI/CD とは?
2 Azure Devops (Artifacts) を無償、無料で使う
3 Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用
4 Spring Boot Web アプリケーションを作る

ライブラリ開発者のつもりで Library 作成

「Hello LibraryJar!」と出力する Library 想定のソースです。
Spring Web サンプルアプリからの呼び出しを行うことを考えています。
(内容紹介は「Hello LibraryJar!」と出力するだけなので、省略させていただきます。)

ソース

本作業実施後の状態となります。
library-jar

起動可能な Jar

Library 想定ではあるのですが稼働確認しながら進める都合上、起動可能にしています。
gradlew による jar 作成か、jar コマンドによる jar 作成を行います。
(やっている内容は同等となるためどちらでも OK。出力場所が異なるのでご注意。)

gradlew による jar 作成

> cd \library-jar
library-jar> gradlew build

BUILD SUCCESSFUL in 3s
2 actionable tasks: 1 executed, 1 up-to-date

library-jar> java -jar ./build/libs/library-jar.jar
 =========================================
 Hello LibraryJar!
 =========================================

jar コマンドによる jar 作成

> cd \library-jar\bin
library-jar\bin> jar -cvfm ../library-jar.jar ../manifest.mf ./com/library/\*.class
st.mf ./com/library/\*.class
マニフェストが追加されました
com/library/LibraryJar.classを追加中です(入=1193)(出=645)(45%収縮されました)
library-jar\bin> java -jar ../library-jar.jar
 =========================================
 Hello LibraryJar!
 =========================================

Azure Artifacts へパブリッシュ

gradlew で、publishing タスクを実行することで Azure Artifacts へパブリッシュを行います。

順番としては大きく以下3点。

  • maven-publish プラグインを利用することで、gradle publish コマンドを利用できるようする
  • 本記事では gradlew で publish コマンドを実行
  • 結果 publishing タスクが処理される

ローカル環境からのパブリッシュ時には「vstsMavenAccessToken」というトークンにて認証を行いますが、こちらは各自で設定頂く必要があります。

publish タスク

build.gradle

plugins {
	id 'java'
	id 'maven-publish'
}

・・・略

publishing {
	publications {
		myPublication(MavenPublication) {
			groupId 'LibraryJar-groupId'
			artifactId 'library-jar'
			version '0.0.2'				 // Your package version
			artifact 'library-jar.jar'	//Example: *./target/myJavaClasses.jar*
		}
	}

	// Repositories *to* which Gradle can publish artifacts
	repositories {
		maven {
			url 'https://pkgs.dev.azure.com/SecOrgOad3/cicd-training-env/_packaging/cicd-training-env-feed-001/maven/v1' ※準備した環境にそろえて記載します。
			credentials {
				username "cicd-training-env-feed-001"
				password System.getenv("SYSTEM_ACCESSTOKEN") != null ? System.getenv("SYSTEM_ACCESSTOKEN") : vstsMavenAccessToken ※各自で設定頂く必要があります。gradle.propertiesご参照。
			}
		}
	}
}

gradle.properties の vstsMavenAccessToken を設定

以下の通り空にしてありますので、適宜トークンの取得と設定が必要です。

gradle.properties

gradle.propertiesのvstsMavenAccessToken
vstsMavenAccessToken=

個人用アクセス トークンを使用する

Azure Artifacts へのパブリッシュということで、許可すべき対象は「Packaging の Read & write」となります。
(うまい事行かない場合は、一時的なフルアクセス許可で動きを見てからの切り分けも有効です。)

gradlew で publish タスクを実行

library-jar>gradlew publish

BUILD SUCCESSFUL in 9s
2 actionable tasks: 2 executed

CreateLibrary_001.png

関連作業

参考記事

Gradle を使用して Maven アーティファクトを発行する
個人用アクセス トークンを使用する

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0