Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Click here to load reader
-
Upload
jun-terashita -
Category
Software
-
view
434 -
download
2
Transcript of Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
2015©
2015年2月18日
Jun Terashita
第26回 Alfresco勉強会 Alfresco SDK + Eclipseで開発してみよう
2015©2
Alfresco SDK とは• Alfrescoをカスタマイズするための開発ツール。
• Maven Alfresco SDKと呼ばれていたが、2.0がリリースされたタイミングで単にAlfresco SDKという名前に変わった。
• alfresco-amp-archetype、share-amp-archetype、alfresco-allinone-archetype (alfresco、share、solrの全部入り)の3種類がある。
• Alfresco SDK 2.0ではホットリロードできるようになったため、開発効率が向上している。
(参考) Alfresco SDK https://artifacts.alfresco.com/nexus/content/repositories/alfresco-docs/alfresco-sdk-aggregator/latest/index.html
Git Hub https://github.com/Alfresco/alfresco-sdk/
Alfresco Community Edition 5.0のオンラインヘルプ http://docs.alfresco.com/community/concepts/alfresco-sdk-intro.html
2015©3
Alfresco SDKとAlfrescoの互換性
Alfresco version
Maven Alfresco Lifecycle (deprecated)
Maven SDK 1.0.x
(deprecated)
Maven SDK 1.1.x
Alfresco SDK 2.0.x
3.2.2 - 4.1.1.xCompatible (but not supported)
Not available Not available Not available
4.1.x (x >=2) Not availableCompatible (but not supported)
Not available Not available
4.2.x Not available Not availableCompatible and supported
Not available
5.0+ Not available Not available Not availableCompatible and supported
Alfresco SDK 2.0はAlfresco 5.x以降で使用可能 http://docs.alfresco.com/community/concepts/alfresco-sdk-compatibility.html
2015©4
必要なものhttp://docs.alfresco.com/community/concepts/alfresco-sdk-install-requirements.html
• Maven 3.2.5+
• JDK 1.7+
• Eclipse Luna(4.4)+ (m2eプラグインも必要)
Alfresco AMP用のプロジェクトを作成
2015©6
ご説明する手順についてだいたい以下のAlfresco Community 5.0のオンラインヘルプどおりの手順ですが、Mavenビルドの実行方法等、一部手順を変えてある部分があります。
http://docs.alfresco.com/community/tasks/alfresco-sdk-rad-eclipse-amp-project.html
2015©7
ウィザードでMavenプロジェクトを作成(1/2)Package Explorerで右クリック New > Project... を選択 Maven > Maven Project を選択してNextをクリック
2015©8
ウィザードでMavenプロジェクトを作成(2/2)「Create a simple project (skip archetype selection)」 のチェックを外して(たぶん最初から外れている)Nextをクリック
2015©9
アーキタイプカタログを追加(1/4)「Configure ...」をクリック
2015©10
アーキタイプカタログを追加(2/4)「Add Remote Catalog ...」をクリック
2015©11
アーキタイプカタログを追加(3/4)以下のとおり入力(Descriptionはわかりやすければ何でもよい)してOKをクリック
Catalog File : http://repo1.maven.org/maven2/archetype-catalog.xml Description : Alfresco Archetypes 2.0
2015©12
アーキタイプカタログを追加(4/4)もう一度OKをクリック
2015©13
Repository AMP用のプロジェクトを作成(1/2)Catalogは先ほど作成したAlfresco Archetypes 2.0を選択 Filterにorg.alfrescoと入力 Artifact Idがalfresco-amp-archetypeの行を選択してNextをクリック
2015©14
Repository AMP用のプロジェクトを作成(2/2)Group Id、Artifact Id、Packageを適当に入力してFinishをクリック ※初回はここでけっこう時間がかかります。
2015©15
補足:m2e connectorsの追加(1/2)プロジェクト作成後にエラーが発生していたらMarkersタブで問題を右クリックしてQuick Fixを選択 Discover new m2e connectorsを選択してFinishをクリック
2015©16
補足:m2e connectorsの追加(2/2)Finishをクリック Licence agreementに同意してFinishをクリック Warningが出たら内容を確認してOKをクリック Eclipseを再起動するよう促されるのでYesをクリックして再起動
2015©17
補足:プロジェクトの構造
pom.xml• archetypeのバージョンやAlfrescoのバージョン、ログレベル等、ビルドする際の各種プロパティを必要に応じて設定
src/main/java• Javaのソースコード • ビルドするとJarにまとめられる
src/main/amp • Javaのソースコード以外のリソース
src/test/java • ユニットテスト用のソースコード
src/test/resources • テスト用の設定ファイル
src/test/properties/<env>• <env>毎に異なるalfresco-global.properties • デフォルトの<env>はlocal(pom.xmlで指定)
ビルドとデプロイ
2015©19
MavenによるビルドとデプロイAlfrescoのオンラインヘルプの以下のドキュメントではEclipseから実行する方法が書かれていますが、プロジェクトのルートディレクトリにあるrun.shを実行する方が簡単です。
http://docs.alfresco.com/community/tasks/alfresco-sdk-rad-eclipse-amp-project.html
ターミナルでプロジェクトのルートディレクトリに移動し、run.shを実行します。 ※初回はけっこう時間かかります。
#!/bin/bash # Downloads the spring-loaded lib if not existing and runs repository AMP springloadedfile=~/.m2/repository/org/springframework/springloaded/1.2.0.RELEASE/springloaded-1.2.0.RELEASE.jar
if [ ! -f $springloadedfile ]; then mvn validate -Psetup fi
MAVEN_OPTS="-javaagent:$springloadedfile -noverify -Xms256m -Xmx2G -XX:PermSize=300m" mvn integration-test -Pamp-to-war
ホットリロードを可能にするSpring LoadedのインストールやMAVEN_OPTSの設定もやってくれる。
2015©20
ブラウザで確認ブラウザで以下のURLを開く。AdministratorのID/PWはadmin/admin。
http://localhost:8080/alfresco
※alfresco-amp-archetypeではShareは起動しない。
2015©21
その他の使い方
mvn package • ユニットテストを実行し、ampファイルを作成
mvn install• package + Mavenのローカルリポジトリへのインストール(?)
mvn install -Pamp-to-war• install + WARとAMPをデプロイしたTomcatの起動 (実質はmvn integration-test -Pamp-to-war と同じ?)
mvn clean -Ppurge • DB、alf_data、インデックス、ログファイルの削除
ホットリロードを試す
2015©23
ホットリロード:WebScriptのjsとftlブラウザで以下のURLにアクセスすると、「Message: Hello World!」と表示される。
http://localhost:8080/alfresco/service/sample/helloworld
Eclipseで以下のファイルを開き、内容を変更するとブラウザでリロードするだけで変更が反映される。
src/main/amp/config/alfresco/extension/templates/webscripts/webscript.get.js src/main/amp/config/alfresco/extension/templates/webscripts/webscript.get.html.ftl
2015©24
ホットリロード:JavaのクラスサンプルコードのDemoComponent.childNodesCountに以下の行を追記して保存する。 System.out.println("childNodesCount has been executed");
public int childNodesCount(NodeRef nodeRef) { System.out.println("childNodesCount has been executed"); log.debug("childNodesCount has been executed"); return nodeService.countChildAssocs(nodeRef, true); }
パッケージエクスプローラでユニットテスト用のDemoComponentTest.javaを右クリックし、Run As > JUnit Test を選択すると、ユニットテストが実行されてEclipseのコンソールタブまたはターミナルに「childNodesCount has been executed」と表示される。
2015©25
補足:ログレベルの設定Alfresco Repo AMP Archetypeから作成したプロジェクトでは、以下のファイルにログレベルが設定されているが、module.log.levelというパラメータはどこにも設定されていない。
src/main/amp/config/alfresco/module/<artifactId>/log4j.properties
以下のいずれかの方法で設定する。
1. Mavenのコマンドを実行する際にオプションで指定する。$ mvn integration-test -Dmodule.log.level=DEBUG
2. POMの<properties>で設定する。※POMを変更した際は再起動が必要。
log4j.logger.org.alfresco.demoamp.DemoComponent=${module.log.level}
… <properties> … <module.log.level>DEBUG</module.log.level> … </properties>…
MySQLを使う場合
2015©27
開発用DBの作成以下のSQLを実行して開発用のDBを作成する(DB名やユーザ、パスワードは後でpom.xmlに書くプロパティと合っていれば何でもよい)。
create database alfrescoamp default character set utf8; grant all on alfrescoamp.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option; grant all on alfrescoamp.* to ‘alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;
2015©28
POMにMySQL用のdependencyを設定POMにdependencyを設定する。
<dependencies> ... <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.28</version> </dependency> </dependencies>
「Overriding managed version 5.1.31 for mysql-connector-java」というWarningが出るためversionは指定しない方がよいかも(指定しなくても動いた)。
artifactId : alfresco-parent のPOMのpropertiesに
<dependency.mysql.version>5.1.31</dependency.mysql.version>
が指定されている。
2015©29
POMにDB接続用のパラメータを設定POMのpropertiesにDB接続用のパラメータを設定する。
<properties> ... <!-- MySQL configuration --> <alfresco.db.name>alfrescoamp</alfresco.db.name> <alfresco.db.username>alfresco</alfresco.db.username> <alfresco.db.password>alfresco</alfresco.db.password> <alfresco.db.host>localhost</alfresco.db.host> <alfresco.db.port>3306</alfresco.db.port> <alfresco.db.params></alfresco.db.params> <alfresco.db.url>jdbc:mysql://${alfresco.db.host}:${alfresco.db.port}/${alfresco.db.name}</alfresco.db.url> <alfresco.db.datasource.class>org.gjt.mm.mysql.Driver</alfresco.db.datasource.class> </properties>
2015©30
既存のalf_dataを削除してAlfrescoを起動ターミナルで mvn clean -Ppurge を実行した上で、 run.sh を実行する。
以上。
2015©32
最後に• プロジェクトの作り方はshare-amp-archetypeもalfresco-allinone-archetypeも同じです。ただ、alfresco-allinone-archetypeはマルチモジュールになっています。
• カスタムモデルの定義やWebScriptの開発、ShareのUIのカスタマイズ方法等、SDKを使った具体的な開発については今後の勉強会で紹介したいと思います。