// // ======================================================================== // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. // // The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php // // You may elect to redistribute this code under either of these licenses. // ======================================================================== // package org.eclipse.jetty.maven.plugin; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.apache.maven.model.Plugin; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.eclipse.jetty.util.StringUtil; /** * WarPluginInfo * <p> * Information about the maven-war-plugin contained in the pom */ public class WarPluginInfo { private MavenProject _project; private Plugin _plugin; private List<String> _dependentMavenWarIncludes; private List<String> _dependentMavenWarExcludes; private List<OverlayConfig> _overlayConfigs; public WarPluginInfo (MavenProject project) { _project = project; } /** * Find the maven-war-plugin, if one is configured * @return the plugin */ public Plugin getPlugin() { if (_plugin == null) { List plugins = _project.getBuildPlugins(); if (plugins == null) return null; Iterator itor = plugins.iterator(); while (itor.hasNext() && _plugin==null) { Plugin plugin = (Plugin)itor.next(); if ("maven-war-plugin".equals(plugin.getArtifactId())) _plugin = plugin; } } return _plugin; } /** * Get value of dependentWarIncludes for maven-war-plugin * @return the list of dependent war includes */ public List<String> getDependentMavenWarIncludes() { if (_dependentMavenWarIncludes == null) { getPlugin(); if (_plugin == null) return null; Xpp3Dom node = (Xpp3Dom)_plugin.getConfiguration(); if (node == null) return null; node = node.getChild("dependentWarIncludes"); if (node == null) return null; String val = node.getValue(); _dependentMavenWarIncludes = StringUtil.csvSplit(null,val,0,val.length()); } return _dependentMavenWarIncludes; } /** * Get value of dependentWarExcludes for maven-war-plugin * @return the list of dependent war excludes */ public List<String> getDependentMavenWarExcludes() { if (_dependentMavenWarExcludes == null) { getPlugin(); if (_plugin == null) return null; Xpp3Dom node = (Xpp3Dom)_plugin.getConfiguration(); if (node == null) return null; node = node.getChild("dependentWarExcludes"); if (node == null) return null; String val = node.getValue(); _dependentMavenWarExcludes = StringUtil.csvSplit(null,val,0,val.length()); } return _dependentMavenWarExcludes; } /** * Get config for any overlays that have been declared for the maven-war-plugin. * * @return the list of overlay configs */ public List<OverlayConfig> getMavenWarOverlayConfigs () { if (_overlayConfigs == null) { getPlugin(); if (_plugin == null) return Collections.emptyList(); getDependentMavenWarIncludes(); getDependentMavenWarExcludes(); Xpp3Dom node = (Xpp3Dom)_plugin.getConfiguration(); if (node == null) return Collections.emptyList(); node = node.getChild("overlays"); if (node == null) return Collections.emptyList(); Xpp3Dom[] nodes = node.getChildren("overlay"); if (nodes == null) return Collections.emptyList(); _overlayConfigs = new ArrayList<OverlayConfig>(); for (int i=0;i<nodes.length;i++) { OverlayConfig overlayConfig = new OverlayConfig(nodes[i], _dependentMavenWarIncludes, _dependentMavenWarExcludes); _overlayConfigs.add(overlayConfig); } } return _overlayConfigs; } /** * @return the xml as a string */ public String getMavenWarOverlayConfigAsString () { getPlugin(); if (_plugin == null) return ""; Xpp3Dom node = (Xpp3Dom)_plugin.getConfiguration(); if (node == null) return ""; return node.toString(); } }