Artículos
Sistemas
Desarrollo de Servers y Storage
Por Isaac Ruiz
Publicado en Junio 2016
Durante años, Apache Maven ha sido una de las herramientas para gestión del ciclo de vida de un proyecto de software en el mundo java.
Desde la llegada de Maven el ciclo de vida de un componente de software en java comenzó a tener por fin un mecanismo que permitiera automatizarlo, esto facilitó mucho las tareas que, por lo repetitivas, a veces caían en estados de error, sin mencionar lo tedioso que se volvían.

La necesidad de tener un ecosistema de integración continua ha provocado que poco a poco surjan más herramientas que completen este tipo de necesidades. El interés que Oracle ha puesto sobre Hudson, el servidor de integración continua más popular, confirman el interés de la empresa por este tipo de herramientas.
Hudson es un servidor de integración continua, es una pieza fundamental en el proceso de construcción de un ecosistema de integración continua.

Es dentro de este contexto que, junto a la llegada de la versión 12c., Weblogic Server proporciona un plugin para Apache Maven.
(Realmente el soporte para Maven viene desde la 11g, pero, es con la 12c que se tienen más funcionalidades y la integración está mejorada).
Este plugin tiene el principal objetivo de mantener sincronizado un repositorio local con los artefactos compatibles con el contenedor.
Adicionalmente, el plugin activa ciertos arquetipos que permiten la generación de proyectos Maven listos para ser utilizados.
Estos arquetipos a su vez permiten gestionar, desde el POM, usando la línea de comandos tareas comunes para administrar tanto el ciclo de despliegue del artefacto como del propio servidor.
El presente documento detalla los pasos necesarios para activar el plugin en Weblogic 12c, específicamente en la versión 12.2.1.
Este documento asume que se tiene cierta experiencia usando la línea de comandos Windows, conocimiento básico con el uso de Maven y conocimiento básico en el uso de Weblogic Server 12c
También, se asume que se tiene instalada la versión 8.x del JDK proporcionado por Oracle (HotSpot), y la versión 3.3.9 de Apache Maven.
Por último, se asume que se tiene instalado un dominio con WLS 12.2.1.
Si aún no tienes instalado un dominio puedes leer alguno de estos documentos:
La instalación del plugin está relacionada directamente a la versión de Weblogic que se tiene instalada.
Por lo general la carpeta raíz de una instalación WLS tiene estás carpetas.
Esta carpeta raíz es la que comúnmente conocemos como ORACLE_HOME.
ORACLE_HOME --> C:\Oracle\Middleware\Oracle_Home
|
|
|
Este dato será utilizado a lo largo de la instalación del plugin.
PS C:\Oracle\Middleware\Oracle_Home> ls Directorio: C:\Oracle\Middleware\Oracle_Home Mode LastWriteTime Length Name ---- ------------- ----- ---- d----- 24/04/2016 09:58 p. m. .patch_storage d----- 24/04/2016 09:56 p. m. cfgtoollogs d----- 24/04/2016 09:51 p. m. coherence d----- 24/04/2016 09:53 p. m. em d----- 24/04/2016 09:55 p. m. install d----- 24/04/2016 09:56 p. m. inventory d----- 24/04/2016 09:53 p. m. OPatch d----- 24/04/2016 09:53 p. m. oracle_common d----- 24/04/2016 09:55 p. m. oui d----- 24/04/2016 10:09 p. m. user_projects d----- 24/04/2016 09:53 p. m. wlserver -a---- 24/04/2016 10:09 p. m. 225 domain-registry.xml |
La carpeta ORACLE_HOME no siempre lleva ese nombre, al momento de realizar la instalación inicial es posible cambiarle el nombre.

base_domain.

