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