Merge pull request #1680 from olamy/bugfix/maven_plugin_fix_master

Bugfix/maven plugin fix master
This commit is contained in:
Jan Bartel 2017-07-20 10:18:18 +02:00 committed by GitHub
commit fd6b3f198c
7 changed files with 44 additions and 86 deletions

View File

@ -40,13 +40,13 @@ public class TestHelloServlet
String response = httpClient.GET( "http://localhost:" + port + "/hello?name=beer" ).getContentAsString(); String response = httpClient.GET( "http://localhost:" + port + "/hello?name=beer" ).getContentAsString();
System.out.println( "httpResponse:" + response ); System.out.println( "httpResponse hello annotation servlet:" + response );
Assert.assertEquals( "hello beer", response.trim() ); Assert.assertEquals( "hello beer", response.trim() );
response = httpClient.GET( "http://localhost:" + port + "/ping?name=beer" ).getContentAsString(); response = httpClient.GET( "http://localhost:" + port + "/ping?name=beer" ).getContentAsString();
System.out.println( "httpResponse:" + response ); System.out.println( "httpResponse ping fragment servlet:" + response );
Assert.assertEquals( "pong beer", response.trim() ); Assert.assertEquals( "pong beer", response.trim() );
} }

View File

@ -21,6 +21,11 @@
<artifactId>jetty-simple-base</artifactId> <artifactId>jetty-simple-base</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.eclipse.jetty</groupId> <groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId> <artifactId>jetty-servlet</artifactId>

View File

@ -41,13 +41,13 @@ public class TestHelloServlet
String response = httpClient.GET( "http://localhost:" + port + "/hello?name=beer" ).getContentAsString(); String response = httpClient.GET( "http://localhost:" + port + "/hello?name=beer" ).getContentAsString();
System.out.println( "httpResponse:" + response ); System.out.println( "httpResponse hello annotation servlet:" + response );
Assert.assertEquals( "hello beer", response.trim() ); Assert.assertEquals( "hello beer", response.trim() );
response = httpClient.GET( "http://localhost:" + port + "/ping?name=beer" ).getContentAsString(); response = httpClient.GET( "http://localhost:" + port + "/ping?name=beer" ).getContentAsString();
System.out.println( "httpResponse:" + response ); System.out.println( "httpResponse ping fragment servlet:" + response );
Assert.assertEquals( "pong beer", response.trim() ); Assert.assertEquals( "pong beer", response.trim() );
} }

View File

@ -46,6 +46,12 @@
<version>1.7.21</version> <version>1.7.21</version>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>

View File

