Merge remote-tracking branch 'origin/master' into jetty-9.1

This commit is contained in:
Jan Bartel 2013-08-22 20:11:08 +10:00
commit a64319b9b1
5 changed files with 81 additions and 65 deletions

View File

@ -74,6 +74,10 @@ import org.eclipse.jetty.util.IO;
*/ */
public class JettyRunForkedMojo extends AbstractMojo public class JettyRunForkedMojo extends AbstractMojo
{ {
public static final String DEFAULT_WEBAPP_SRC = "src"+File.separator+"main"+File.separator+"webapp";
public static final String FAKE_WEBAPP = "webapp-tmp";
public String PORT_SYSPROPERTY = "jetty.port"; public String PORT_SYSPROPERTY = "jetty.port";
/** /**
@ -421,7 +425,18 @@ public class JettyRunForkedMojo extends AbstractMojo
} }
//sort out base dir of webapp //sort out base dir of webapp
if (webAppSourceDirectory != null) if (webAppSourceDirectory == null || !webAppSourceDirectory.exists())
{
webAppSourceDirectory = new File (project.getBasedir(), DEFAULT_WEBAPP_SRC);
if (!webAppSourceDirectory.exists())
{
//try last resort of making a fake empty dir
File target = new File(project.getBuild().getDirectory());
webAppSourceDirectory = new File(target, FAKE_WEBAPP);
if (!webAppSourceDirectory.exists())
webAppSourceDirectory.mkdirs();
}
}
props.put("base.dir", webAppSourceDirectory.getAbsolutePath()); props.put("base.dir", webAppSourceDirectory.getAbsolutePath());
//sort out the resource base directories of the webapp //sort out the resource base directories of the webapp

View File

@ -68,6 +68,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
public class JettyRunMojo extends AbstractJettyMojo public class JettyRunMojo extends AbstractJettyMojo
{ {
public static final String DEFAULT_WEBAPP_SRC = "src"+File.separator+"main"+File.separator+"webapp"; public static final String DEFAULT_WEBAPP_SRC = "src"+File.separator+"main"+File.separator+"webapp";
public static final String FAKE_WEBAPP = "webapp-tmp";
@ -182,9 +183,18 @@ public class JettyRunMojo extends AbstractJettyMojo
{ {
if ((webAppSourceDirectory == null) || !webAppSourceDirectory.exists()) if ((webAppSourceDirectory == null) || !webAppSourceDirectory.exists())
{ {
File defaultWebAppSrcDir = new File (project.getBasedir(), DEFAULT_WEBAPP_SRC); getLog().info("webAppSourceDirectory"+(webAppSourceDirectory == null ? " not set." : (webAppSourceDirectory.getAbsolutePath()+" does not exist."))+" Trying "+DEFAULT_WEBAPP_SRC);
getLog().info("webAppSourceDirectory"+(webAppSourceDirectory == null ? " not set." : " does not exist.")+" Defaulting to "+defaultWebAppSrcDir.getAbsolutePath()); webAppSourceDirectory = new File (project.getBasedir(), DEFAULT_WEBAPP_SRC);
webAppSourceDirectory = defaultWebAppSrcDir; if (!webAppSourceDirectory.exists())
{
getLog().info("webAppSourceDirectory "+webAppSourceDirectory.getAbsolutePath()+" does not exist. Trying "+project.getBuild().getDirectory()+File.separator+FAKE_WEBAPP);
//try last resort of making a fake empty dir
File target = new File(project.getBuild().getDirectory());
webAppSourceDirectory = new File(target, FAKE_WEBAPP);
if (!webAppSourceDirectory.exists())
webAppSourceDirectory.mkdirs();
}
} }
else else
getLog().info( "Webapp source directory = " + webAppSourceDirectory.getCanonicalPath()); getLog().info( "Webapp source directory = " + webAppSourceDirectory.getCanonicalPath());
@ -504,6 +514,7 @@ public class JettyRunMojo extends AbstractJettyMojo
{ {
getLog().info("Reconfiguring scanner after change to pom.xml ..."); getLog().info("Reconfiguring scanner after change to pom.xml ...");
scanList.clear(); scanList.clear();
if (webApp.getDescriptor() != null)
scanList.add(new File(webApp.getDescriptor())); scanList.add(new File(webApp.getDescriptor()));
if (webApp.getJettyEnvXml() != null) if (webApp.getJettyEnvXml() != null)
scanList.add(new File(webApp.getJettyEnvXml())); scanList.add(new File(webApp.getJettyEnvXml()));
@ -599,7 +610,7 @@ public class JettyRunMojo extends AbstractJettyMojo
for (Artifact a:warArtifacts) for (Artifact a:warArtifacts)
{ {
if (overlayMatchesArtifact (o, a)) if (o.matchesArtifact (a.getGroupId(), a.getArtifactId(), a.getClassifier()))
{ {
return a; return a;
} }
@ -607,22 +618,4 @@ public class JettyRunMojo extends AbstractJettyMojo
return null; return null;
} }
/**
* @param o
* @param a
* @return
*/
protected boolean overlayMatchesArtifact(OverlayConfig o, Artifact a)
{
if (((o.getGroupId() == null && a.getGroupId() == null) || (o.getGroupId() != null && o.getGroupId().equals(a.getGroupId())))
&& ((o.getArtifactId() == null && a.getArtifactId() == null) || (o.getArtifactId() != null && o.getArtifactId().equals(a.getArtifactId())))
&& ((o.getClassifier() == null) || (o.getClassifier().equals(a.getClassifier()))))
return true;
return false;
}
} }

