All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.maven.AbstractDeployMojo Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.maven;

import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;

import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**
 * @author [email protected]
 */
public abstract class AbstractDeployMojo extends AbstractServerMojo {
    /**
     * Note : <deploymentParams> configuration can be used instead of this.
     * 

* Name of the application. * * @parameter expression="${name}" default-value="myapp" */ protected String name; /** * Note : <deploymentParams> configuration can be used instead of this. *

* Context root of the web application. * * @parameter expression="${contextRoot}" */ protected String contextRoot; /** * Note : <deploymentParams> configuration can be used instead of this. *

* Specify whether the JSPs should be precompiled during deployment. * * @parameter expression="${precompileJsp}" */ protected Boolean precompileJsp; /** * Note : <deploymentParams> configuration can be used instead of this. *

* Name of the database vendor. * * @parameter expression="${dbVendorName}" */ protected String dbVendorName; /** * Note : <deploymentParams> configuration can be used instead of this. *

* Specify whether the tables should be created during deployment. * * @parameter expression="${createTables}" */ protected Boolean createTables; /** * Note : <deploymentParams> configuration can be used instead of this. *

* A comma-separated list of library JAR files. * * @parameter expression="${libraries}" */ protected String libraries; /** * Build directory of the maven project. Automatically injected by * Maven framework. * * @parameter expression="${project.build.directory}" */ String buildDirectory; /** * Base directory of the maven project. Automatically injected by * Maven framework. * * @parameter expression="${basedir}" */ String baseDirectory; /** * Name of the file to be deployed to Embedded GlassFish. *

* Use app configuration instead of this. * * @parameter expression="${project.build.finalName}" */ String fileName; /** * Location of the application to be deployed. *

* Location could be a Java EE file archive or a directory. * * @parameter expression="${app}" */ protected String app; /** * Deployment parameters to be used while deploying the application to Embedded GlassFish. *

* The deployment parameters are same as how they would be passed to * 'asadmin deploy' command while using standalone GlassFish. *

* For example: *

     * <deploymentParams>
     *      <param>--contextroot=greetings</param>
     *      <param>--name=test</param>*
     *      <param>--createtables=true</param>
     *      <param>--force=true</param>
     *      <param>--precompilejsp=true</param>
     * </deploymentParams>
     * 
* * @parameter expression="${deploymentParams}" */ protected String[] deploymentParams; /** * Undeployment parameters to be used while undeploying the application * from Embedded GlassFish. *

* The undeployment parameters are same as how they would be passed to * 'asadmin undeploy' command while using standalone GlassFish. *

* For example: *

     * <undeploymentParams>
     *      <param>--droptables=true</param>
     * </undeploymentParams>
     * 
* * @parameter expression="${undeploymentParams}" */ protected String[] undeploymentParams; public abstract void execute() throws MojoExecutionException, MojoFailureException; protected String[] getDeploymentParameters() { List deployParams = new ArrayList(); set(deployParams, "--name", name); set(deployParams, "--force", "true"); set(deployParams, "--contextroot", contextRoot); set(deployParams, "--precompilejsp", precompileJsp); set(deployParams, "--dbvendorname", dbVendorName); set(deployParams, "--createtables", createTables); set(deployParams, "--libraries", libraries); if (deploymentParams != null) { for (String p : deploymentParams) { deployParams.add(p); } } return deployParams.toArray(new String[0]); } protected String[] getDeploymentParameters(Properties goalConfiguration) { List deployParams = new ArrayList(); set(deployParams, "--name", goalConfiguration.getProperty("name")); set(deployParams, "--force", "true"); set(deployParams, "--contextroot", goalConfiguration.getProperty("contextRoot")); set(deployParams, "--precompilejsp", goalConfiguration.getProperty("precompileJsp")); set(deployParams, "--dbvendorname", goalConfiguration.getProperty("dbVendorName")); set(deployParams, "--createtables", goalConfiguration.getProperty("createTables")); set(deployParams, "--libraries", goalConfiguration.getProperty("libraries")); List deploymentParams = (List) goalConfiguration.get("deploymentParams"); for (String p : deploymentParams) { deployParams.add(p); } return deployParams.toArray(new String[0]); } protected String[] getUndeploymentParameters() { List undeployParams = new ArrayList(); if (undeploymentParams != null) { for (String p : undeploymentParams) { undeployParams.add(p); } } return undeployParams.toArray(new String[0]); } /** * Add the paramName:paramValue key-value pair into params, if both * paramName and paramValue are non null. * * @param params Map where the paramName:Value to be added * @param paramName Name of the parameter * @param paramValue Value of the parameter. */ void set(List params, String paramName, Object paramValue) { if (paramValue != null && paramName != null) { params.add(paramName + "=" + paramValue.toString()); } } protected String getApp() { return getApp(app); } protected String getApp(String app) { if (app != null) { return new File(app).isAbsolute() ? app : baseDirectory + File.separator + app; } else { return buildDirectory + File.separator + fileName + ".war"; // TODO :: use pom.xml's packaging type. } } protected void doDeploy(String serverId, ClassLoader cl, Properties bootstrapProps, Properties glassfishProperties, File archive, String[] deploymentParams) throws Exception { Class clazz = cl.loadClass(PluginUtil.class.getName()); Method m = clazz.getMethod("doDeploy", new Class[]{String.class, ClassLoader.class, Properties.class, Properties.class, File.class, String[].class}); m.invoke(null, new Object[]{serverId, cl, bootstrapProps, glassfishProperties, archive, deploymentParams}); } protected void doUndeploy(String serverId, ClassLoader cl, Properties bootstrapProps, Properties glassfishProperties, String appName, String[] undeploymentParams) throws Exception { Class clazz = cl.loadClass(PluginUtil.class.getName()); Method m = clazz.getMethod("doUndeploy", new Class[]{String.class, ClassLoader.class, Properties.class, Properties.class, String.class, String[].class}); m.invoke(null, new Object[]{serverId, cl, bootstrapProps, glassfishProperties, appName, undeploymentParams}); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy