null Alfresco SDK 4.2で開発環境を構築する方法

こんにちは。てらしたです。今回は現時点(2021年8月)での最新のSDKである4.2を使って、Alfrescoをカスタマイズするための開発環境を構築する手順をご紹介します。旧ブログでご紹介したSDK 4.1の場合のコピペみたいな内容となっていますが、mvnコマンドでプロジェクトを作成しただけではビルドして起動した時にエラーが出てしまう問題があり、その解消方法も紹介するために改めて以下のドキュメントに沿って1つずつ手順をご説明していきます。
Getting started with Alfresco SDK
※こちらのページのURLはバージョンを指定する箇所にlatestと入っているため、将来的に内容が変わる可能性があります。2021年8月現在はAlfresco 7.0、SDK 4.2の内容が記載されています。

準備

開発用のプロジェクトを作るためには、JDK11、Maven、DockerおよびDocker Composeのインストール/設定が必要です。

まずJDK11をインストールし、環境変数JAVA_HOMEを適切に設定します。インストールと設定が終わったら以下のコマンドで確認します。

java -version
echo $JAVA_HOME

次にMavenをインストールします(バージョンは3.3以上)。こちらも以下のコマンドでバージョンを確認します。

mvn -v

Dockerをインストールします。Docker ComposeがDockerのインストール時に一緒にインストールされていない場合は個別にインストールします。終わったら以下のコマンドで確認します。

docker -v
docker-compose -v

プロジェクトの作成

準備が整ったので、適当なディレクトリに移動し、以下のコマンドを実行してMaven Archetypeからプロジェクトを作成します。

mvn archetype:generate -Dfilter=org.alfresco:

ここからは対話形式で設定していきます。どのarchetypeを使用するか聞かれるので、

  • alfresco-allinone-archetype
  • alfresco-platform-jar-archetype
  • alfresco-share-jar-archetype

の3つ(以下の2, 4, 5)のいずれかを選択します。

Choose archetype:
1: remote -> org.alfresco.maven.archetype:activiti-jar-archetype (DEPRECATED - UNSUPPORTED - EXPERIMENTAL)
2: remote -> org.alfresco.maven.archetype:alfresco-allinone-archetype (Sample multi-module project for All-in-One development on the Alfresco platform. Includes modules for Platform/Repository JAR and Share JAR)
3: remote -> org.alfresco.maven.archetype:alfresco-amp-archetype (Sample project with full support for lifecycle and rapid development of Repository AMPs (Alfresco Module Packages))
4: remote -> org.alfresco.maven.archetype:alfresco-platform-jar-archetype (Sample project with full support for lifecycle and rapid development of Platform/Repository JARs and AMPs (Alfresco Module Packages))
5: remote -> org.alfresco.maven.archetype:alfresco-share-jar-archetype (Share project with full support for lifecycle and rapid development of JARs and AMPs (Alfresco Module Packages))
6: remote -> org.alfresco.maven.archetype:share-amp-archetype (Share project with full support for lifecycle and rapid development of AMPs (Alfresco Module Packages))
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :

Alfresco Platformのみカスタマイズする場合は 4. alfresco-platform-jar-archetype、Shareのみカスタマイズする場合は 5. alfresco-share-jar-archetype、両方の場合は 2. alfresco-allinone-archetypeを選択します。ここでは2. alfresco-allinone-archetype を選択しておきます。

次に、どのバージョンを使用するか聞かれるので4.2.0を選択します。

Choose org.alfresco.maven.archetype:alfresco-allinone-archetype version:
1: 2.0.0-beta-1
2: 2.0.0-beta-2
3: 2.0.0-beta-3
4: 2.0.0-beta-4
5: 2.0.0
6: 2.1.0
7: 2.1.1
8: 2.2.0
9: 3.0.0
10: 3.0.1
11: 3.1.0
12: 4.0.0-beta-1
13: 4.0.0
14: 4.1.0
15: 4.2.0
Choose a number: 15:

最後に、groupIdやartifactIdといった情報の入力を求められるので適当に入力します。ここで入力したartifactIdが、プロジェクトのディレクトリ名やビルド時に作成されるJARファイルのファイル名として使用されます。

Define value for property 'groupId': jp.aegif.alfresco
Define value for property 'artifactId': my-all-in-one
[INFO] Using property: version = 1.0-SNAPSHOT
Define value for property 'package' jp.aegif.alfresco: :

入力内容が合っているか聞かれるので、問題なければYを入力します(何も入力せずEnterでも同じです)。Y以外を入力するとgroupIdの入力からやり直すことができます。archetypeの選択からやり直したい場合はCtrl+Cで終了して最初からやり直せば大丈夫です。

Confirm properties configuration:
groupId: jp.aegif.alfresco
artifactId: my-all-in-one
version: 1.0-SNAPSHOT
package: jp.aegif.alfresco
Y: :

「BUILD SUCCESS」と表示されたらプロジェクト作成完了です。

Buildして起動

最初にmvnコマンドを実行したディレクトリにartifactIdと同名のディレクトリ(ここではmy-all-in-one)が作成されているはずなのでそのディレクトリに移動します。

cd my-all-in-one

このディレクトリで、LinuxやMacでは

./run.sh build_start

Windowsでは

run.bat build_start

を実行すると、カスタマイズが適用されたAlfresco(厳密に言うとAlfrescoを動かすために必要なコンテナ群)が起動します。

エラーの解消

SDK 4.2ではこのまま起動しても以下のエラーが延々と出続けるので、一旦 ./run.sh stop または run.bat stop でコンテナを停止します。

ERROR [component.jms.DefaultJmsMessageListenerContainer] [Camel (alfrescoCamelContext) thread #1 - JmsConsumer[acs-repo-rendition-events]] Could not refresh JMS Connection for destination 'acs-repo-rendition-events' - retrying using FixedBackOff{interval=5000, currentAttempts=22, maxAttempts=unlimited}. Cause: Error while attempting to add new Connection to the pool; nested exception is javax.jms.JMSException: Could not create Transport. Reason: java.io.IOException: Transport scheme NOT recognized: [vm]

ありがたいことに解決策がこちらのForumで紹介されているので、そのとおりに[artifactId]-platform-docker/pom.xml(今回の例では my-all-in-one-platform-docker/pom.xml)に以下のdependencyを追記します。

<dependency>
   <groupId>org.apache.activemq</groupId>
   <artifactId>activemq-broker</artifactId>
   <version>5.16.1</version>
</dependency>

改めて ./run.sh build_start または run.bat build_start でコンテナを起動すると、上記のエラーは出なくなっているはずです。

以上、SDK 4.2で開発環境を構築する方法のご紹介でした。各archetypeの説明や、作成されたプロジェクトに含まれるサンプルコードの使い方等、他にも詳しい内容が冒頭でもご紹介した公式ドキュメントに載っているので一度目を通しておくと理解が深まるのではないかと思います。

関連記事
customize
customize
customize
feature

RANKING
2020.10.12
2020.11.19
2020.12.23
2020.10.05
2020.11.25