View File

@ -169,18 +169,20 @@ public class MavenWebInfConfiguration extends WebInfConfiguration
for (Overlay o:jwac.getOverlays()) for (Overlay o:jwac.getOverlays())
{ {
//can refer to the current project in list of overlays for ordering purposes //can refer to the current project in list of overlays for ordering purposes
if (o.getConfig() != null && o.getConfig().isCurrentProject()) if (o.getConfig() != null && o.getConfig().isCurrentProject() && _originalResourceBase.exists())
{ {
resourceBaseCollection.add(_originalResourceBase); resourceBaseCollection.add(_originalResourceBase);
LOG.info("Adding virtual project to resource base list");
continue; continue;
} }
Resource unpacked = unpackOverlay(jwac,o); Resource unpacked = unpackOverlay(jwac,o);
_unpackedOverlayResources.add(unpacked); //remember the unpacked overlays for later so we can delete the tmp files _unpackedOverlayResources.add(unpacked); //remember the unpacked overlays for later so we can delete the tmp files
resourceBaseCollection.add(unpacked); //add in the selectively unpacked overlay in the correct order to the webapps resource base resourceBaseCollection.add(unpacked); //add in the selectively unpacked overlay in the correct order to the webapps resource base
LOG.info("Adding "+unpacked+" to resource base list");
} }
if (!resourceBaseCollection.contains(_originalResourceBase)) if (!resourceBaseCollection.contains(_originalResourceBase) && _originalResourceBase.exists())
{ {
if (jwac.getBaseAppFirst()) if (jwac.getBaseAppFirst())
{ {
@ -273,33 +275,4 @@ public class MavenWebInfConfiguration extends WebInfConfiguration
LOG.info("Unpacked overlay: "+overlay+" to "+unpackedOverlay); LOG.info("Unpacked overlay: "+overlay+" to "+unpackedOverlay);
return unpackedOverlay; return unpackedOverlay;
} }
protected Artifact getArtifactForOverlay (OverlayConfig o, List<Artifact> warArtifacts)
{
if (o == null || warArtifacts == null || warArtifacts.isEmpty())
return null;
for (Artifact a:warArtifacts)
{
if (overlayMatchesArtifact (o, a))
{
return a;
}
}
return null;
}
protected boolean overlayMatchesArtifact(OverlayConfig o, Artifact a)
{
if ((o.getGroupId() == null && a.getGroupId() == null) || (o.getGroupId() != null && o.getGroupId().equals(a.getGroupId())))
{
if ((o.getArtifactId() == null && a.getArtifactId() == null) || (o.getArtifactId() != null && o.getArtifactId().equals(a.getArtifactId())))
{
if ((o.getClassifier() == null) || (o.getClassifier().equals(a.getClassifier())))
return true;
}
}
return false;
}
} }

View File

@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.apache.maven.artifact.Artifact;
import java.util.Arrays; import java.util.Arrays;
@ -264,6 +265,44 @@ public class OverlayConfig
return false; return false;
} }
/**
* Check if this overlay configuration matches an Artifact's info
*
* @param gid Artifact groupId
* @param aid Artifact artifactId
* @param cls Artifact classifier
* @return
*/
public boolean matchesArtifact (String gid, String aid, String cls)
{
if (((getGroupId() == null && gid == null) || (getGroupId() != null && getGroupId().equals(gid)))
&&((getArtifactId() == null && aid == null) || (getArtifactId() != null && getArtifactId().equals(aid)))
&&((getClassifier() == null) || (getClassifier().equals(cls))))
return true;
return false;
}
/**
* Check if this overlay configuration matches an Artifact's info
*
* @param gid
* @param aid
* @return
*/
public boolean matchesArtifact (String gid, String aid)
{
if (((getGroupId() == null && gid == null) || (getGroupId() != null && getGroupId().equals(gid)))
&&((getArtifactId() == null && aid == null) || (getArtifactId() != null && getArtifactId().equals(aid))))
return true;
return false;
}
public String toString() public String toString()
{ {
StringBuffer strbuff = new StringBuffer(); StringBuffer strbuff = new StringBuffer();

View File

@ -458,13 +458,9 @@ public class Starter
while(itor.hasNext() && war == null) while(itor.hasNext() && war == null)
{ {
Artifact a = itor.next(); Artifact a = itor.next();
if (((c.getGroupId() == null && a.gid == null) || (c.getGroupId() != null && c.getGroupId().equals(a.gid))) if (c.matchesArtifact(a.gid, a.aid, null))
&& ((c.getArtifactId() == null && a.aid == null) || (c.getArtifactId() != null && c.getArtifactId().equals(a.aid)))
&& ((c.getClassifier() == null) || (c.getClassifier().equals(a.aid))))
{
war = a; war = a;
} }
}
return war; return war;
} }