Un article précédent vous présentait l’arrivée de Maven dans JDeveloper :
http://arkzoyd.wpengine.com/2014/11/17/oracle-soa-suite-12c-support-maven
Ici, ce billet montre comment utiliser ces fonctionnalités en dehors de JDeveloper pour mettre en place une intégration continue et industrialiser les développements Oracle SOA 12c.
L’intégration continue repose sur le fait d’automatiser les étapes suivantes :
- Compilation des sources
- Tests des sources
- Construction des binaires
- Déploiement sur serveur d’intégration
Pour illustrer comment automatiser ces actions avec Oracle SOA Suite 12c et Maven, nous réalisons les actions suivantes :
- Lancement JDeveloper 12.1.3 (composite editor plugin)
- Création d’une application de type SOA nommée SOAApplication (composite vide)
- Création d’un projet de type SOA nommé SOAProject
Pour info, un autre article du blog présentait l’installation Oracle SOA Suite 12.1.3 :
http://arkzoyd.wpengine.com/2014/09/18/installer-configurer-oracle-soa-12c
L’arborescence visible dans JDeveloper est la suivante :
On remarque immédiatement :
- Un fichier pom.xml a automatiquement été créé au niveau de l’application (cf. « Application Resources »)
- Un fichier pom.xml a automatiquement été créé au niveau du projet
Ces fichiers sont utilisés par Maven pour réaliser les opérations suivantes :
- Compilation des composites SOA
- Packaging des composites SOA (fichier de type SAR)
- Déploiement des composites SOA
- Lacement des tests unitaires des composites SOA
POM au niveau application :
Ce fichier a pour vocation de faire de l’application SOA un module Maven parent regroupant autant de modules enfants que de composites SOA. Il permet ainsi de compiler, packager et déployer une application SOA en une seule opération.
POM au niveau projet :
Ce fichier paramètre le build Maven d’un composite SOA :
- Indique l’utilisation du plugin Maven pour SOA fourni par Oracle (oracle-soa-plugin)
- Précise la configuration du plugin Maven pour SOA
Configuration du plugin :
La configuration du plugin utilise des propriétés Maven (définies en début de POM et pouvant être surchargées au niveau de la ligne de commande) et comporte :
- Le nom et la version du composite SOA correspondant
- Les emplacements en entrée (source du composite) et en sortie (répertoire de destination)
- Les informations de connexion au serveur sur lequel déployer le composite et lancer les tests unitaires correspondants
Ces configurations correspondent au paramétrage des scripts ANT fournis par Oracle qu’il fallait utiliser directement dans les versions précédentes (ant-sca-compile.xml, ant-sca-deploy.xml, etc.).
Nous allons désormais voir comment utiliser ces fichiers avec Maven.
Installation Maven:
Maven est fourni avec Oracle SOA Suite 12c et se trouve à l’emplacement suivant:
ORACLE_HOME/oracle_common/modules/org.apache.maven_3.0.5
Variables d’environnement:
set ORACLE_HOME=D:/path/to/fmw
set MAVEN_HOME=%ORACLE_HOME%/oracle_common/modules/org.apache.maven_3.0.5
set JAVA_HOME=%ORACLE_HOME%/jdk
set PATH=%PATH% ;%JAVA_HOME%\BIN ;%MAVEN_HOME%\BIN
Note: ORACLE_HOME et JAVA_HOME doivent être ajustées à votre installation / version
Settings Maven:
Le fichier de settings maven doit se trouver à l’emplacement suivant:
%USERPROFILE%\.m2\settings.xml
Vous pouvez notamment y renseigner un éventuel serveur proxy:
Check :
Vous pouvez vérifier la configuration en lançant la commande suivante:
mvn -v
Nous devons désormais ajouter les composants SOA Oracle à notre isntallation Maven.
Plugin Maven SOA de synchronisation:
Un unique plugin Maven permet d’installer tous les artefacts SOA à partir d’un ORACLE_HOME et se trouve dans le répertoire suivant:
ORACLE_HOME/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/12.1.3
A partir de ce répertoire, utiliser la commande suivante pour installer le plugin de synchronisation dans votre repository Maven:
mvn install:install-file -DpomFile=oracle-maven-sync.12.1.3.pom -Dfile=oracle-maven-sync.12.1.3.jar
A partir de ce répertoire, utiliser la commande suivante pour déployer le plugin dans votre repository distant et partagé (optionnel pour l’instant):
mvn deploy:deploy-file -DpomFile=oracle-maven-sync-12.1.3.pom -Dfile=oracle-maven-sync-12.1.3.jar -Durl=http://servername/archiva/repositories/internal -DrepositoryId=internal
Check :
mvn help:describe -Dplugin=com.oracle.maven:oracle-maven-sync -Ddetail
Alimenter votre repo local à partir du plugin de synchronisation :
mvn com.oracle.maven:oracle-maven-sync:push -Doracle-maven-sync.oracleHome=/path/to/oracleHome -DtestingOnly=false
Alimenter votre repo distant et partagé (optionnel pour l’instant) :
mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=/path/to/oracleHome -DserverId=internal
Check :
mvn help:describe -Dplugin=com.oracle.soa.plugin:oracle-soa-plugin -Ddetail
Pour plus d’informations à ce sujet:
https://docs.oracle.com/middleware/1213/core/MAVEN/config_maven.htm#MAVEN314
Modification des POM dans JDeveloper:
Pour simplifier les opérations suivantes, nous modifions la version dans les POM d’application et de projets (1.0-SNAPSHOT => 1.0):
POM application:
POM projet:
Voici désormais les commandes à utiliser pour compiler / packager / déployer / etc.
Compile :
Pour compiler le composite:
mvn compile
Package :
Pour packager le composite:
mvn package
Deploy :
Pour déployer le composite (en ajustant les informations de connexion au serveur):
mvn pre-integration-test -DserverUrl=http://devsrvsoa001.nexity.net:8001 -Duser=weblogic -Dpassword=password
Undeploy :
Pour annuler le déploiement du compoiste (en ajustant les informations de connexion au serveur):
mvn com.oracle.soa.plugin:oracle-soa-plugin:undeploy -DserverUrl=http://devsrvsoa001.nexity.net:8001 -Duser=weblogic -Dpassword=password
Considération vis-à-vis du MDS :
Si vous utilisez MDS, le fichier pom.xml du projet de composite doit-être modifié comme suit (renseigner appHome et oracleHome):
Pour plus d’info, voir la note Oracle à l’emplacement suivant :
https://docs.oracle.com/middleware/1213/core/MAVEN/soa_maven_project.htm#MAVEN9003
Utilisation du POM parent pour centraliser les propriétés utilisées:
Les POM de projet / composite dépendent d’un POM parent présent à l’emplacement suivant:
%MAVEN_REPO%\com\oracle\soa\sar-common\12.1.3-0-0\sar-common-12.1.3-0-0.pom
Les propriétés communes à tous les composites peuvent y être ajoutées comme ci-dessus pour simplifier les commandes à passer:
mvn pre-integration-test
mvn com.oracle.soa.plugin:oracle-soa-plugin:undeploy
Conclusion:
L’automatisation de build SOA et la mise en place d’une intégration continue sont donc désormais :
- Plus facile et rapide car intégré au sein de l’IDE (pom.xml générés)
- Plus standard (utilisation Maven)
Plus d’info :
https://docs.oracle.com/middleware/1213/core/MAVEN/soa_maven_project.htm
What’s next ?
- OSB
- Ajouter BPEL / Business Rules
- Ajouter tests unitaires
- Archiva / Hudson