mavenでビルドした成果物をairtifactoryにUpload


最近mavenを使うことがあったので忘れないようにメモです。

pom.xmlを用意してCircleCIでビルドして、CircleCIからArtifactoryにUploadすることを目指します。

pom.xmlのアセンブルの設定は省略します。ビルドしたあとのjarをどうやってuploadするかですが、これはdsitributionManagementを使います。詳しくはこちらに書いてありますね。

http://www.techscore.com/tech/Java/ApacheJakarta/Maven/2-4/

Upload先はこれでいいですが、Upload先は当然認証が必要だったりします。idやpassはsettings.xmlに定義しましょう。settings.xmlをprojectルートに配置します。自動で読み込んで欲しい場合は~/.m2/settings.xmlに配置したほうがいいのですけど、理由があります。

settings.xmlは

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository/>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
  <pluginGroups/>
  <servers>
    <server>
      <id>central</id>
      <username>server-user-name</username>
      <password>${env.SERVER_PASSWORD}</password>
      <configuration></configuration>
    </server>
    <server>
      <id>snapshots</id>
      <username>server-user-name</username>
      <password>${env.SERVER_PASSWORD}</password>
      <configuration></configuration>
    </server>
  </servers>
  <mirrors/>
  <proxies/>
  <profiles/>
  <activeProfiles/>
</settings>

こんな感じで定義しておきます。

後は上記SERVER_PASSWORD環境変数をCircleCIのWebUI上から登録しておきます。

circle.ymlはこんな感じで。

machine:
  java:
    version: oraclejdk7

deployment:
  dev:
    branch: master
    commands:
      - mvn -DskipTests -s settings.xml deploy

-s settings.xmlでprojectルートにあるファイルを指定しています。こうすればCircleCI側でsettings.xmlファイルを作成しなくて良いですし、管理しやすいかと思います。

とにかくdistributionManagementとsettings.xmlによる認証情報さえあればOKです。簡単ですね!