null Alfresco Community Edition 7.xの開発環境にJavaScript Consoleをインストールする方法

2023/09/21追記:JavaScript ConsoleがOOTBee Support Toolsに組み込まれ、下記の手順より簡便にインストールできるようになりました。新しい手順のご紹介をブログ記事「OOTBee Support Toolsに組み込まれたJavaScript Consoleのインストール」でしておりますので、ご参照ください

今回はAlfresco Community Edition 7.xの開発環境にJavaScript Consoleをインストールする方法についてご紹介します。6.xの開発環境でのインストール方法については過去のブログ(Alfresco SDK 4.1の開発環境にJavaScript Consoleをインストールする方法)をご参照ください。(こちらの方法は7.xではエラーとなります)

使用する開発環境の構築

まず、過去のブログ(Alfresco SDK 4.2で開発環境を構築する方法)を参考にalfresco-allinone-archetypeのプロジェクトを作成してください。こちらの記事中では使用するSDKバージョンの選択肢が 15: 4.2.0までとなっていますが、現在は16: 4.3.0が追加されています。SDK 4.2のバグ修正やAlfresco Community Edition 7.1への対応などが行われていますので、基本的には16を選択しSDK 4.3を使用してください。なお、SDK 4.2で発生していた以下のエラーは4.3ではpom.xmlを修正しなくても発生しません。

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]

プロジェクト作成後、./run.sh build_start でコンテナを起動して、ブラウザから http://localhost:8180/share を開いて正常に起動できていることが確認できたら、一旦 ./run.sh stop でコンテナを停止します。

JavaScript ConsoleのAMPファイル準備

JavaScript Consoleのgithubプロジェクトの最新版は、Alfresco Community Edition 7.xでエラーとならないように修正が行われていますので、こちらを使用します。前のバージョンと異なりmavenからインストールできないため、以下の手順によりgithubからソースコードのダウンロード、ビルドを行い、AMPファイル(Alfresco Module Package)を用意する必要があります。

  1. JavaScript Consoleのプロジェクトをクローンし、作成されたディレクトリに移動します。
    git clone https://github.com/share-extras/js-console.git
    cd js-console
  2. mavenのpackageコマンドを実行します。
    mvn package
  3. javascript-console-repo/target/javascript-console-repo-0.7-SNAPSHOT.ampが、 javascript-console-share/target/javascript-console-share-0.7-SNAPSHOT.ampが作成されていることを確認します。

 

作成したAMPファイルの導入

以下の手順により、作成したAMPファイルを使用する開発環境に導入します。

  1. 使用する開発環境のルートディレクトリ(プロジェクト作成時に入力したartifactIdと同名のディレクトリ)に移動します
  2. 以下の通り、AMPファイルを保管するためのディレクトリを作成します。
    mkdir {artifactId}-platform-docker/src/main/docker/extensions
    mkdir {artifactId}-share-docker/src/main/docker/extensions
  3. 作成した各ampファイルを、以下のディレクトリにコピーします。
    • javascript-console-repo-0.7-SNAPSHOT.amp: {artifactId}-platform-docker/src/main/docker/extensions/
    • javascript-console-share-0.7-SNAPSHOT.amp: {artifactId}-share-docker/src/main/docker/extensions/
  4. {artifactId}-platform-docker/pom.xmlを、以下の通り修正します。
    <!--前略(79行目から)-->
        <!-- Filter the Dockerfile and the other files added to the container to be able to replace maven properties -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-and-filter-docker-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/docker</directory>
                                <filtering>true</filtering>
                                <excludes>
                                    <exclude>**/*.jar</exclude>
                                    <exclude>**/*.so</exclude>
                                    <exclude>**/*.gz</exclude>
                                    <exclude>**/*.amp</exclude> <!--追加-->
                                </excludes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <execution>
                    <id>copy-and-filter-docker-resources-non-filtered</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/docker</directory>
                                <filtering>false</filtering>
                                <includes>
                                    <include>**/*.jar</include>
                                    <include>**/*.so</include>
                                    <include>**/*.gz</include>
                                    <include>**/*.amp</include>  <!--追加-->
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    <!--後略-->
  5. {artifactId}-share-docker/pom.xmlを、以下の通り修正します。
    <!--前略(48行目から)-->
        <!-- Filter the Dockerfile and the other files added to the container to be able to replace maven properties -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-and-filter-docker-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/docker</directory>
                                <filtering>true</filtering>
                                <excludes>                        <!--追加-->
                                    <exclude>**/*.amp</exclude>   <!--追加-->
                                </excludes>                       <!--追加-->
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <execution>                                                            <!--追加-->
                    <id>copy-and-filter-docker-resources-non-filtered</id>             <!--追加-->
                    <phase>validate</phase>                                            <!--追加-->
                    <goals>                                                            <!--追加-->
                        <goal>copy-resources</goal>                                    <!--追加-->
                    </goals>                                                           <!--追加-->
                    <configuration>                                                    <!--追加-->
                        <outputDirectory>${project.build.directory}</outputDirectory>  <!--追加-->
                        <resources>                                                    <!--追加-->
                            <resource>                                                 <!--追加-->
                                <directory>src/main/docker</directory>                 <!--追加-->
                                <filtering>false</filtering>                           <!--追加-->
                                <includes>                                             <!--追加-->
                                    <include>**/*.amp</include>                        <!--追加-->
                                </includes>                                            <!--追加-->
                            </resource>                                                <!--追加-->
                        </resources>                                                   <!--追加-->
                    </configuration>                                                   <!--追加-->
                </execution>                                                           <!--追加-->
            </executions>
        </plugin>
    <!--後略-->
  6. ./run.sh build_startでコンテナを起動し、Shareにadminでログインして管理ツールにJavaScript Consoleがインストールされていることを確認します

今回の内容は以上となります。JavaScript ConsoleはOSSとして開発されていますが、元々の開発グループは活動を停止しており、現在は別のグループへの移行が進められているようです。移行が終わるまではmavenが使用できないため手順が少し複雑になってしまいますが、Alfresco 7.0以降を開発する際にはぜひ試してみてください。また進展があれば改めてご紹介します。

 

関連記事
customize
customize
customize
customize

RANKING
2020.10.12
2020.11.19
2020.12.23
2020.10.05
2020.11.25