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

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

There is a newer version: 1.0.14
Show newest version
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

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 - 2024 Weber Informatics LLC | Privacy Policy