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

org.alfresco.maven.plugin.InstallMojo Maven / Gradle / Ivy

There is a newer version: 4.10.0
Show newest version
/**
 * Copyright (C) 2017 Alfresco Software Limited.
 * 

* This file is part of the Alfresco SDK. *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.alfresco.maven.plugin; import java.io.File; import java.io.IOException; import org.alfresco.repo.module.tool.ModuleManagementTool; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; /** * Performs a AMP to WAR overlay invoking the Alfresco Repository ModuleManagementTool. * It therefore wraps and emulates the same WAR overlay performed by Alfresco MMT. *

* This goal will install the AMP file(s) found in ${ampLocation} onto the WAR (or exploded WAR) found in ${warLocation} * * @version $Id:$ * @requiresDependencyResolution * @since 1.0 * @goal install * @description Installs one or more AMPs onto an Alfresco / Share WAR (or * exploded WAR folder) */ public class InstallMojo extends AbstractMojo { private static final String WEBAPP_MANIFEST_PATH = "META-INF" + File.separator + "MANIFEST.MF"; private static final String WEBAPP_DESCRIPTOR_PATH = "WEB-INF" + File.separator + "web.xml"; /** * The location of the AMP file(s) to be installed. If this location is a * folder all AMPs contained in the folder are installed, if it's a file it * get directly installed on the ${warLocation} * * @parameter property="maven.alfresco.ampLocation" default-value="${project.build.directory}/${project.build.finalName}.amp" */ private File ampLocation; /** * The WAR file or exploded dir to install the AMPs in. If specified * Defaults to "${app.amp.client.war.folder} * * @parameter property="maven.alfresco.warLocation" default-value="${app.amp.client.war.folder}" */ private File warLocation; /** * Whether Alfresco MMT should be executed in verbose mode * * @parameter property="maven.alfresco.verbose" default-value="false" */ private boolean verbose; /** * Whether Alfresco MMT should be force installation of AMPs * * @parameter property="maven.alfresco.force" default-value="true" */ private boolean force; /** * Whether Alfresco MMT should produce backups while installing. Defaults to false to speed up development, set to true for Production AMP installations * * @parameter property="maven.alfresco.backup" default-value="false" */ private boolean backup; /** * Whether or not to skip the check for a manifest file in the warLocation * * @parameter property="maven.alfresco.skipWarManifestCheck" default-value="false" */ private boolean skipWarManifestCheck; /** * Whether or not to skip the attempt to install the AMP in the warLocation altogether * * @parameter property="maven.alfresco.skipAmpInstallation" default-value="false" */ private boolean skipAmpInstallation; public InstallMojo() { } @Override public void execute() throws MojoExecutionException, MojoFailureException { if (skipAmpInstallation) { getLog().info("AMP Installation is skipped via configuration"); return; } // Checks appropriate input params are in place checkParams(); ModuleManagementTool mmt = new ModuleManagementTool(); mmt.setVerbose(verbose); /** * Invoke the ModuleManagementTool to install AMP modules on the WAR * file; if ampLocation is a folder all contained AMPs are installed otherwise * a single AMP install is attempted with the ampLocation */ if(ampLocation.isDirectory()) { try { getLog().info("Installing all AMPs from directory " + ampLocation.getAbsolutePath() + " into WAR/exploded webapp at " + warLocation.getAbsolutePath()); mmt.installModules(ampLocation.getAbsolutePath(), warLocation.getAbsolutePath(), false, // preview force, // force install backup); // backup getLog().info("AMPs installed successfully"); } catch (IOException e) { throw new MojoExecutionException("ampLocation " + ampLocation.getAbsolutePath() + " did not contain AMP files - AMP installation cannot proceed"); } // backup } else if(ampLocation.isFile()) { getLog().info("Installing AMP " + ampLocation.getAbsolutePath() + " into WAR/exploded webapp at " + warLocation.getAbsolutePath()); mmt.installModule(ampLocation.getAbsolutePath(), warLocation.getAbsolutePath(), false, // preview force, // force install backup); // backup getLog().info("AMP installed successfully"); } else { throw new MojoFailureException("ampLocation " + ampLocation.getAbsolutePath() + " was neither an AMP file or a folder containing AMP files - AMP installation cannot proceed"); } } private void checkParams() throws MojoExecutionException { if (this.ampLocation == null || !this.ampLocation.exists()) { throw new MojoExecutionException("No AMP file(s) found in " + ampLocation.getAbsolutePath() + " - AMP installation cannot proceed"); } if (this.warLocation == null || !this.warLocation.exists()) { throw new MojoExecutionException("No WAR file found in " + warLocation.getAbsolutePath() + " - AMP installation cannot proceed"); } File descriptor = new File(warLocation.getPath() + File.separator + WEBAPP_DESCRIPTOR_PATH); if(warLocation.isDirectory() && !descriptor.exists()) throw new MojoExecutionException("No webapp found in " + descriptor.getAbsolutePath() + ". AMP installation cannot proceed. Are you binding amp:install to the right phase?"); File manifest = new File(warLocation.getPath() + File.separator + WEBAPP_MANIFEST_PATH); if(!skipWarManifestCheck && warLocation.isDirectory() && !manifest.exists()) throw new MojoExecutionException("No MANIFEST.MF found in " + manifest.getAbsolutePath() + ". AMP installation cannot proceed. Are you binding amp:install to the right phase?"); } public void setWarLocation(File warLocation) { this.warLocation = warLocation; } public void setAmpLocation(File ampLocation) { this.ampLocation = ampLocation; } public void setForce(boolean force) { this.force = force; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy