Summit2014 topic 0153 - Alfresco Maven for shared properties

Post on 12-Jul-2015

161 views 1 download

Transcript of Summit2014 topic 0153 - Alfresco Maven for shared properties

From Venus to Mars

Developer land

Real world

Maven Alfresco SDK is fun! -Pamp-to-war

Alfresco AMP Archetype

Share AMP Archetype

What about deployments?

Real world has environments…!!!

… and integrated systems!

TEST PRE PRO

TEST PRE PRO

REPO SHARE!!!!!!

TEST + PRE + PRO!

Properties everywhere

INT

1 INT

2 INT

3 INT

1 INT

2 INT

3

Shared properties REPO SHARE!

Alfresco Repo properties

alfresco-global.properties!!•  Packaging this file inside AMP module !•  Or including new entries in Alfresco

shared folder original file!

No possibility to configure it by environment

Alfresco Share properties •  No visibility for resources in shared

alfresco-global.properties !•  Custom properties files or custom

messages files!

No possibility to configure it by environment No possibility to share props with repo

TEST

PRE

PRO

Our approach Maven Alfresco SDK to the rescue

 

profiles

properties-maven-plugin

maven-antrun-plugin

TEST

PRE

PRO

TEST

PRE

PRO

AMP!

TEST

PRE

PRO

Our approach Maven Alfresco SDK to the rescue

 

profiles

properties-maven-plugin

maven-antrun-plugin

TEST

PRE

PRO

TEST

PRE

PRO

AMP!

Properties files

external.system.url=test.external-system.com

conf/test.alfresco-amp.properties

external.system.url=pre.external-system.com

conf/pre.alfresco-amp.properties

external.system.url=external-system.com

conf/pro.alfresco-amp.properties

TEST

PRE

PRO

pom.xml - environments <profiles>

<profile>

<id>test</id>

<properties><env>test</env></properties>

</profile>

<profile>

<id>pre</id>

<properties><env>pre</env></properties>

</profile>

<profile>

<id>pro</id>

<properties><env>pro</env></properties>

</profile>

</profiles>

pom.xml – properties plugin <plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>properties-maven-plugin</artifactId>

<configuration>

<files>

<file>${user.dir}/conf/${env}.alfresco-amp.properties</file>

</files>

</configuration>

<executions>

<execution>

<phase>validate</phase>

<goals><goal>read-project-properties</goal></goals>

</execution>

</executions>

</plugin>

pom.xml – AntRun plugin <plugin>

<artifactId>maven-antrun-plugin</artifactId>

<executions>

<execution>

<phase>package</phase>

<goals><goal>run</goal></goals>

<configuration>

<tasks>

<copy todir="${dist}/${env}/amps" failonerror="false">

<fileset dir="${basedir}/target”><include name="*.amp"/>

</fileset>

</copy>

</tasks>

</configuration>

</execution>

</executions>

</plugin> Repo + Share!

<bean id="externalConnection"

class="es.keensoft.alfresco.ExternalConnection”>

<property name="url" value="${external.system.url}" />

</bean>

Using values !!!!… or by message property injection!

amp/config/alfresco/module/service-context.xml

Packaging !!AMPs for TEST environment available at!•  dist/test/amps!•  dist/test/amps_share!

$ mvn clean package -Ptest

AMP!

Real life A sample on where it can be useful

eSignature service Server signature Client signature Verification

Real life A sample on where it can be useful

eSignature service Server signature Client signature Verification

# Server signature

url.SignatureServer=http://preservicios3.aragon.es/asf/services/

SignatureServer

# Verification

url.PolicyManager=http://preservicios3.aragon.es/asf/services/

PolicyManager

# Client signature

url.websigner=https://preservicios3.aragon.es/firma/js/WS.js

Properties

conf/pre.alfresco-ast.properties

Use case AMP Repo!<bean id="asfSignatureSystem” class="es.aragon.ast.alfresco.sign.impl.external.ASFSignatureSystem" > <property name="asfUrlSignatureServer" value="${asf.url.SignatureServer}" /> <property name="asfUrlPolicyManager" value="${asf.url.PolicyManager}" /></bean>

!AMP Share!<ast:getCAs policyManagerUrl="${asf.url.PolicyManager}" app="${asf.app}" />

!

Final marks •  Using additional maven plugins to

extend Maven Alfresco SDK functionalities!

•  Ready to deploy AMPs are produced by environment!

•  Version organization can be added to store each distributed AMP!

Resources

GitHub"http://github.com/keensoft Twitter @AngelBorroy Blog http://www.keensoft.es/blog