alfresco sdk 2.0
DESCRIPTION
MavenベースのAlfresco SDKについてTRANSCRIPT
Alfresco SDK
2014/10/02 Yoshihiko Aochi Solution Engineer, Alfresco Japan
Mavenとは
• http://maven.apache.org/ • プロジェクトの環境構築、成果物生成を支援
するツール。 • ファイルの置く場所等の「決まりごと」の中で、
効率よく開発を進めることができる。
AlfrescoのMavenでの開発
• ひな形からプロジェクト(アーティファクト)を作成 • TomcatやDBの準備がいらない + 必要なものは全て自動的にダウンロード
• 開発環境の依存なし(Eclipse, Netbeans, IDEA etc.) • Community版、Enterprise版どちらでも利用可能 (エンタープライズ版は認証必要。認証キーとアクセス方法についてはSupport Portalを参照)
準備
• Maven 3.0.3またはそれ以上 • Java 1.7
環境変数の設定
• JAVA_HOME • MAVEN_OPTS export MAVEN_OPTS=“-Xms1024m –Xmx4096m –XX:PermSize=1024m”
mvn archetype:generate -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -Dfilter=org.alfresco.maven.archetype:
クイックスタート!AMPプロジェクトを作る http://docs.alfresco.com/4.2/tasks/dev-extensions-maven-sdk-quick-start.html
プロジェクトの作成を対話形式で作成
[INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<< [INFO] [INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom --- [INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -> org.alfresco.maven.archetype:alfresco-amp-archetype (Sample project with full support for lifecycle and rapid development of AMPs (Alfresco Module Packages)) 2: https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml -> org.alfresco.maven.archetype:alfresco-allinone-archetype (Sample multi-module project for All-in-One development on the Alfresco plaftorm. Includes modules for: Repository, AMP, Share, Solr, Web Quick Start and embedded Jetty run) Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1 Choose org.alfresco.maven.archetype:alfresco-amp-archetype version:
AMPのサンプルプロジェクトのarchetypeを選択
最新のarchetype versionを選択(デフォルト)
Choose org.alfresco.maven.archetype:alfresco-amp-archetype version: 1: 1.0 2: 1.0.1 3: 1.0.2 4: 1.1.0 5: 1.1.1 Choose a number: 5:
ここはEnterを押してそのままデフォルトでもよい (後で変更できる)
今から作成するプロジェクトのgroupIdとartifactIdを設定
Define value for property 'groupId': : jp.alfresco Define value for property 'artifactId': : sample-amp
アーティファクト:mavenで作られるプロジェクトとその成果物 groupId: このアーティファクトを作成した組織のID(例えば、会社ドメイン) ar2factId: このアーティファクトのId
[INFO] Using property: version = 1.0-SNAPSHOT [INFO] Using property: package = (not used) [INFO] Using property: alfresco_target_amp_client_war = alfresco [INFO] Using property: alfresco_target_amp_client_war_groupId = org.alfresco [INFO] Using property: alfresco_target_amp_client_war_version = 4.2.e [INFO] Using property: alfresco_target_groupId = org.alfresco [INFO] Using property: alfresco_target_version = 4.2.e Confirm properties configuration: groupId: jp.alfresco artifactId: sample-amp version: 1.0-SNAPSHOT package: (not used) alfresco_target_amp_client_war: alfresco alfresco_target_amp_client_war_groupId: org.alfresco alfresco_target_amp_client_war_version: 4.2.e alfresco_target_groupId: org.alfresco alfresco_target_version: 4.2.e Y: :
ターゲットとなるwarやAlfrescoのバージョンがデフォルトで設定される!
ここはEnterを押してそのままデフォルトでもよい (後で変更できる)
YoshiMac:mvn aochi$ ls sample-amp
設定したartifactIdの名前でディレクトリができる!
AMPサンプルをそのまま動かす
mvn integra2on-‐test -‐Pamp-‐to-‐war
h;p://localhost:8080/alfresco
ブラウザでアクセス
サンプルコードが入っているので、それを動かせる
Eclipseを使った環境構築
準備 • Eclipse
Kelper J2EEだとmavenも入っている • m2e Maven dependency plugin
M2e Maven Dependency Pluginのインストール
M2e Maven Dependency Pluginのインストール
“Add” で h;p://ianbrandt.github.io/m2e-‐maven-‐dependency-‐plugin/snapshots/ のサイトを追加
チェックを入れて”Next”
Mavenプロジェクトのインポート
Mavenプロジェクトの選択
インポート後のワークスペース
プロジェクトの階層構造
ファイル/ディレクトリ 説 明
src/main/java Javaコードを置く場所。Alfresco.warがターゲットの場合、ここに置かれたコードはjar化されてWEB-‐INF/libに配置される
src/main/amp amp内のファイルはここに置く(後述)
src/test/java テスト用のコードを置く場所
src/test/resources テスト用のリソースファイルを置く場所
pom.xml このプロジェクトの情報が記載されるファイル。(依存性、ターゲット等)
Alfrescoのターゲットバージョンを変更する (pom.xml)
変更後、一度クリーンする mvn clean -‐Ppurge
What’s new in Alfresco SDK 2.0
• Alfresco Maven SDKの次のバージョン • 現在Community版のみ。Enterprise版
は今月リリース予定 • Spring-loadedを使ったホットコードリ
ロードが可能
準備
• spring-loadedのダウンロード https://github.com/spring-projects/spring-loaded
• MAVEN_OPTSの設定 export MAVEN_OPTS="-javaagent:/<spring-loadedを置いたファイルパス>/springloaded-1.2.0.RELEASE.jar -noverify -Xmx1024m -Xmx4096m -XX:PermSize=1024m"
プロジェクトの作成
$ mvn archetype:generate -DarchetypeCatalog=https://artifacts.alfresco.com/nexus/content/groups/public-snapshots/archetype-catalog.xml -Dfilter=org.alfresco.maven.archetype:
pom.xmlの変更 <parent> <groupId>org.alfresco.maven</groupId> <ar2factId>alfresco-‐sdk-‐parent</ar2factId> <version>2.0.0-‐beta-‐1</version> </parent>
最新バージョンは以下を確認ください: h;ps://ar2facts.alfresco.com/nexus/content/groups/public/alfresco-‐sdk-‐aggregator/latest/index.html
2014/10/02現在 2.0.0-‐beta-‐3が最新版
Demo
For more info. • GitHub https://github.com/Alfresco/alfresco-sdk • Developer Document https://artifacts.alfresco.com/nexus/content/groups/public/alfresco-sdk-aggregator/latest/index.html • Alfresco Documentation http://docs.alfresco.com/4.2/concepts/dev-extensions-maven-sdk-intro.html
Q&A
補足
情報: WSSERVLET14: JAX-WS servlet initializing 8 09, 2014 6:36:32 午後 org.apache.catalina.core.ApplicationContext log 情報: Marking servlet axis as unavailable 8 09, 2014 6:36:32 午後 org.apache.catalina.core.StandardContext loadOnStartup 重大: Servlet /alfresco threw load() exception org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.SLF4JLogFactory does not implement org.apache.commons.logging.LogFactory
at org.apache.commons.discovery.tools.ClassUtils.verifyAncestory(ClassUtils.java:180) at org.apache.commons.discovery.tools.SPInterface.verifyAncestory(SPInterface.java:201) at org.apache.commons.discovery.tools.SPInterface.newInstance(SPInterface.java:195) at org.apache.commons.discovery.tools.DiscoverClass.newInstance(DiscoverClass.java:579) at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:418) at org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378) at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45) at java.security.AccessController.doPrivileged(Native Method) at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41) at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33) (途中略)
8 09, 2014 6:36:33 午後 org.apache.coyote.AbstractProtocol start 情報: Starting ProtocolHandler ["http-bio-8080"]
SLF4Jの依存性の解決 (pom.xml)!
SLF4Jの依存性の解決 (pom.xml)