Share archetype - Switch to docker environment

Change the platform project to add the required configuration to execute it
as an orchestrated docker environment that includes ACS (optional), Share,
PostgreSQL and ASS. This will replace the use of the Alfresco Maven Plugin.

New bash scripts has been added to manage the docker environment.
A new docker-compose file configure the docker environment.
All the unnecessary files and configuration have been removed from the archetype.
This commit is contained in:
Jose Luis Osorno
2018-12-19 15:35:04 +01:00
parent 0ca57b20a1
commit eae6c13de5
24 changed files with 632 additions and 192 deletions

View File

@@ -23,8 +23,6 @@
<include>archetype-resources/pom.xml</include>
<include>archetype-resources/run.sh</include>
<include>archetype-resources/run.bat</include>
<include>archetype-resources/debug.sh</include>
<include>archetype-resources/debug.bat</include>
<include>META-INF/maven/archetype-metadata.xml</include>
</includes>
<filtering>true</filtering>
@@ -35,8 +33,6 @@
<exclude>archetype-resources/pom.xml</exclude>
<exclude>archetype-resources/run.sh</exclude>
<exclude>archetype-resources/run.bat</exclude>
<exclude>archetype-resources/debug.sh</exclude>
<exclude>archetype-resources/debug.bat</exclude>
<exclude>META-INF/maven/archetype-metadata.xml</exclude>
</excludes>
<filtering>false</filtering>

View File

@@ -24,8 +24,6 @@
<include>archetype-resources/pom.xml</include>
<include>archetype-resources/run.sh</include>
<include>archetype-resources/run.bat</include>
<include>archetype-resources/debug.sh</include>
<include>archetype-resources/debug.bat</include>
<include>META-INF/maven/archetype-metadata.xml</include>
</includes>
<filtering>true</filtering>
@@ -36,8 +34,6 @@
<exclude>archetype-resources/pom.xml</exclude>
<exclude>archetype-resources/run.sh</exclude>
<exclude>archetype-resources/run.bat</exclude>
<exclude>archetype-resources/debug.sh</exclude>
<exclude>archetype-resources/debug.bat</exclude>
<exclude>META-INF/maven/archetype-metadata.xml</exclude>
</excludes>
<filtering>false</filtering>

View File

@@ -43,7 +43,6 @@
<!-- Environment configuration properties -->
<share.port>8180</share.port>
<share.debug.port>9898</share.debug.port>
<acs.host>${artifactId}-acs</acs.host>
<acs.port>8080</acs.port>
<acs.debug.port>8888</acs.debug.port>

View File

@@ -26,12 +26,12 @@ disabledPlugins=Hibernate,Spring
#
# Load web application resources (such as HTML, JSP, CSS, ...) from this directory prior to default processing.
# Use this setting to set to serve resources from source directory directly (e.g. src/main/webapp).
extraWebappContext=/usr/local/tomcat/hotswap-agent/${rootArtifactId}-platform-jar/target/classes/META-INF/resources;
extraWebappContext=/usr/local/tomcat/hotswap-agent/${rootArtifactId}/target/classes/META-INF/resources;
# Load static web resources from different directory.
#
# This setting is dependent on application server plugin(Jetty, Tomcat, JBoss, ...)
webappDir=/usr/local/tomcat/hotswap-agent/${rootArtifactId}-platform-jar/target/classes/META-INF/resources;
webappDir=/usr/local/tomcat/hotswap-agent/${rootArtifactId}/target/classes/META-INF/resources;
# Watch for changes in a directory (resources only).
#

View File

@@ -26,8 +26,6 @@
<include>archetype-resources/pom.xml</include>
<include>archetype-resources/run.sh</include>
<include>archetype-resources/run.bat</include>
<include>archetype-resources/debug.sh</include>
<include>archetype-resources/debug.bat</include>
<include>META-INF/maven/archetype-metadata.xml</include>
</includes>
<filtering>true</filtering>
@@ -38,8 +36,6 @@
<exclude>archetype-resources/pom.xml</exclude>
<exclude>archetype-resources/run.sh</exclude>
<exclude>archetype-resources/run.bat</exclude>
<exclude>archetype-resources/debug.sh</exclude>
<exclude>archetype-resources/debug.bat</exclude>
<exclude>META-INF/maven/archetype-metadata.xml</exclude>
</excludes>
<filtering>false</filtering>

View File

@@ -11,12 +11,38 @@
</requiredProperties>
<fileSets>
<fileSet encoding="UTF-8" filtered="true">
<directory>docker</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet filtered="false" packaged="false" encoding="UTF-8">
<directory>src/main/assembly</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8" filtered="false">
<directory>src/main/docker</directory>
<includes>
<include>Dockerfile</include>
<include>share-config-custom.xml</include>
</includes>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
</fileSet>
<fileSet encoding="UTF-8" filtered="true">
<directory>src/main/docker</directory>
<includes>
<include>**/*.properties</include>
</includes>
<excludes>
<exclude>Dockerfile</exclude>
<exclude>share-config-custom.xml</exclude>
</excludes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
@@ -51,18 +77,9 @@
<exclude>**/__artifactId__-example-widgets.xml</exclude>
</excludes>
</fileSet>
<fileSet filtered="true" packaged="false" encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<fileSet encoding="UTF-8" filtered="true">
<directory></directory>
<includes>
<include>debug.sh</include>
<include>debug.bat</include>
<include>run.sh</include>
<include>run.bat</include>
<include>README.md</include>

View File

@@ -1,10 +0,0 @@
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Dev environment startup script for Alfresco Community. ::
:: ::
:: Note. requires Alfresco.war to be running in another ::
:: Tomcat on port 8080. ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
mvnDebug clean install alfresco:run

View File

@@ -1,4 +0,0 @@
#!/bin/bash
# Note. requires Alfresco.war to be running in another Tomcat on port 8080
mvnDebug clean install alfresco:run

View File

@@ -0,0 +1,65 @@
#set( $symbol_dollar = '$' )
version: '3.4'
services:
${rootArtifactId}-share:
image: alfresco-share-${rootArtifactId}:development
build:
dockerfile: ./Dockerfile
context: ../../../target
environment:
CATALINA_OPTS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888"
REPO_HOST: ${rootArtifactId}-acs
REPO_PORT: 8080
ports:
- "${symbol_dollar}{share.port}:8080"
- "${symbol_dollar}{share.debug.port}:8888"
${rootArtifactId}-acs:
image: ${symbol_dollar}{docker.acs.image}:${symbol_dollar}{alfresco.platform.version}
environment:
JAVA_OPTS: "
-Ddb.driver=org.postgresql.Driver
-Ddb.username=alfresco
-Ddb.password=alfresco
-Ddb.url=jdbc:postgresql://${rootArtifactId}-postgres:5432/alfresco
-Dsolr.host=${rootArtifactId}-ass
-Dsolr.port=8983
-Dsolr.secureComms=none
-Dsolr.base.url=/solr
-Dindex.subsystem.name=solr6
"
ports:
- "${symbol_dollar}{acs.port}:8080"
volumes:
- alf-acs-volume:/usr/local/tomcat/alf_data
depends_on:
- ${rootArtifactId}-postgres
${rootArtifactId}-postgres:
image: postgres:9.6
environment:
POSTGRES_DB: alfresco
POSTGRES_USER: alfresco
POSTGRES_PASSWORD: alfresco
ports:
- "${symbol_dollar}{postgres.port}:5432"
volumes:
- alf-db-volume:/var/lib/postgresql/data
${rootArtifactId}-ass:
image: alfresco/alfresco-search-services:1.2.0
environment:
SOLR_ALFRESCO_HOST: ${rootArtifactId}-acs
SOLR_ALFRESCO_PORT: 8080
SOLR_SOLR_HOST: ${rootArtifactId}-ass
SOLR_SOLR_PORT: 8983
SOLR_CREATE_ALFRESCO_DEFAULTS: alfresco,archive
ports:
- "8983:8983"
volumes:
- alf-ass-volume:/opt/alfresco-search-services/contentstore
- alf-ass-volume:/opt/alfresco-search-services/data
volumes:
alf-acs-volume:
external: true
alf-db-volume:
external: true
alf-ass-volume:
external: true

