Filtrar el Código de Clases JAVA
Para filtrar el código de clases JAVA se puede utilizar el plugin Templating Maven Plugin que en su versión 1.0-alpha-4-SNAPSHOT tiene integración con M2E, el plugin de integración de Maven con Eclipse.
Configuración de Maven
- Para aplicaciones FundeWeb 2.x, tendremos que utilizar el parent versión 2.0.7.
- Para aplicaciones FundeWeb 1.x migradas a Weblogic el seam-parent versión 1.5.6.
Para las aplicaciones FundeWeb 2.x con un parent con versión anterior a la 2.0.5 tendremos que actualizar el parent lo que conlleva la actualización a Primefaces 5.1. Si no se quiere actualizar a Primefaces 5.1, se puede añadir en el POM principal del proyecto lo siguiente:
<!-- Sólo para aplicaciones con parent inferior a la 2.0.7--> <properties> <templating-maven-plugin.version>1.0.0</templating-maven-plugin.version> </properties> <build> <pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>templating-maven-plugin</artifactId> <version>${templating-maven-plugin.version}</version> </plugin> </plugins> </pluginManagement> </build>
Ahora tenemos que añadir el plugin en el POM del modulo que contiene el código fuente de la clase JAVA que queremos filtrar, dentro de la etiqueta </plugins> (lo mejor se dejarlo justo encima de la etiqueta de cierre </plugins>).
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>templating-maven-plugin</artifactId> <executions> <execution> <id>filter-src</id> <goals> <goal>filter-sources</goal> </goals> </execution> </executions> </plugin>
Ahora tenemos que crear la carpeta java-templates dentro de la carpeta src/main del módulo. Veamos un ejemplo:
Una vez creada esta carpeta, automáticamente se creara la carpeta de código fuente target/generated-sources/java-templates en el módulo, donde aparece la clase filtrada con los valores indicados en los ficheros de filtro del módulo (que estan en la carpeta src/main/filters).
El código fuente lo podemos editar directamente desde la carpeta src/main/java-templates. Si tenemos la opción Project –> Build Automatically o cuando forcemos el build con Crtl + B, el código de la carpeta target/generated-sources/java-templates se actualiza automaticamente.
Modificación en el Código de la Clase JAVA
Para poder filtrar valores en el código de la clase JAVA, este tiene que estar entre los delimitadores ${} o @@. Veamos un Ejemplo:
package com.intalio.bpms.workflow.ib4p_20051115; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.WebEndpoint; import javax.xml.ws.WebServiceClient; import javax.xml.ws.WebServiceFeature; import org.jboss.seam.log.Log; import org.jboss.seam.log.Logging; /** * This class was generated by Apache CXF 2.2.12 Wed Feb 20 08:58:33 CET 2013 * Generated source version: 2.2.12 * */ @WebServiceClient(name = "completeTask", wsdlLocation = "${bpms.server.url}/ode/processes/completeTask?wsdl", targetNamespace = "http://www.intalio.com/bpms/workflow/ib4p_20051115") public class CompleteTask extends Service { public final static URL WSDL_LOCATION; public final static QName SERVICE = new QName("http://www.intalio.com/bpms/workflow/ib4p_20051115", "completeTask"); public final static QName UIFWPort = new QName("http://www.intalio.com/bpms/workflow/ib4p_20051115", "UIFWPort"); private static Log LOG = Logging.getLog( CompleteTask.class ); static { URL url = null; try { url = new URL("${bpms.server.url}/ode/processes/completeTask?wsdl"); } catch (MalformedURLException e) { LOG.error("Can not initialize the default wsdl from [#0].", e, url); } WSDL_LOCATION = url; } public CompleteTask(URL wsdlLocation) { super(wsdlLocation, SERVICE); } public CompleteTask(URL wsdlLocation, QName serviceName) { super(wsdlLocation, serviceName); } public CompleteTask() { super(WSDL_LOCATION, SERVICE); } @WebEndpoint(name = "UIFWPort") public CompleteTaskPortType getUIFWPort() { return super.getPort(UIFWPort, CompleteTaskPortType.class); } @WebEndpoint(name = "UIFWPort") public CompleteTaskPortType getUIFWPort(WebServiceFeature... features) { return super.getPort(UIFWPort, CompleteTaskPortType.class, features); } }
Como se puede observar, dentro de la anotación @WebServiceClient tenemos la propiedad wsdlLocation con su valor filtrado con ${bpms.server.url}. El resultado del filtrado lo podemos ver en el código generado dentro de la carpeta target/generated-sources/java-templates. Veamos el resultado:
package com.intalio.bpms.workflow.ib4p_20051115; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.WebEndpoint; import javax.xml.ws.WebServiceClient; import javax.xml.ws.WebServiceFeature; import org.jboss.seam.log.Log; import org.jboss.seam.log.Logging; /** * This class was generated by Apache CXF 2.2.12 Wed Feb 20 08:58:33 CET 2013 * Generated source version: 2.2.12 * */ @WebServiceClient(name = "completeTask", wsdlLocation = "http://mncs.atica.um.es:8080/ode/processes/completeTask?wsdl", targetNamespace = "http://www.intalio.com/bpms/workflow/ib4p_20051115") public class CompleteTask extends Service { public final static URL WSDL_LOCATION; public final static QName SERVICE = new QName("http://www.intalio.com/bpms/workflow/ib4p_20051115", "completeTask"); public final static QName UIFWPort = new QName("http://www.intalio.com/bpms/workflow/ib4p_20051115", "UIFWPort"); private static Log LOG = Logging.getLog( CompleteTask.class ); static { URL url = null; try { url = new URL("http://mncs.atica.um.es:8080/ode/processes/completeTask?wsdl"); } catch (MalformedURLException e) { LOG.error("Can not initialize the default wsdl from [#0].", e, url); } WSDL_LOCATION = url; } public CompleteTask(URL wsdlLocation) { super(wsdlLocation, SERVICE); } public CompleteTask(URL wsdlLocation, QName serviceName) { super(wsdlLocation, serviceName); } public CompleteTask() { super(WSDL_LOCATION, SERVICE); } @WebEndpoint(name = "UIFWPort") public CompleteTaskPortType getUIFWPort() { return super.getPort(UIFWPort, CompleteTaskPortType.class); } @WebEndpoint(name = "UIFWPort") public CompleteTaskPortType getUIFWPort(WebServiceFeature... features) { return super.getPort(UIFWPort, CompleteTaskPortType.class, features); } }
El valor de la propiedad bpms.server.url que esta definida en el fichero filtro-local.properties (ya que en eclipse se aplica el perfil local por defecto) es http://mncs.atica.um.es:8080.
Si definimos la propiedad para el resto de entornos, cuando utilicemos las tareas de sincronización para un entorno, el valor sera el correspoandiente al filtro de propiedades de dicho entorno.
— JUAN MIGUEL BERNAL GONZALEZ 2014/12/02 18:50
- fdw2.0/fundeweb2.0/gt/maven-filtrar-codigo-java.txt
- Última modificación: 07/11/2017 10:46
- (editor externo)