Commit a07219e6 authored by Martin Bergljung's avatar Martin Bergljung
Browse files

Support for custom webapps and sysprops, #412,#413

parent 4e262917
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package org.alfresco.maven.plugin;

import org.alfresco.maven.plugin.config.ModuleDependency;
import org.alfresco.maven.plugin.config.TomcatDependency;
import org.alfresco.maven.plugin.config.TomcatWebapp;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
@@ -230,6 +231,22 @@ public class RunMojo extends AbstractMojo {
    @Parameter(property = "maven.alfresco.tomcat.dependencies", defaultValue = "")
    protected List<TomcatDependency> tomcatDependencies;

    /**
     * System Properties to feed the Tomcat plugin before start.
     * Normally there would not be any extra dependencies, but we could run a custom webapp that needed
     * a custom sys prop set.
     */
    @Parameter(property = "maven.alfresco.tomcat.system.properties", defaultValue = "")
    protected Map<String, String> tomcatSystemProperties;

    /**
     * Custom webapps that should be deployed to the embedded Tomcat engine.
     * Normally there would not be any extra webapps, but we could run a bigger project that uses
     * some custom webapp.
     */
    @Parameter(property = "maven.alfresco.tomcat.custom.webapps", defaultValue = "")
    protected List<TomcatWebapp> tomcatCustomWebapps;

    /**
     * Maven GAV properties for standard Alfresco web applications.
     */
@@ -975,6 +992,15 @@ public class RunMojo extends AbstractMojo {
                    activitiGroupId, activitiAdminWarArtifactId, activitiVersion, "/activiti-admin", null));
        }

        if (tomcatCustomWebapps != null && !tomcatCustomWebapps.isEmpty()) {
            // We got extra custom webapps to deploy
            for (TomcatWebapp customWebapp: tomcatCustomWebapps) {
                webapps2Deploy.add(createWebAppElement(
                        customWebapp.getGroupId(), customWebapp.getArtifactId(), customWebapp.getVersion(),
                        customWebapp.getContextPath(), customWebapp.getContextFile()));
            }
        }

        // This might be ugly, the MojoExecuter will only accept Element[] and we need this list to be dynamic
        // to avoid NPEs. If there's a better way to do this, then feel free to change it!
        Element[] webapps = new Element[webapps2Deploy.size()];
@@ -990,6 +1016,12 @@ public class RunMojo extends AbstractMojo {
            // Should be in activiti-jar/src/test/resources
            systemProps.add(element(name("log4j.configuration"), "log4j-dev.properties"));
        }
        // Add custom system properties defined in plugin config
        if (tomcatSystemProperties != null && !tomcatSystemProperties.isEmpty()) {
            for (Map.Entry<String, String> sysProp : tomcatSystemProperties.entrySet()) {
                systemProps.add(element(name(sysProp.getKey()), sysProp.getValue()));
            }
        }
        // This might be ugly, the MojoExecuter will only accept Element[] and we need this list to be dynamic
        // to avoid NPEs. If there's a better way to do this, then feel free to change it!
        Element[] systemPropArray = new Element[systemProps.size()];
+1 −1
Original line number Diff line number Diff line
/**
 * Copyright (C) 2016 Alfresco Software Limited.
 * <p/>
 * This file is part of the Alfresco SDK Samples project.
 * This file is part of the Alfresco SDK project.
 * <p/>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
+1 −3
Original line number Diff line number Diff line
/**
 * Copyright (C) 2016 Alfresco Software Limited.
 * <p/>
 * This file is part of the Alfresco SDK Samples project.
 * This file is part of the Alfresco SDK project.
 * <p/>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
@@ -18,8 +18,6 @@

package org.alfresco.maven.plugin.config;

import org.apache.commons.lang.StringUtils;

/**
 * Tomcat Dependency used in Embedded Tomcat Maven plugin configuration.
 * <p/>
+96 −0
Original line number Diff line number Diff line
/**
 * Copyright (C) 2016 Alfresco Software Limited.
 * <p/>
 * This file is part of the Alfresco SDK project.
 * <p/>
 * 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
 * <p/>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p/>
 * 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.config;

/**
 * Tomcat Webapp used in Embedded Tomcat Maven plugin configuration.
 * These are custom webapps that you would want to include for some reason
 * (The {webapp artifact}.war need to be available in a Maven Repo).
 * Note. the standard webapps are included with plugin properties such as enablePlatform and enableShare.
 * <p/>
 * Alfresco Maven Plugin config looks something like this:
 * <pre>
 *    {@code
 *    <tomcatWebapps>
 *      <tomcatWebapp>
 *          <groupId>com.exari</groupId>
 *          <artifactId>exari-docgen-cmwar</artifactId>
 *          <version>${project.version}</version>
 *          <contextPath>/exari</contextPath>
 *          <contextFile>${project.build.directory}/contexts/context-docgen.xml</contextFile>
 *      </tomcatWebapp>
 *    <tomcatWebapps>
 *    }
 * </pre>
 *
 * @author martin.bergljung@alfresco.com
 * @version 1.0
 * @since 3.0.0
 */
public class TomcatWebapp extends MavenDependency {
    private String contextPath;
    private String contextFile;

    public TomcatWebapp() {}

    public TomcatWebapp(String g, String a, String v, String contextPath, String contextFile) {
        super(g, a, v);
        this.contextPath = contextPath;
        this.contextFile = contextFile;
    }

    public String getContextPath() {
        return contextPath;
    }

    public String getContextFile() {
        return contextFile;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof TomcatWebapp)) return false;
        if (!super.equals(o)) return false;

        TomcatWebapp that = (TomcatWebapp) o;

        if (!contextPath.equals(that.contextPath)) return false;
        return !(contextFile != null ? !contextFile.equals(that.contextFile) : that.contextFile != null);

    }

    @Override
    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + contextPath.hashCode();
        result = 31 * result + (contextFile != null ? contextFile.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "TomcatWebapp{" +
                "groupId='" + getGroupId() + '\'' +
                ", artifactId='" + getArtifactId() + '\'' +
                ", version='" + getVersion() + '\'' +
                ", contextPath='" + contextPath + '\'' +
                ", contextFile='" + contextFile + '\'' +
                '}';
    }
}