|
La versión 12.2.1 de WLS requiere la versión 8 del JDK, de preferencia el JDK debe ser con HotSpot, la JVM de Oracle.
%> java -version java version "1.8.0_77" Java(TM) SE Runtime Environment (build 1.8.0_77-b03) Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode) PS C:\Oracle\OracleHome1221c\wlserver\server\lib> |
Validación de Maven.En el caso de Apache Maven, para este ejercicio usaremos la versión 3.3.9.
%> mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T10:41:47-06:00) Maven home: C:\opt\apache\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin\.. Java version: 1.8.0_77, vendor: Oracle Corporation Java home: C:\opt\java\8u77\jre Default locale: es_ES, platform encoding: Cp1252 |
|
|
Y se llama: oracle-maven-sync-12.2.1.jar |
oracle-maven-sync-12.2.1.pom |
|
Ubicación del artefacto de sincronización.
![]() Nos debemos ubicar en esa carpeta y ejecutar la siguiente línea: mvn install:install-file -DpomFile="oracle-maven-sync-12.2.1.pom" -Dfile="oracle-maven-sync-12.2.1.jar" |
|
Este es un ejemplo de la salida de la consola: PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1> |
|
Podemos validar la instalación del plugin con la siguiente línea: mvn help:describe -Dplugin="com.oracle.maven:oracle-maven-sync" -Ddetail |
|
Este es un ejemplo de salida de consola para la ejecución de la línea anterior:
PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1>
mvn help:describe -Dplugin="com.oracle.maven:oracle-maven-sync" -Ddetail
[INFO] Scanning for projects...
Downloading:
https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom
Downloaded:
https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom
(6 KB at 5.5 KB/sec)
Downloading:
https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.pom
…
…
…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.2:describe (default-cli) @ standalone-pom ---
Downloading:
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
Downloading:
https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-
…
…
…
Downloaded:
https://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.4/commons-lang-2.4.jar (256 KB at 22.7 KB/sec)
Downloading:
https://repo.maven.apache.org/maven2/com/oracle/maven/oracle-maven-sync/maven-metadata.xml
[INFO] com.oracle.maven:oracle-maven-sync:12.2.1-0-0
Name: Oracle Maven Synchronization Plugin
Description: Maven plugin to load a Maven repository with the contents of the
Oracle Home directory
Group Id: com.oracle.maven
Artifact Id: oracle-maven-sync
Version: 12.2.1-0-0
Goal Prefix: oracle-sync
This plugin has 2 goals:
oracle-sync:help
Description: Display help.
Implementation: com.oracle.maven.sync.ODMHelp
Language: java
This mojo doesn't use any parameters.
oracle-sync:push
Description: Install to the local repository and optionally deploy to a
remote repository from the specified oracle home
The plugin will use your current Maven settings to determine the path to
the local repository and, optionally, a remote deployment repository. For
details on how to configure Maven's repository settings, see the Maven
settings reference: http://maven.apache.org/settings.html
You can specify the parameters on the command line like this:
-DserverId=archiva-internal -DdryRun=false -DfailOnError=false
To override the localRepository target used by the plugin, you can specify
the following option on the command-line:
-Dmaven.local.repo=/alternate/path/to/repository
To supply an alternate settings.xml for purposes of this operation, use the
--settings option. For example:
mvn --settings /alternate/path/settings.xml ...
...or in your POM like this:
<plugin>
<groupId>com.oracle.maven</groupId>
<artifactId>oracle-maven-sync</artifactId>
<version>12.2.1-0-0</version>
<configuration>
<oracleHome>/home/mark/Oracle/Middleware</oracleHome>
<failOnError>false</failOnError>
</configuration>
</plugin>
Implementation: com.oracle.maven.sync.ODMPushMojo
Language: java
Available parameters:
dryRun (Default: false)
User property: dryRun
If set to 'true' this goal execution will only log push actions but will
not actually make any changes.
failOnError (Default: true)
User property: failOnError
If set to 'true' the plugin will stop and return an error immediately
upon the first failure to deploy an artifact. Otherwise, the plugin will
log the error and attempt to complete deployment of all other artifacts.
localRepository (Default: ${localRepository})
Provide an alternate local repository path to install pushed artifacts
to.
oracleHome
User property: oracleHome
Path to the Oracle home.
Required.
overwriteParent (Default: false)
User property: overwriteParent
If true, the plugin will overwrite POM artifacts with ancestry to
oracle-common if they exist in the target repository. The default value
of false will prevent automatic overwrite of customized POM contents. If
any such POMs are encountered during plugin execution, an error will be
thrown and handled according to the failOnError flag value. To carry over
changes, save the existing POMs, run the push goal with
overwriteParent=true and manually transfer the changes to the newly
pushed POMs.
pushDuplicates (Default: false)
User property: pushDuplicates
Push all duplicate locations. If multiple POMs with different Maven
coordinates (GAV) are assigned to the same location path, the plugin will
push them all to the destination repository if this flag is true.
If the value is false, the push operation will fail. Set failOneError to
false if you would like to skip all duplicates except the GAV in the set
of duplicates that is encountered first.
serverId
User property: serverId
This is the ID of the server (repository) in your settings.xml file -
where you have specified the remote Maven repository and its
authentication information. The plugin will only install to the local
repository if this parameter is not set.
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 36.052 s [INFO] Finished at: 2016-05-07T21:24:32-05:00 [INFO] Final Memory: 11M/134M [INFO] ------------------------------------------------------------------------ PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1> |
|
El artefacto de sincronización está listo. Paso 2- El siguiente paso es utilizar este artefacto e iniciar la sincronización. Esto se hace ejecutando esta línea: mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=$ORACLE_HOME |
|
Para nuestro ejercicio esta línea equivale a: mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=C:\Oracle\Middleware\Oracle_Home |
|
Este es un ejemplo de salida para la ejecución de este comando. (Esta es la parte que consume más tiempo durante la instalación del plugin, aquí es donde se sincroniza nuestro repositorio local de PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1> mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=C:\Oracle\Middleware\Oracle_Home ... ... ... .... [INFO] Installing C:\Oracle\Middleware\Oracle_Home\oui\plugins\maven\com\oracle\fmwshare\inhlp_zh_TW\ 12.2.1\inhlp_zh_TW-12.2.1.pom to C:\Users\Angelino\.m2\repository\com\oracle\fmwshare\inhlp_ zh_TW\12.2.1-0-0\inhlp_zh_TW-12.2.1-0-0.pom [INFO] Found 1 POM files with no associated location file in C:\Oracle\Middleware\Oracle_Home\oui\plugins\maven [INFO] Installing C:\Oracle\Middleware\Oracle_Home\oui\plugins\maven\com\oracle\fmwshare\oracle.as.install.common.help\ 12.2.1\oracle.as.install.common.help-12.2.1.pom to C:\Users\Angelino\.m2\r epository\com\oracle\fmwshare\oracle.as.install.common.help\12.2.1-0-0\oracle.as.install.common.help-12.2.1-0-0.pom [INFO] Installing C:\Oracle\Middleware\Oracle_Home\oui\plugins\maven\com\oracle\fmwshare\oracle.as.install.common.help\ 12.2.1\oracle.as.install.common.help-12.2.1.pom to C:\Users\Angelino\.m2\r epository\com\oracle\fmwshare\oracle.as.install.common.help\12.2.1-0-0\oracle.as.install.common.help-12.2.1-0-0.pom [INFO] SUMMARY [INFO] ------------------------------------------------------------------------ [INFO] PUSH SUMMARY - ARTIFACTS PROCESSED SUCCESSFULLY [INFO] ------------------------------------------------------------------------ [INFO] Number of artifacts pushed: 1871 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] PUSH SUMMARY - ERRORS ENCOUNTERED [INFO] ------------------------------------------------------------------------ [INFO] No issues encountered. [INFO] [INFO] IMPORTANT NOTE [INFO] This operation may have added/updated archetypes in your repository. [INFO] To update your archetype catalog, you should run: [INFO] 'mvn archetype:crawl -Dcatalog=$HOME/.m2/archetype-catalog.xml' [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 05:16 min [INFO] Finished at: 2016-05-07T21:39:09-05:00 [INFO] Final Memory: 11M/97M [INFO] ------------------------------------------------------------------------ PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1> |
|
Paso 3- Como podemos observar, al finalizar la ejecución aparece un mensaje que nos indica que, si bien nuestro repositorio local tiene ya los arquetipos, debemos de actualizar nuestro catálogo local. Esto se hace con la línea: 'mvn archetype:crawl -Dcatalog=$HOME/.m2/archetype-catalog.xml' |
|
En este caso, HOME, equivale a la carpeta dónde se encuentre la carpeta .m2, esta carpeta contiene nuestro repositorio Maven local y por lo general está en la carpeta de nuestro usuario. ![]() Entonces, para nuestro ejercicio esa línea equivale a: mvn archetype:crawl -Dcatalog=C:/Users/Angelino/.m2/archetype-catalog.xml |
|
Esta es la salida a consola al ejecutar la línea anterior: (Dado que ahora sólo es parsear el repositorio local, esta tarea tarda mucho menos que la anterior).
PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1> mvn archetype:crawl -Dcatalog=C:/Users/Angelino/.m2/archetype-catalog.xml .... ... ... .... [INFO] Scanning C:\Users\Angelino\.m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar [INFO] Scanning C:\Users\Angelino\.m2\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:05 min [INFO] Finished at: 2016-05-08T06:13:59-05:00 [INFO] Final Memory: 15M/304M [INFO] ------------------------------------------------------------------------ PS C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1> |
|
Video: https://youtu.be/zMhjrPgTwAo Paso 4. El siguiente paso es registrar el plugin en nuestra instalación de Maven, para ello, sólo debemos agregar un par de líneas al archivo: ~/.m2/settings.xml |
|
Este archivo se encuentra en la misma carpeta .m2 dentro de nuestro usuario.
![]() (Si por alguna razón no tienes ese archivo, puedes bajarlo de este link: settings.xml, toma en cuenta que para este ejercicio usamos usando Apache Maven 3.3.9)
Las líneas que hay que agregar son: <pluginGroups> <pluginGroup>com.oracle.weblogic</pluginGroup> </pluginGroups> |
|
Video: https://youtu.be/xgDOFazp1lU Paso 5. El último paso es validar que el plugin ha agregado los arquetipos para proyectos en WLS, eso lo hacemos listado los arquetipos actuales. La línea: mvn archetype:generate
|