View File

@@ -5,158 +5,108 @@
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<name>${artifactId} Share Jar Module - SDK 4.0</name>
<description>Share JAR Module (to be included in the share.war) - SDK 4.0</description>
<name>${artifactId} Share JAR Module</name>
<description>Sample Share JAR Module (to be included in the share.war)</description>
<packaging>jar</packaging>
<properties>
<!-- Alfresco Maven Plugin version to use -->
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
<alfresco.sdk.version>@@alfresco.sdk.parent.version@@</alfresco.sdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Properties used in dependency declarations, you don't need to change these -->
<alfresco.groupId>org.alfresco</alfresco.groupId>
<!-- COMMUNITY -->
<alfresco.bomDependencyArtifactId>acs-community-packaging</alfresco.bomDependencyArtifactId>
<alfresco.platform.version>6.0.7-ga</alfresco.platform.version>
<alfresco.share.version>6.0.c</alfresco.share.version>
<!-- ENTERPRISE -->
<!--<alfresco.bomDependencyArtifactId>acs-packaging</alfresco.bomDependencyArtifactId>-->
<!--<alfresco.platform.version>6.0.0.2</alfresco.platform.version>-->
<!--<alfresco.share.version>6.0</alfresco.share.version>-->
<!-- Alfresco Share webapp version, this is the original Alfresco webapp that will be
customized and then deployed and run by the tomcat maven plugin when
executing for example $ mvn clean install alfresco:run -->
<alfresco.share.version>5.2.d</alfresco.share.version>
<!-- Default is to run with a Community edition, change to 'enterprise' if using Enterprise edition -->
<maven.alfresco.edition>community</maven.alfresco.edition>
<!-- Alfresco Surf version, if you change Share version you might need to change Surf version -->
<alfresco.surf.version>6.11</alfresco.surf.version>
<!-- Since alfresco.war (i.e. the Platform/Repository) is already running on port 8080, we run Share.WAR on port 8081.
If Alfresco Platform is not running, then generate a platform-jar-module and start it up. -->
<maven.tomcat.port>8081</maven.tomcat.port>
<!-- Docker images -->
<!-- COMMUNITY -->
<docker.acs.image>alfresco/alfresco-content-repository-community</docker.acs.image>
<docker.share.image>alfresco/alfresco-share</docker.share.image>
<!-- ENTERPRISE -->
<!--<docker.acs.image>alfresco/alfresco-content-repository</docker.acs.image>-->
<!--<docker.share.image>alfresco/alfresco-share</docker.share.image>-->
<!-- JRebel Hot reloading of classpath stuff and web resource stuff -->
<jrebel.version>1.1.6</jrebel.version>
<!-- Compile with Java 7, default is 5 -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<!-- Compile with Java 8, default is 5 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- Environment configuration properties -->
<share.port>8180</share.port>
<share.debug.port>9898</share.debug.port>
<acs.host>${artifactId}-acs</acs.host>
<acs.port>8080</acs.port>
<postgres.port>5555</postgres.port>
</properties>
<!-- Libs used in Unit and Integration tests -->
<!-- IMPORTANT - Test dependencies need to be here in the top parent POM as
the Alfresco Maven IT Mojo runs as part of the parent project ... -->
<dependencies>
<!-- Following dependencies are needed for compiling Java code in src/main/java -->
<dependency>
<groupId>${alfresco.groupId}</groupId>
<artifactId>share</artifactId>
<version>${alfresco.share.version}</version>
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.alfresco.surf</groupId>
<artifactId>spring-surf-api</artifactId>
<version>${alfresco.surf.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- This will import the dependencyManagement for all artifacts in the selected Alfresco platform.
NOTE: You still need to define dependencies in your POM, but you can omit version as
it's enforced by this dependencyManagement.
NOTE: It defaults to the latest version this SDK pom has been tested with,
but alfresco version can/should be overridden in your project's pom
-->
<dependency>
<groupId>${alfresco.groupId}</groupId>
<artifactId>${alfresco.bomDependencyArtifactId}</artifactId>
<version>${alfresco.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Redefine the following Share dependencies as they have different version numbers than platform.
They are defined in alfresco-platform-distribution... -->
<dependency>
<groupId>${alfresco.groupId}</groupId>
<artifactId>share</artifactId>
<version>${alfresco.share.version}</version>
<type>war</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>${alfresco.groupId}</groupId>
<artifactId>share</artifactId>
<version>${alfresco.share.version}</version>
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>${alfresco.groupId}</groupId>
<artifactId>alfresco-web-framework-commons</artifactId>
<version>${alfresco.share.version}</version>
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!--
The Alfresco Maven Plugin contains all the logic to run the extension
in an embedded Tomcat with the H2 database.
-->
<plugin>
<groupId>org.alfresco.maven.plugin</groupId>
<artifactId>alfresco-maven-plugin</artifactId>
<version>${alfresco.sdk.version}</version>
<configuration>
<!-- We assume that the platform/repository is already running on localhost:8080 -->
<enablePlatform>false</enablePlatform>
<!-- Enable the Share webapp, which is what we customize with Share JAR modules -->
<enableShare>true</enableShare>
<!--
JARs and AMPs that should be overlayed/applied to the Share WAR
(i.e. share.war)
-->
<shareModules>
<!-- Bring in this JAR project, need to be included here, otherwise share-config-custom.xml
will not be picked up. It will not be read from target/classes/META-INF -->
<moduleDependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</moduleDependency>
</shareModules>
</configuration>
</plugin>
<!-- Build an AMP if 3rd party libs are needed by the extension -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>build-amp-file</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptor>src/main/assembly/amp.xml</descriptor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.alfresco.maven.plugin</groupId>
<artifactId>alfresco-maven-plugin</artifactId>
<version>${alfresco.sdk.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- Hot reloading with JRebel -->
<plugin>
<groupId>org.zeroturnaround</groupId>
<artifactId>jrebel-maven-plugin</artifactId>
<version>${jrebel.version}</version>
<executions>
<execution>
<id>generate-rebel-xml</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- For more information about how to configure JRebel plugin see:
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
<classpath>
<fallback>all</fallback>
<resources>
<resource>
<!--
Empty resource element marks default configuration. By
default it is placed first in generated configuration.
-->
</resource>
</resources>
</classpath>
<!--
alwaysGenerate - default is false
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
If 'true' - rebel.xml will always be generated
-->
<alwaysGenerate>true</alwaysGenerate>
</configuration>
</plugin>
<!-- Filter the test resource files in the AIO parent project, and do property substitutions.
We need this config so this is done before the Alfresco Maven Plugin 'run' is executed. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
@@ -190,6 +140,150 @@
<nonFilteredFileExtension>js</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
<executions>
<execution>
<id>copy-and-filter-docker-compose-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}/docker</outputDirectory>
<resources>
<resource>
<directory>docker</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<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>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<!-- Copy the share extension -->
<execution>
<id>copy-repo-extension</id>
<phase>pre-integration-test</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<!-- Copy other dependencies (JARs or AMPs) declared in the share module -->
<execution>
<id>copy-third-party-dependencies</id>
<phase>pre-integration-test</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/extensions</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<!--
Build an AMP if 3rd party libs are needed by the extensions
JARs are the default artifact produced in your modules, if you want to build an amp for each module
you have to enable this plugin and inspect the src/main/assembly.xml file if you want to customize
the layout of your AMP. The end result is that Maven will produce both a JAR file and an AMP with your
module.
-->
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>build-amp-file</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptor>src/main/assembly/amp.xml</descriptor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.alfresco.maven.plugin</groupId>
<artifactId>alfresco-maven-plugin</artifactId>
<version>${alfresco.sdk.version}</version>
</dependency>
</dependencies>
</plugin>
-->
<!-- Hot reloading with JRebel -->
<plugin>
<groupId>org.zeroturnaround</groupId>
<artifactId>jrebel-maven-plugin</artifactId>
<version>${jrebel.version}</version>
<executions>
<execution>
<id>generate-rebel-xml</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- For more information about how to configure JRebel plugin see:
http://manuals.zeroturnaround.com/jrebel/standalone/maven.html#maven-rebel-xml -->
<classpath>
<fallback>all</fallback>
<resources>
<resource>
<directory>${project.build.outputDirectory}</directory>
<directory>${project.build.testOutputDirectory}</directory>
</resource>
</resources>
</classpath>
<!--
alwaysGenerate - default is false
If 'false' - rebel.xml is generated if timestamps of pom.xml and the current rebel.xml file are not equal.
If 'true' - rebel.xml will always be generated
-->
<alwaysGenerate>true</alwaysGenerate>
</configuration>
</plugin>
</plugins>
@@ -231,6 +325,7 @@
<url>https://artifacts.alfresco.com/nexus/content/groups/private</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>alfresco-plugin-public</id>
@@ -245,5 +340,4 @@
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

View File

@@ -1,9 +1,91 @@
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Dev environment startup script for Alfresco Community. ::
:: ::
:: Note. requires Alfresco.war to be running in another ::
:: Tomcat on port 8080. ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
#set( $symbol_dollar = '$' )
@ECHO OFF
mvn clean install alfresco:run
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|build_test|test}"
GOTO END
)
IF %1==build_start (
CALL :down
CALL :build
CALL :start
CALL :tail
GOTO END
)
IF %1==start (
CALL :start
CALL :tail
GOTO END
)
IF %1==stop (
CALL :down
GOTO END
)
IF %1==purge (
CALL:down
CALL:purge
GOTO END
)
IF %1==tail (
CALL :tail
GOTO END
)
IF %1==reload_share (
CALL :build_share
CALL :start_share
CALL :tail
GOTO END
)
IF %1==build_test (
CALL :down
CALL :build
CALL :start
CALL :test
CALL :down
GOTO END
)
IF %1==test (
CALL :test
GOTO END
)
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|build_test|test}"
:END
EXIT /B %ERRORLEVEL%
:start
docker volume create alf-acs-volume
docker volume create alf-db-volume
docker volume create alf-ass-volume
docker-compose -f "%COMPOSE_FILE_PATH%" up --build -d
EXIT /B 0
:start_share
docker-compose -f "%COMPOSE_FILE_PATH%" up --build -d ${rootArtifactId}-share
EXIT /B 0
:down
docker-compose -f "%COMPOSE_FILE_PATH%" down
EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
call mvn clean install -DskipTests
EXIT /B 0
:build_share
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-share
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
call mvn clean install -DskipTests
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
:test
call mvn verify -pl
EXIT /B 0
:purge
docker volume rm alf-acs-volume
docker volume rm alf-db-volume
docker volume rm alf-ass-volume
EXIT /B 0

View File

@@ -1,4 +1,85 @@
#!/bin/bash
# Note. requires Alfresco.war to be running in another Tomcat on port 8080
#set( $symbol_dollar = '$' )
#!/bin/sh
mvn clean install alfresco:run
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
start() {
docker volume create alf-acs-volume
docker volume create alf-db-volume
docker volume create alf-ass-volume
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH up --build -d
}
start_share() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH up --build -d ${rootArtifactId}-share
}
down() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH down
}
purge() {
docker volume rm alf-acs-volume
docker volume rm alf-db-volume
docker volume rm alf-ass-volume
}
build() {
docker rmi alfresco-share-${rootArtifactId}:development
mvn clean install -DskipTests=true
}
build_share() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-share
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
mvn clean install -DskipTests=true
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
test() {
mvn verify -pl
}
case "${symbol_dollar}1" in
build_start)
down
build
start
tail
;;
start)
start
tail
;;
stop)
down
;;
purge)
down
purge
;;
tail)
tail
;;
reload_share)
build_share
start_share
tail
;;
build_test)
down
build
start
test
down
;;
test)
test
;;
*)
echo "Usage: ${symbol_dollar}0 {build_start|start|stop|purge|tail|reload_share|build_test|test}"
esac

View File

@@ -1,7 +1,7 @@
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<!--
Note that the Module dependency specified in the configuration section for the Alfresco Maven Plugin

