ラベル Maven の投稿を表示しています。 すべての投稿を表示
ラベル Maven の投稿を表示しています。 すべての投稿を表示

2013年8月25日日曜日

mvn eclipse:eclipseでソースコードとJavadocをダウンロードしてくれるsettings.xml

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true
ってやるとEclipseプロジェクトファイルを作ってくれるのと同時に依存ライブラリのソースコードとJavadocをダウンロードしてくれるんだけど、-DdownloadSources=true -DdownloadJavadocs=trueって毎回書くのはめんどい。
コマンドのエイリアス作ったり、pom.xmlに書いたりすれば解決するけど、なんとなくどちらも気持ち悪かったので、 settings.xmlに記載したった。


これで以下のコマンドを打つだけでソースコードとJavadocをダウンロードしてくれるはず!
mvn eclipse:eclipse

2012年5月18日金曜日

さくらVPSのUbuntu10.04(64bit)にgit + maven + Jenkinsな環境構築をしてAndroidのCIが出来るまでのメモ

Androidに限らずgit + Jenkins + mavenな環境はよく使うと思うけど、初回のビルドはだいたいこける。
環境が整備出来ていないという理由でね。
ということでAndroidプロジェクトがCI出来るまでにやったことをメモしておく。

Ubuntuインストール・設定


さくらVPSにカスタムOSのUbuntu 10.04をインストール+セキュリティ設定などをした時のメモ
を参考にインストール・設定を行う。
(ここではsshのport変更はやってない)

Jenkinsインストール


Jenkinsをインストールするとjenkinsユーザーが自動で作成されるけどなんとなく先に作っておいた。
$ sudo adduser jenkins
インストールはここを参考に行う。

ビルド環境構築


openjdk-6-jdkとmavenをインストールする。
$ sudo apt-get install openjdk-6-jdk
mavenインストールはここを参考に行う。

Android SDKインストール


まず、32ビット版のソフトを動かすためにia32-libsをインストールする。(ハマりポイント)
$ sudo apt-get install ia32-libs

jenkinsユーザーから実行出来るようにする必要があるのでjenkinsユーザーで行う。
$ mkdir -p /var/lib/jenkins/tools
$ cd /var/lib/jenkins/tools
$ wget http://dl.google.com/android/android-sdk_r18-linux.tgz // バージョンは適宜変更
$ tar zxvf android-sdk_r18-linux.tgz
$ ./android-sdk-linux/tools/android update sdk -u

gitosisインストール・設定


まず、gitosisをインストールする。今までapt-getで今回はaptitudeだけど気にしないw
$ sudo aptitude install gitosis

gitosisの初期化の際に一人目の管理者の公開鍵が必要なのでgitosisユーザーから見える箇所に配置する。
(ここでは同サーバー内のubuntuユーザーを一人目の管理者とする)
$ cp -p /home/ubuntu/.ssh/id_rsa.pub /tmp/.
$ sudo su - gitosis
$ gitosis-init < /tmp/id_rsa.pub

gitリポジトリ作成


gitosis管理者ユーザーで管理情報リポジトリをクローンする。(クローン済みならpullする)
$ git clone gitosis@ホスト名:gitosis-admin.git

gitosis.confを修正する。(XXXXは任意ユーザー)
[gitosis]
loglevel=DEBUG

[group gitosis-admin]
writable = gitosis-admin
members = XXXX

[group リポジトリ名]
writable = リポジトリ名
members = XXXX jenkins

修正が終わったらjenkinsユーザーのssh公開鍵をkeydir配下に配置する。
(ssh公開鍵はパスフレーズなしで作成)
コミットしてプッシュしたら実際にリポジトリを作成する。
$ cd /srv/gitosis/repositories
$ sudo mkdir リポジトリ名.git
$ cd リポジトリ名.git
$ sudo git init --bare --shared=true
$ sudo chown -R gitosis:gitosis ./

jenkinsユーザーまたはmembersに記載した任意のユーザーから以下コマンドを実行してクローン出来ることを確認する。
$ git clone gitosis@ホスト名:リポジトリ名.git

Jenkinsセットアップ


jenkinsユーザーがGitリポジトリと通信するためknown_hostsに追加する必要がある。(重要)
(ここではGitリポジトリとJenkinsが同サーバ)
$ sudo -u jenkins ssh gitosis@localhost // yesを答える

続いてクローン時に必要になるgitconfigの設定を行う。
$ sudo su - jenkins
$ git config --global user.email "jenkins@jenkins-server"
$ git config --global user.name "jenkins"

http://your-jenkins-server:8080にアクセスする。
Jenkinsの管理 -> プラグインの管理から以下の3つを選択してインストールする。
  • Git plugin
  • Android Emulator Plugin
  • Android Lint Plugin
続いてJenkinsの管理 -> システムの設定から以下を設定する。
  • Android
    • Android SDK root : /var/lib/jenkins/tools/android-sdk-linux
  • Maven
    • Name : Default(任意)
    • MAVEN_HOME : /usr/local/maven

ビルドしてみる


上記で作成したリポジトリにプロジェクトを追加してプッシュする。
android-archetypesのandroid-with-testを使用してプロジェクトを作成する。
正常に作成出来たらリポジトリにプッシュする。(Jenkinsからクローン出来るように)
mvn archetype:generate \
  -DarchetypeArtifactId=android-with-test \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.0.8 \
  -DgroupId=your.group \
  -DartifactId=your-project-name \
  -Dpackage=your.package

http://your-jenkins-server:8080にアクセスし新規ジョブ作成よりMaven2/3プロジェクトのビルドのジョブを作成する。

ソースコード管理システムでGitを選択し、Repository URLにgitosis@ホスト名:リポジトリ名.gitを入力する。

ビルドのルートPOMにリポジトリから見たルートのpom.xmlのパスを入力する。
ゴールとオプションにinstallを入力する。
ビルド環境の"Run an Android emulator during build"にチェックを入れ、エミュレーターの設定項目を入力する。
"Show emulator window"のチェックを外す。(重要)
ビルド後の処理の追加をクリックして成果物を保存を選択する。
保存するファイルにメインプロジェクトのapkを指定すればいい。
保存、ビルド実行して"Finished: SUCCESS"がコンソールに出力されればOK。
最後に成果物としてapkが存在していれば完了〜

2012年3月6日火曜日

android-maven-pluginのライフサイクル

android-maven-pluginのcomponents.xmlで定義されているライフサイクルを表にまとめてみた。

packagingがapkの場合(通常のAndroidアプリケーション)


phase goal
generate-sources android:generate-sources
process-resources resources:resources
compile compiler:compile
process-classes android:proguard
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
prepare-package android:dex
package jar:jar, android:apk
install install:install
pre-integration-test android:internal-pre-integration-test
integration-test android:internal-integration-test
deploy deploy:deploy

packagingがapklibの場合(Androidライブラリ)


phase goal
generate-sources android:generate-sources
process-resources resources:resources
compile compiler:compile
process-classes android:proguard
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
package jar:jar, android:apklib
install install:install
deploy deploy:deploy

components.xml見るとprepare-packageフェイズでandroid:emmaを呼び出しているように見えるけど
android:emmaゴールなんて見つからんぞー!?

2012年3月4日日曜日

MacOS XにIntelliJとmavenで開発環境構築しようと思ったら...

Mavenとの相性が良いというのを聞きつけてIntelliJを使い始めてそっこーエラーに遭遇。
Maven Moduleからarchetypeを選択してプロジェクトを作成しようとするとコンソールらしきところに
[FATAL_ERROR] Cannot start Maven: No valid Maven installation found. Either set the home directory in the configuration dialog or set the M2_HOME environment variable on your system.

環境変数のM2_HOMEが設定されてないよ的なメッセージが表示される。
.bash_profileに設定して読み込んでIntelliJを再起動してみても変わらず。
色々調べた結果、Mac OSのアプリケーションはbashで設定してる環境変数は読めないということがわかった。

解決方法


/etc/launchd.confを作成
sudo vi /etc/launchd.conf

内容
※ /usr/share/mavenの箇所は適宜読み替えて
setenv M2_HOME /usr/share/maven

Mac再起動
〜終わり〜

2011年11月20日日曜日

いつからかEclipse上でAndroidプロジェクトのMavenビルドが出来なくなったので…

久々にMavenを使用してAndroidアプリを作成しようと思ったらなぜかビルドが出来ない。。
ADTやらSDKを更新したタイミングで使えなくなったのだろうと思い、いろいろ思考錯誤してみた。
そしてようやくビルドが出来る環境を作成する手順が確立出来たので忘れずメモ。

ちなみに私の環境は以下の通り。
Mac OS X 10.6.8
ADT 15 & SDK15
Maven 3.0.3
Eclipse Indigo

m2eのインストール

[Help] -> [Install New Software...]
プルダウンからIndigoのアップデートサイトを選択しCollaborationを展開する。
「Maven Integration for Eclipse」と「slf4j over logback loggind」にチェックし、-> [Next]
あとは指示通り進んでインストール完了後Eclipseを再起動。

m2e-androidのインストール

[Help] -> [Eclipse Marketplace...]
「m2e-android」と検索すると「Android Configuration for M2E」がヒットするので
Installボタンをクリックし指示通り進んでインストール完了後Eclipseを再起動。

Archetypeの追加

[New] -> [Project...] -> [Maven Project]
Workspace locationに任意の場所を指定 -> [Next] -> [Add Archetype...]
下記のような画面になるので各項目を入力 -> [OK]
Archetype Group Id: de.akquinet.android.archetypes
Archetype Artifact Id : android-quickstart
Archetype Version: 1.0.6
Repository URL: 空白
上記で追加したandroid-quickstartを選択しAndroidプロジェクトを作成する。

m2e connectorのインストール

Androidプロジェクトを作成すると、下記画面のようにpom.xmlにエラーマークがつくので
POMエディターで開く。
pom.xmlを開くと上記に赤くメッセージが表示されるのでその箇所をクリック。
下記のような黄色いウィンドウが表示されるので「Discover new m2e connectors」をクリック。
m2e Marketplaceなるものが開くので「Application」と「Maven」にチェックをし、
「Lifecycle Mappings」と「embedded maven runtimes」をインストールしEclipseを再起動。

pom.xmlの修正

<artifactId>maven-android-plugin</artifactId>
<version>2.8.4</version>
↓
<artifactId>android-maven-plugin</artifactId>
<version>3.0.0-alpha-14</version>
以上でEclipse上でAndroidプロジェクトのMavenビルドが出来るようになるはず。

ちなみにpom.xmlの全体はこんな感じ。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>jp.u1aryz.products.hoge</groupId>
  <artifactId>HogeSample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>apk</packaging>
  <name>HogeSample</name>

  <dependencies>
    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>2.1.2</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <version>3.0.0-alpha-14</version>
        <configuration>
          <sdk>
            <!-- SDKのパスはsettings.xmlで定義していれば不要 -->
            <path>"your ANDROID_HOME"</path>
            <platform>7</platform>
          </sdk>
          <manifest>
            <debuggable>true</debuggable>
          </manifest>
        </configuration>
        <extensions>true</extensions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

2011年9月23日金曜日

MavenでAndroidアプリケーションの構成管理をはじめる手順

最近ではサードパーティー製のAndroidフレームワークやライブラリが増加してきており、
構成管理にMavenを使用すると便利である。
Maven初心者ながらAndroidプロジェクトの構成管理を始めてみたのでその時の手順をメモ。
2011年11月20日に更新しました。

<事前環境>
Apache Maven 3.0.3
Eclipse 3.7 + ADT v12
※環境のインストール手順については割愛
  1. M2_REPOの設定
    EclipseからMavenを利用するために下記コマンドを実行
    mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
  2. Eclipseプラグインのインストール
    Update siteから下記の2つのプラグインを追加
    ( [Help] -> [Install New Software...] -> [Add...] )
    • Maven Integration for Eclipse
      http://m2eclipse.sonatype.org/sites/m2e
    • Maven Integration for Android Development Tools
      https://svn.codespot.com/a/eclipselabs.org/m2eclipse-android-integration/updates/m2eclipse-android-integration/
  3. Archetypeの追加
    現在ではGitHub等に多数Archetypeが公開されているので、今回はこちらを利用する。
    [New] -> [Project...] -> [Maven Project]
    Workspace locationに任意の場所を指定 -> [Next] -> [Add Archetype...]
    下記のような画面になるので各項目を入力 -> [OK]


    Archetype Group Id: de.akquinet.android.archetypes
    Archetype Artifact Id : android-quickstart
    Archetype Version: 1.0.5
    Repository URL: 空白
  4. Androidプロジェクトの作成
    上記で追加したandroid-quickstartを選択 -> [Next]
    下記のような画面になったら各項目に任意の値を入力 -> [Finish]

以上でAndroidアプリもMavenで構成管理が出来るようになるはず。

Androidへのデプロイはプロジェクト配下で下記コマンドを実行する。
mvn clean install android:deploy