@ -32,6 +32,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -283,24 +284,13 @@ public class JettyRunMojo extends AbstractJettyMojo
if (useTestScope && (testClassesDirectory != null)) if (useTestScope && (testClassesDirectory != null))
webApp.setTestClasses (testClassesDirectory); webApp.setTestClasses (testClassesDirectory);
List<File> dependencyProjects = getDependencyProjects(); webApp.setWebInfLib(getDependencyFiles());
webApp.getClassPathFiles().addAll( dependencyProjects );
List<Resource> dependencyResources = //
dependencyProjects.stream() //
.map( file -> Resource.newResource( file ) ) //
.collect( Collectors.toList() );
webApp.getMetaData().getContainerResources().addAll( dependencyResources );
webApp.setWebInfLib (getDependencyFiles());
// webApp.getWebInfLib().addAll( dependencyResources //
// .stream() //
// .map( resource -> toFile(resource) ) //
// .collect( Collectors.toList() ) );
webApp.getDependentProjects().addAll( dependencyResources );
//get copy of a list of war artifacts //get copy of a list of war artifacts
Set<Artifact> matchedWarArtifacts = new HashSet<Artifact>(); Set<Artifact> matchedWarArtifacts = new HashSet<Artifact>();
//process any overlays and the war type artifacts //process any overlays and the war type artifacts
List<Overlay> overlays = new ArrayList<Overlay>(); List<Overlay> overlays = new ArrayList<>();
for (OverlayConfig config:warPluginInfo.getMavenWarOverlayConfigs()) for (OverlayConfig config:warPluginInfo.getMavenWarOverlayConfigs())
{ {
//overlays can be individually skipped //overlays can be individually skipped
@ -596,8 +586,12 @@ public class JettyRunMojo extends AbstractJettyMojo
{ {
continue; continue;
} }
if (getProjectReferences( artifact, project )!=null) MavenProject mavenProject = getProjectReferences( artifact, project );
if (mavenProject != null)
{ {
File projectPath = Paths.get(mavenProject.getBuild().getOutputDirectory()).toFile();
getLog().debug( "Adding project directory " + projectPath.toString() );
dependencyFiles.add( projectPath );
continue; continue;
} }
@ -614,38 +608,6 @@ public class JettyRunMojo extends AbstractJettyMojo
return dependencyFiles; return dependencyFiles;
} }
private List<File> getDependencyProjects()
{
List<File> dependencyFiles = new ArrayList<>();
for ( Iterator<Artifact> iter = projectArtifacts.iterator(); iter.hasNext(); )
{
Artifact artifact = iter.next();
// Include runtime and compile time libraries, and possibly test libs too
if(artifact.getType().equals("war"))
{
continue;
}
if (Artifact.SCOPE_PROVIDED.equals(artifact.getScope()))
continue; //never add dependencies of scope=provided to the webapp's classpath (see also <useProvidedScope> param)
if (Artifact.SCOPE_TEST.equals(artifact.getScope()) && !useTestScope)
continue; //only add dependencies of scope=test if explicitly required
MavenProject mavenProject = getProjectReferences( artifact, project );
if (mavenProject != null)
{
dependencyFiles.add( Paths.get(mavenProject.getBuild().getOutputDirectory()).toFile() );
getLog().debug( "Adding project reference " + mavenProject.getBuild().getOutputDirectory()
+ " for WEB-INF/classes " );
}
}
return dependencyFiles;
}
protected MavenProject getProjectReferences( Artifact artifact, MavenProject project ) protected MavenProject getProjectReferences( Artifact artifact, MavenProject project )
{ {
if ( project.getProjectReferences() == null || project.getProjectReferences().isEmpty() ) if ( project.getProjectReferences() == null || project.getProjectReferences().isEmpty() )

View File

@ -104,7 +104,6 @@ public class JettyWebAppContext extends WebAppContext
private Resource _quickStartWebXml; private Resource _quickStartWebXml;
private String _originAttribute; private String _originAttribute;
private boolean _generateOrigin; private boolean _generateOrigin;
private List<Resource> dependentProjects = new ArrayList<>();
/** /**
* Set the "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern" with a pattern for matching jars on * Set the "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern" with a pattern for matching jars on
@ -320,9 +319,9 @@ public class JettyWebAppContext extends WebAppContext
return _webInfJars; return _webInfJars;
} }
public List<Resource> getDependentProjects() public List<File> getWebInfClasses()
{ {
return dependentProjects; return _webInfClasses;
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */
@ -336,7 +335,7 @@ public class JettyWebAppContext extends WebAppContext
{ {
return _isGenerateQuickStart; return _isGenerateQuickStart;
} }
/* ------------------------------------------------------------ */ /* ------------------------------------------------------------ */

View File

@ -84,23 +84,6 @@ public class MavenWebInfConfiguration extends WebInfConfiguration
context.setServerClasses( newServerClasses ); context.setServerClasses( newServerClasses );
} }
/**
* @see org.eclipse.jetty.webapp.WebInfConfiguration#preConfigure(org.eclipse.jetty.webapp.WebAppContext)
*/
public void preConfigure(WebAppContext context) throws Exception
{
super.preConfigure(context);
((JettyWebAppContext)context).getDependentProjects()
.stream().forEach( resource -> context.getMetaData().addWebInfJar( resource ) );
}
/** /**
* @see org.eclipse.jetty.webapp.AbstractConfiguration#postConfigure(org.eclipse.jetty.webapp.WebAppContext) * @see org.eclipse.jetty.webapp.AbstractConfiguration#postConfigure(org.eclipse.jetty.webapp.WebAppContext)
*/ */
@ -197,24 +180,26 @@ public class MavenWebInfConfiguration extends WebInfConfiguration
protected List<Resource> findJars (WebAppContext context) protected List<Resource> findJars (WebAppContext context)
throws Exception throws Exception
{ {
List<Resource> list = new ArrayList<Resource>(); List<Resource> list = new ArrayList<>();
JettyWebAppContext jwac = (JettyWebAppContext)context; JettyWebAppContext jwac = (JettyWebAppContext)context;
if (jwac.getClassPathFiles() != null) List<File> files = jwac.getWebInfLib();
if (files != null)
{ {
for (File f: jwac.getClassPathFiles()) files.forEach( file -> {
{ if (file.getName().toLowerCase(Locale.ENGLISH).endsWith(".jar")
if (f.getName().toLowerCase(Locale.ENGLISH).endsWith(".jar")) || file.isDirectory())
{ {
try try
{ {
list.add(Resource.newResource(f.toURI())); LOG.debug( " add resource to resources to examine {}", file );
list.add(Resource.newResource(file.toURI()));
} }
catch (Exception e) catch (Exception e)
{ {
LOG.warn("Bad url ", e); LOG.warn("Bad url ", e);
} }
} }
} } );
} }
List<Resource> superList = super.findJars(context); List<Resource> superList = super.findJars(context);
@ -234,25 +219,26 @@ public class MavenWebInfConfiguration extends WebInfConfiguration
@Override @Override
protected List<Resource> findClassDirs(WebAppContext context) throws Exception protected List<Resource> findClassDirs(WebAppContext context) throws Exception
{ {
List<Resource> list = new ArrayList<Resource>(); List<Resource> list = new ArrayList<>();
JettyWebAppContext jwac = (JettyWebAppContext)context; JettyWebAppContext jwac = (JettyWebAppContext)context;
if (jwac.getClassPathFiles() != null) List<File> files = jwac.getWebInfClasses();
if (files != null)
{ {
for (File f: jwac.getClassPathFiles()) files.forEach( file -> {
{ if (file.exists() && file.isDirectory())
if (f.exists() && f.isDirectory())
{ {
try try
{ {
list.add(Resource.newResource(f.toURI())); list.add(Resource.newResource(file.toURI()));
} }
catch (Exception e) catch (Exception e)
{ {
LOG.warn("Bad url ", e); LOG.warn("Bad url ", e);
} }
} }
} } );
} }
List<Resource> classesDirs = super.findClassDirs(context); List<Resource> classesDirs = super.findClassDirs(context);