View File

@@ -0,0 +1,16 @@
FROM ${docker.share.image}:${alfresco.share.version}
ARG TOMCAT_DIR=/usr/local/tomcat
# Copy Dockerfile to avoid an error if no JARs exist
COPY Dockerfile extensions/*.jar $TOMCAT_DIR/webapps/share/WEB-INF/lib/
# Copy Dockerfile to avoid an error if no AMPs exist
COPY Dockerfile extensions/*.amp $TOMCAT_DIR/amps_share/
RUN java -jar $TOMCAT_DIR/alfresco-mmt/alfresco-mmt*.jar install \
$TOMCAT_DIR/amps_share $TOMCAT_DIR/webapps/share -directory -nobackup -force
COPY share-config-custom.xml $TOMCAT_DIR/shared/classes/alfresco/web-extension
COPY log4j.properties $TOMCAT_DIR/webapps/share/WEB-INF/classes
COPY hotswap-agent.properties $TOMCAT_DIR/webapps/share/WEB-INF/classes

View File

@@ -1,3 +1,6 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
# Enable hotswap so that changes in this module will be automatically reloaded
# Watch for changed class files on watchResources path and reload class definition in the running application.
autoHotswap=true
@@ -11,7 +14,8 @@ autoHotswap=true
# i.e. monitor /target/classes
# should work with extraClasspath=${project.build.outputDirectory}
# If not try
extraClasspath=${project.build.outputDirectory};${project.build.testOutputDirectory}
extraClasspath=/usr/local/tomcat/hotswap-agent
# Comma separated list of disabled plugins
# Use plugin name - e.g.
@@ -23,12 +27,12 @@ disabledPlugins=Hibernate,Spring
#
# Load web application resources (such as HTML, JSP, CSS, ...) from this directory prior to default processing.
# Use this setting to set to serve resources from source directory directly (e.g. src/main/webapp).
extraWebappContext=${project.build.outputDirectory}/META-INF/resources
extraWebappContext=/usr/local/tomcat/hotswap-agent/${rootArtifactId}/target/classes/META-INF/resources;
# Load static web resources from different directory.
#
# This setting is dependent on application server plugin(Jetty, Tomcat, JBoss, ...)
webappDir=${project.build.outputDirectory}/META-INF/resources
webappDir=/usr/local/tomcat/hotswap-agent/${rootArtifactId}/target/classes/META-INF/resources;
# Watch for changes in a directory (resources only).
#

View File

@@ -1,7 +1,10 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
# Set root logger level to error
log4j.rootLogger=error, Console, File
###### Console appender definition #######
# Console appender definition #
# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
@@ -11,7 +14,7 @@ log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ISO8601} %x %-5p [%c{3}] [%t] %m%n
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n
###### File appender definition #######
# File appender definition #
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=share.log
log4j.appender.File.Append=true

View File

@@ -0,0 +1,105 @@
<alfresco-config>
<config evaluator="string-compare" condition="WebFramework">
<web-framework>
<autowire>
<!-- Changing this to 'development' currently breaks the Admin Console.
Instead we make a POST to clear Share dependency caches, see 'clear-caches-refresh-ws' profile. -->
<mode>production</mode> <!-- not really need in the long run, used for YUI - deprecate -->
</autowire>
<!--
We don't need to do this when we have the new refresh mojos in the Alfresco plug-in.
If resource caching has been disabled then all the dependency caches will be cleared
before processing the Aikau jsonModel request...
(i.e. this.dojoDependencyHandler.clearCaches() )
For more information see the Aikau source code: https://github.com/Alfresco/Aikau
-->
<disable-resource-caching>false</disable-resource-caching>
</web-framework>
</config>
<!-- Global config section -->
<config replace="true">
<flags>
<!--
Developer debugging setting to turn on DEBUG mode for client scripts in the browser
-->
<client-debug>true</client-debug>
<!--
LOGGING can always be toggled at runtime when in DEBUG mode (Ctrl, Ctrl, Shift, Shift).
This flag automatically activates logging on page load.
-->
<client-debug-autologging>false</client-debug-autologging>
</flags>
</config>
<!--
Disable CSRF completely for now
It seems Share has issues on 4.2.x with the embedded tomcat and CSRFPolicy
-->
<config evaluator="string-compare" condition="CSRFPolicy" replace="true">
<filter/>
</config>
<!--
Change so it is picked up from property where the Alfresco Repo Webapp is running
(e.g. http://localhost:8080/alfresco)
-->
<config evaluator="string-compare" condition="Remote">
<remote>
<endpoint>
<id>alfresco-noauth</id>
<name>Alfresco - unauthenticated access</name>
<description>Access to Alfresco Repository WebScripts that do not require authentication</description>
<connector-id>alfresco</connector-id>
<endpoint-url>http://${acs.host}:8080/alfresco/s</endpoint-url>
<identity>none</identity>
</endpoint>
<endpoint>
<id>alfresco</id>
<name>Alfresco - user access</name>
<description>Access to Alfresco Repository WebScripts that require user authentication</description>
<connector-id>alfresco</connector-id>
<endpoint-url>http://${acs.host}:8080/alfresco/s</endpoint-url>
<identity>user</identity>
</endpoint>
<endpoint>
<id>alfresco-feed</id>
<name>Alfresco Feed</name>
<description>Alfresco Feed - supports basic HTTP authentication via the EndPointProxyServlet</description>
<connector-id>http</connector-id>
<endpoint-url>http://${acs.host}:8080/alfresco/s</endpoint-url>
<basic-auth>true</basic-auth>
<identity>user</identity>
</endpoint>
<endpoint>
<id>activiti-admin</id>
<name>Activiti Admin UI - user access</name>
<description>Access to Activiti Admin UI, that requires user authentication</description>
<connector-id>activiti-admin-connector</connector-id>
<endpoint-url>http://${acs.host}:8080/alfresco/activiti-admin</endpoint-url>
<identity>user</identity>
</endpoint>
<endpoint>
<id>alfresco-api</id>
<parent-id>alfresco</parent-id>
<name>Alfresco Public API - user access</name>
<description>Access to Alfresco Repository Public API that require user authentication.
This makes use of the authentication that is provided by parent 'alfresco' endpoint.</description>
<connector-id>alfresco</connector-id>
<endpoint-url>http://${acs.host}:8080/alfresco/api</endpoint-url>
<identity>user</identity>
</endpoint>
</remote>
</config>
</alfresco-config>

View File

@@ -11,10 +11,10 @@
-->
<alfresco-config>
<!--================================================================================================================
Make custom types and aspects visible in "Change Type" and "Manage Aspects" actions.
This will also make them visible when creating rules.
(will be merged with out-of-the-box configured types and aspects)
=============================================================================================================-->
Make custom types and aspects visible in "Change Type" and "Manage Aspects" actions.
This will also make them visible when creating rules.
(will be merged with out-of-the-box configured types and aspects)
=============================================================================================================-->
<config evaluator="string-compare" condition="DocumentLibrary">
<aspects>

View File

@@ -17,7 +17,7 @@
-->
<!-- Add module specific messages and labels -->
<bean id="${artifactId}.resources"
<bean id="${package}.${artifactId}.resources"
class="org.springframework.extensions.surf.util.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>