JetBrains Space ヘルプ

Java および Kotlin 用の Maven

前提条件

  • Java または Kotlin で書かれたプロジェクトがあります。

  • プロジェクトでは Maven を使用します。

  • アーティファクトを Space パッケージに公開する場合は、プロジェクトに Maven リポジトリがあることを確認してください。

対象イメージ

Maven プロジェクトを使用する場合の一般的なタスクは、プロジェクトをビルドしてテストを実行し、その後 Maven アーティファクトを公開することです。Space Automation は Maven のヘルパー関数を提供しないため、オートメーションスクリプトは mvn ツールを直接使用する必要があります。

プロジェクトをビルドしてテストを実行する

プロジェクトをビルドしてテストを実行するには、mvn clean install コマンドを実行する必要があります。.space.kts でこれを行う方法は次のとおりです。

job("Build and run tests") { container(displayName = "Run mvn install", image = "maven:latest") { shellScript { content = """ mvn clean install """ } } }

Maven アーティファクトを Space パッケージに公開する

Maven プロジェクトのアーティファクトをパッケージリポジトリに公開するには、アーティファクトのプロパティを構成し、リポジトリを参照し、認証資格情報を指定する必要があります。この構成は pom.xml ファイルで実行されます。課題は、セキュリティ上の理由から、Maven リポジトリのユーザー資格情報をプロジェクトディレクトリではなく、ユーザーのディレクトリ内の別の settings.xml ファイルに保存する必要があることです。解決策は、settings.xml をプロジェクトディレクトリに配置し、環境変数を通じてユーザー資格情報を提供することです。

  1. プロジェクトに Maven リポジトリがあることを確認してください。

  2. プロジェクトの pom.xml でリポジトリ設定を構成します。通常、行う必要があるのは、Space Packages リポジトリパラメーターを使用して distributionManagement ノードを追加することだけです。

    <!-- other content --> <distributionManagement> <repository> <id>space-maven</id> <!-- provide url via the 'repositoryUrl' command-line arg --> <url>${repositoryUrl}</url> </repository> </distributionManagement> <!-- other content -->
  3. プロジェクトのルートに settings.xml を作成します。このファイルには、コマンドライン引数として指定するパッケージリポジトリへの認証情報が含まれている必要があります。

    <!-- other content --> <settings> <servers> <server> <id>space-maven</id> <!-- provide credentials via the command-line args: --> <!-- 'spaceUsername' and 'spacePassword' --> <username>${spaceUsername}</username> <password>${spacePassword}</password> </server> </servers> </settings>
  4. プロジェクトルートで、ビルドスクリプトを含む .space.kts ファイルを作成します。

    job("Build, run tests, publish") { container(displayName = "Run publish script", image = "maven:3-openjdk-8-slim") { // url of a Space Packages repository env["REPOSITORY_URL"] = "https://maven.pkg.jetbrains.space/mycompany/p/key/my-maven-repo" shellScript { content = """ echo Build and publish artifacts... set -e -x -u mvn versions:set -DnewVersion=1.0.${'$'}JB_SPACE_EXECUTION_NUMBER mvn deploy -s settings.xml \ -DrepositoryUrl=${'$'}REPOSITORY_URL \ -DspaceUsername=${'$'}JB_SPACE_CLIENT_ID \ -DspacePassword=${'$'}JB_SPACE_CLIENT_SECRET """ } } }

    ここで:

    • REPOSITORY_URL 環境変数を介してリポジトリ URL を指定します。

    • settings.xml がプロジェクトのルートディレクトリに保存されるように指定します。

    • JB_SPACE_EXECUTION_NUMBER 変数を使用して、アーティファクトのバージョンを 1.0.build_number として指定します。

    • JB_SPACE_CLIENT_ID および JB_SPACE_CLIENT_SECRET 環境変数を通じて Space Automation 資格情報を提供します。

Maven アーティファクトを外部リポジトリに公開する

アーティファクトを外部 Maven リポジトリに公開することは、Space Packages リポジトリに公開することとほぼ同じです。唯一の違いは、資格情報をシークレットとパラメーターストレージのリポジトリに保存する必要があることです。

  1. Maven アーティファクトを Space パッケージに公開するからの手順 1 と 2 を繰り返します。

  2. パラメーターとシークレットを作成するは、スクリプトが外部リポジトリにアクセスするために使用する必要があるユーザー名とパスワードを保存します。

    Secrets and parameters
  3. .space.kts ファイルを編集します。

    job("Build, run tests, publish") { container(displayName = "Run publish script", image = "maven:3-openjdk-8-slim") { env["REPOSITORY_URL"] = "https://externalrepo.example.com" env["USERNAME"] = Params("repo_user") env["PASSWORD"] = Secrets("repo_password") shellScript { content = """ echo Build and publish artifacts... set -e -x -u mvn versions:set -DnewVersion=1.0.${'$'}JB_SPACE_EXECUTION_NUMBER mvn deploy -s settings.xml \ -DrepositoryUrl=${'$'}REPOSITORY_URL \ -DspaceUsername=${'$'}JB_SPACE_CLIENT_ID \ -DspacePassword=${'$'}JB_SPACE_CLIENT_SECRET """ } } }