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です。簡単ですね!