Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2014-11-03 16:16:11 +0000
committerJoakim Erdfelt2014-11-03 17:18:18 +0000
commit214246061edb44f89e963a2fd692662126c67b34 (patch)
tree61b5100b35a383a1283a397ad2836d742a768a7d /jetty-start
parent153dd4023e5f74f80cc2c0a0cf49d732bbfbf42e (diff)
downloadorg.eclipse.jetty.project-214246061edb44f89e963a2fd692662126c67b34.tar.gz
org.eclipse.jetty.project-214246061edb44f89e963a2fd692662126c67b34.tar.xz
org.eclipse.jetty.project-214246061edb44f89e963a2fd692662126c67b34.zip
449291 - --create-files downloads without license
+ Adding dist-home replicationa real distribution Adding RebuildTestResources.java to help rebuild this dist-home occasionally. There is no need to keep this directory up to date as religiously and frequently as the main distribution. + Adding LicenseTest.java to test various licensing scenarios + Added ability to ask for license via --create-files flows
Diffstat (limited to 'jetty-start')
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java2
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java20
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Main.java131
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Module.java53
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java45
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java6
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Props.java7
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java57
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java23
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java2
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/LicenseTest.java154
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/RebuildTestResources.java190
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/SystemExitAsException.java79
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/example-quickstart.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/hawtio.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/home-base-warning.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jamon.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-annotations.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-cdi.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-debug.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-deploy.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-http.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-https.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-ipaccess.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-jaas.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-jmx-remote.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-jmx.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-logging.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-lowresources.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-monitor.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-plus.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-proxy.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-requestlog.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-rewrite.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-setuid.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-spdy-proxy.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-spdy.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-spring.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-ssl.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-started.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-stats.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty-xinetd.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jetty.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jminix.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/jolokia.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/protonego-alpn.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/protonego-npn.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/etc/webdefault.xml0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/annotations/asm-5.0.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/annotations/asm-commons-5.0.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/annotations/javax.annotation-api-1.2.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.apache-jsp-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.9.M3.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.9.M3.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-client-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-server-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-alpn-client-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-alpn-server-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-annotations-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-cdi-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-client-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-continuation-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-deploy-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-http-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-io-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-jaas-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-jaspi-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-jmx-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-jndi-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-plus-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-proxy-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-quickstart-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-rewrite-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-schemas-3.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-security-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-server-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-servlet-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-servlets-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-util-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-webapp-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jetty-xml-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jndi/javax.transaction-api-1.2.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/javax.el-3.0.0.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-2.3.2.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-api-2.3.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp.jstl-1.2.2.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/jetty-jsp-jdt-2.3.3.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jdt.core-3.8.2.v20130121.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jetty.orbit.javax.servlet.jsp.jstl-1.2.0.v201105211821.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/monitor/jetty-monitor-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/servlet-api-3.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/setuid/jetty-setuid-java-1.0.1.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/spdy/spdy-client-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/spdy/spdy-core-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-common-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-server-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/spdy/spdy-server-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/spring/jetty-spring-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-client-impl-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-server-impl-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/javax.websocket-api-1.0.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/websocket-api-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/websocket-client-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/websocket-common-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/websocket-server-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/lib/websocket/websocket-servlet-TEST.jar0
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/annotations.mod17
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/cdi.mod26
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/client.mod6
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/continuation.mod6
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/debug.mod9
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/deploy.mod21
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/ext.mod11
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/fcgi.mod15
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/hawtio.mod28
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/home-base-warning.mod7
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/http.mod27
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/https.mod19
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/ipaccess.mod9
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jaas.mod16
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jamon.mod30
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jaspi.mod10
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jminix.mod41
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jmx-remote.mod18
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jmx.mod13
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jndi.mod11
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jolokia.mod19
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jsp.mod10
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jstl.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jsp.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jstl.mod6
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jsp.mod21
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jstl.mod14
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/jvm.mod23
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/logging.mod31
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/lowresources.mod18
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/monitor.mod13
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/plus.mod15
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_40.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_45.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_51.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_55.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_60.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_65.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_67.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_71.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_72.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_05.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_11.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_20.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_25.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn.mod42
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_04.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_05.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_06.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_07.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_09.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_10.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_11.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_13.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_15.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_17.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_21.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_25.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_40.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_45.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_51.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_55.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_60.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_65.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_67.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_71.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_72.mod8
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn.mod37
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/protonego.mod24
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/proxy.mod22
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/quickstart.mod12
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/requestlog.mod30
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/resources.mod10
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/rewrite.mod12
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/security.mod9
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/server.mod49
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/servlet.mod9
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/servlets.mod10
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/setuid.mod19
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/spdy.mod26
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/spring.mod16
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/ssl.mod40
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/stats.mod9
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/webapp.mod10
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/websocket.mod12
-rw-r--r--jetty-start/src/test/resources/dist-home/modules/xinetd.mod17
198 files changed, 1894 insertions, 96 deletions
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java b/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java
index 6921df6816..42937a0f5e 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java
@@ -465,7 +465,7 @@ public class BaseHome
*/
public String toShortForm(final String path)
{
- if (path == null)
+ if ((path == null) || (path.charAt(0) == '<'))
{
return path;
}
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java b/jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java
index 281fe6bad1..7743201d51 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java
@@ -20,11 +20,23 @@ package org.eclipse.jetty.start;
public class FileArg
{
- public String uri;
- public String location;
-
+ public final String moduleName;
+ public final String uri;
+ public final String location;
+
+ public FileArg(final Module module, final String uriLocation)
+ {
+ this(module == null?(String)null:module.getName(),uriLocation);
+ }
+
public FileArg(final String uriLocation)
{
+ this((String)null,uriLocation);
+ }
+
+ private FileArg(final String moduleName, final String uriLocation)
+ {
+ this.moduleName = moduleName;
String parts[] = uriLocation.split("\\|",3);
if (parts.length > 2)
{
@@ -49,7 +61,7 @@ public class FileArg
this.location = uriLocation;
}
}
-
+
@Override
public boolean equals(Object obj)
{
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
index 0af1ef063c..6c98886707 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
@@ -80,6 +80,7 @@ import org.eclipse.jetty.start.config.CommandLineConfigSource;
*/
public class Main
{
+ private static final String EXITING_LICENSE_NOT_ACKNOWLEDGED = "Exiting: license not acknowledged!";
private static final int EXIT_USAGE = 1;
public static String join(Collection<?> objs, String delim)
@@ -171,26 +172,32 @@ public class Main
}).start();
}
- private void initFile(FileArg arg)
+ private void initFile(StartArgs args, FileArg farg)
{
try
{
- Path file = baseHome.getBasePath(arg.location);
-
- StartLog.debug("Module file %s %s",file.toAbsolutePath(),(FS.exists(file)?"[Exists!]":""));
+ Path file = baseHome.getBasePath(farg.location);
+
+ StartLog.debug("[init-file] %s module specified file %s",file.toAbsolutePath(),(FS.exists(file)?"[Exists!]":""));
if (FS.exists(file))
{
// file already initialized / downloaded, skip it
return;
}
- if (arg.uri!=null)
+ if (farg.uri!=null)
{
- URL url = new URL(arg.uri);
+ URL url = new URL(farg.uri);
- System.err.println("DOWNLOAD: " + url + " to " + arg.location);
+ StartLog.log("DOWNLOAD", "%s to %s", url, farg.location);
FS.ensureDirectoryExists(file.getParent());
+
+ if (args.isTestingModeEnabled())
+ {
+ StartLog.log("TESTING MODE", "Skipping download of " + url);
+ return;
+ }
byte[] buf = new byte[8192];
try (InputStream in = url.openStream();
@@ -211,19 +218,25 @@ public class Main
}
}
}
- else if (arg.location.endsWith("/"))
+ else if (farg.location.endsWith("/"))
{
- System.err.println("MKDIR: " + baseHome.toShortForm(file));
+ StartLog.log("MKDIR",baseHome.toShortForm(file));
FS.ensureDirectoryExists(file);
}
else
{
- StartLog.warn("MISSING: required file "+ baseHome.toShortForm(file));
+ String shortRef = baseHome.toShortForm(file);
+ if (args.isTestingModeEnabled())
+ {
+ StartLog.log("TESTING MODE","Skipping required file check on: %s",shortRef);
+ return;
+ }
+ StartLog.warn("MISSING: Required file %s",shortRef);
}
}
catch (Exception e)
{
- StartLog.warn("ERROR: processing %s%n%s",arg,e);
+ StartLog.warn("ERROR: processing %s%n%s",farg,e);
StartLog.warn(e);
usageExit(EXIT_USAGE);
}
@@ -394,6 +407,15 @@ public class Main
}
}
+ if (!args.isApproveAllLicenses())
+ {
+ if (!module.acknowledgeLicense())
+ {
+ StartLog.warn(EXITING_LICENSE_NOT_ACKNOWLEDGED);
+ System.exit(1);
+ }
+ }
+
boolean buildIni=false;
if (module.isEnabled())
{
@@ -425,44 +447,13 @@ public class Main
buildIni=true;
}
+ String source = "<transitive>";
+
// If we need an ini
if (buildIni)
{
- if (module.hasLicense())
- {
- System.err.printf("%nModule %s:%n",module.getName());
- System.err.printf(" + contains software not provided by the Eclipse Foundation!%n");
- System.err.printf(" + contains software not covered by the Eclipse Public License!%n");
- System.err.printf(" + has not been audited for compliance with its license%n");
- System.err.printf("%n");
- for (String l : module.getLicense())
- {
- System.err.printf(" %s%n",l);
- }
-
- if (args.isApproveAllLicenses())
- {
- System.err.println("All licenses approved via command line");
- }
- else
- {
- try (BufferedReader input = new BufferedReader(new InputStreamReader(System.in)))
- {
- System.err.printf("%nProceed (y/N)? ");
- String line = input.readLine();
-
- if (line == null || line.length() == 0 || !line.toLowerCase().startsWith("y"))
- {
- System.err.printf("Exiting: license not acknowledged%n");
- System.exit(1);
- }
- }
- }
- }
-
// File BufferedWriter
BufferedWriter writer = null;
- String source = null;
PrintWriter out = null;
try
{
@@ -494,12 +485,11 @@ public class Main
out.println("--module=" + name);
args.parse("--module=" + name,source);
- modules.enable(name,Collections.singletonList(source));
+ args.parseModule(module);
for (String line : module.getDefaultConfig())
{
out.println(line);
- args.parse(line,source);
}
}
finally
@@ -511,20 +501,22 @@ public class Main
}
}
+ modules.enable(name,Collections.singletonList(source));
+
// Also list other places this module is enabled
- for (String source : module.getSources())
+ for (String src : module.getSources())
{
- StartLog.debug("also enabled in: %s",source);
- if (!short_start_ini.equals(source))
+ StartLog.debug("also enabled in: %s",src);
+ if (!short_start_ini.equals(src))
{
- StartLog.info("%-15s enabled in %s",name,baseHome.toShortForm(source));
+ StartLog.info("%-15s enabled in %s",name,baseHome.toShortForm(src));
}
}
// Do downloads now
for (String file : module.getFiles())
{
- initFile(new FileArg(file));
+ initFile(args, new FileArg(module,file));
}
// Process dependencies
@@ -701,17 +693,43 @@ public class Main
{
doStop(args);
}
+
+ boolean rebuildGraph = false;
// Initialize start.ini
for (String module : args.getAddToStartIni())
{
buildIni(args,module,true,true);
+ rebuildGraph = true;
}
// Initialize start.d
for (String module : args.getAddToStartdIni())
{
buildIni(args,module,true,false);
+ rebuildGraph = true;
+ }
+
+ if (rebuildGraph)
+ {
+ args.getAllModules().clearMissing();
+ args.getAllModules().buildGraph();
+ }
+
+ // If in --create-files, check licenses
+ if(args.isDownload())
+ {
+ if (!args.isApproveAllLicenses())
+ {
+ for (Module module : args.getAllModules().resolveEnabled())
+ {
+ if (!module.acknowledgeLicense())
+ {
+ StartLog.warn(EXITING_LICENSE_NOT_ACKNOWLEDGED);
+ System.exit(1);
+ }
+ }
+ }
}
// Check ini files for download possibilities
@@ -720,7 +738,7 @@ public class Main
Path file = baseHome.getBasePath(arg.location);
if (!FS.exists(file) && args.isDownload())
{
- initFile(arg);
+ initFile(args, arg);
}
if (!FS.exists(file))
@@ -728,7 +746,7 @@ public class Main
boolean isDir = arg.location.endsWith("/");
if (isDir)
{
- System.err.println("MKDIR: " + baseHome.toShortForm(file));
+ StartLog.log("MKDIR", baseHome.toShortForm(file));
FS.ensureDirectoryExists(file);
/* Startup should not fail to run on missing directories.
* See Bug #427204
@@ -737,6 +755,13 @@ public class Main
}
else
{
+ String shortRef = baseHome.toShortForm(file);
+ if (args.isTestingModeEnabled())
+ {
+ StartLog.log("TESTING MODE","Skipping required file check on: %s",shortRef);
+ return;
+ }
+
StartLog.warn("Missing Required File: %s",baseHome.toShortForm(file));
args.setRun(false);
if (arg.uri != null)
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java
index dadaa02442..59189ca807 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java
@@ -21,6 +21,7 @@ package org.eclipse.jetty.start;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -111,6 +112,7 @@ public class Module
private boolean enabled = false;
/** List of sources that enabled this module */
private final Set<String> sources = new HashSet<>();
+ private boolean licenseAck = false;
public Module(BaseHome basehome, Path file) throws FileNotFoundException, IOException
{
@@ -250,7 +252,7 @@ public class Module
{
return parentNames;
}
-
+
public Set<String> getSources()
{
return Collections.unmodifiableSet(sources);
@@ -268,14 +270,57 @@ public class Module
public boolean hasLicense()
{
- return license!=null && license.size()>0;
+ return license != null && license.size() > 0;
+ }
+
+ public boolean acknowledgeLicense() throws IOException
+ {
+ if (!hasLicense() || licenseAck)
+ {
+ return true;
+ }
+
+ System.err.printf("%nModule %s:%n",getName());
+ System.err.printf(" + contains software not provided by the Eclipse Foundation!%n");
+ System.err.printf(" + contains software not covered by the Eclipse Public License!%n");
+ System.err.printf(" + has not been audited for compliance with its license%n");
+ System.err.printf("%n");
+ for (String l : getLicense())
+ {
+ System.err.printf(" %s%n",l);
+ }
+
+ String propBasedAckName = "org.eclipse.jetty.start.ack.license." + getName();
+ String propBasedAckValue = System.getProperty(propBasedAckName);
+ if (propBasedAckValue != null)
+ {
+ StartLog.log("TESTING MODE", "Programmatic ACK - %s=%s",propBasedAckName,propBasedAckValue);
+ licenseAck = Boolean.parseBoolean(propBasedAckValue);
+ }
+ else
+ {
+ if (Boolean.getBoolean("org.eclipse.jetty.start.testing"))
+ {
+ throw new RuntimeException("Test Configuration Missing - Pre-specify answer to (" + propBasedAckName + ") in test case");
+ }
+
+ try (BufferedReader input = new BufferedReader(new InputStreamReader(System.in)))
+ {
+ System.err.printf("%nProceed (y/N)? ");
+ String line = input.readLine();
+
+ licenseAck = !(line == null || line.length() == 0 || !line.toLowerCase().startsWith("y"));
+ }
+ }
+
+ return licenseAck;
}
-
+
public List<String> getLicense()
{
return license;
}
-
+
@Override
public int hashCode()
{
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
index a55fd9e77b..2731ef3dbd 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
@@ -128,13 +128,13 @@ public class Modules implements Iterable<Module>
if (parent == null)
{
- if (parentName.contains("${"))
+ if (Props.hasPropertyKey(parentName))
{
- StartLog.debug("module not found [%s]%n",parentName);
+ StartLog.debug("Module property not expandable (yet) [%s]",parentName);
}
else
{
- StartLog.warn("module not found [%s]%n",parentName);
+ StartLog.warn("Module not found [%s]",parentName);
}
}
else
@@ -149,7 +149,7 @@ public class Modules implements Iterable<Module>
Module optional = get(optionalParentName);
if (optional == null)
{
- StartLog.debug("optional module not found [%s]%n",optionalParentName);
+ StartLog.debug("Optional module not found [%s]",optionalParentName);
}
else if (optional.isEnabled())
{
@@ -178,6 +178,11 @@ public class Modules implements Iterable<Module>
}
}
+ public void clearMissing()
+ {
+ missingModules.clear();
+ }
+
public Integer count()
{
return modules.size();
@@ -316,18 +321,23 @@ public class Modules implements Iterable<Module>
private void enableModule(Module module, List<String> sources) throws IOException
{
+ String via = "<transitive>";
+
// Always add the sources
if (sources != null)
+ {
module.addSources(sources);
+ via = Main.join(sources, ", ");
+ }
// If already enabled, nothing else to do
if (module.isEnabled())
{
- StartLog.debug("Enabled module: %s (via %s)",module.getName(),Main.join(sources,", "));
+ StartLog.debug("Enabled module: %s (via %s)",module.getName(),via);
return;
}
- StartLog.debug("Enabling module: %s (via %s)",module.getName(),Main.join(sources,", "));
+ StartLog.debug("Enabling module: %s (via %s)",module.getName(),via);
module.setEnabled(true);
args.parseModule(module);
module.expandProperties(args.getProperties());
@@ -346,12 +356,16 @@ public class Modules implements Iterable<Module>
if (FS.canReadFile(file))
{
parent = registerModule(file);
+ parent.expandProperties(args.getProperties());
updateParentReferencesTo(parent);
}
else
{
- StartLog.debug("Missing module definition: [ Mod: %s | File: %s ]",name,file);
- missingModules.add(name);
+ if (!Props.hasPropertyKey(name))
+ {
+ StartLog.debug("Missing module definition: [ Mod: %s | File: %s ]",name,file);
+ missingModules.add(name);
+ }
}
}
if (parent != null)
@@ -507,12 +521,22 @@ public class Modules implements Iterable<Module>
Module module = registerModule(file);
updateParentReferencesTo(module);
if (!expanded.equals(missingParent))
+ {
expandedModules.add(missingParent);
+ }
}
else
{
- StartLog.debug("Missing module definition: %s == %s",missingParent,expanded);
- missingModules.add(missingParent);
+ if (Props.hasPropertyKey(expanded))
+ {
+ StartLog.debug("Module property not expandable (yet) [%s]",expanded);
+ expandedModules.add(missingParent);
+ }
+ else
+ {
+ StartLog.debug("Missing module definition: %s expanded to %s",missingParent,expanded);
+ missingModules.add(missingParent);
+ }
}
}
}
@@ -650,4 +674,5 @@ public class Modules implements Iterable<Module>
str.append("]");
return str.toString();
}
+
}
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java b/jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java
index 1f06f06bc4..12e38139e9 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java
@@ -87,7 +87,7 @@ public class PathFinder extends SimpleFileVisitor<Path>
{
if (dirMatcher.matches(dir))
{
- StartLog.debug("Following dir: " + dir);
+ StartLog.trace("Following dir: " + dir);
if (includeDirsInResults && fileMatcher.matches(dir))
{
addHit(dir);
@@ -96,7 +96,7 @@ public class PathFinder extends SimpleFileVisitor<Path>
}
else
{
- StartLog.debug("Skipping dir: " + dir);
+ StartLog.trace("Skipping dir: " + dir);
return FileVisitResult.SKIP_SUBTREE;
}
}
@@ -143,7 +143,7 @@ public class PathFinder extends SimpleFileVisitor<Path>
}
else
{
- StartLog.debug("Ignoring file: " + file);
+ StartLog.trace("Ignoring file: " + file);
}
return FileVisitResult.CONTINUE;
}
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java
index 3875a4de9f..8d6fe69bed 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java
@@ -233,7 +233,7 @@ public final class Props implements Iterable<Prop>
value = getString(property);
if (value == null)
{
- StartLog.debug("Unable to expand: %s",property);
+ StartLog.trace("Unable to expand: %s",property);
expanded.append(mat.group(1));
}
else
@@ -316,6 +316,11 @@ public final class Props implements Iterable<Prop>
return new Prop(key,value,ORIGIN_SYSPROP);
}
+ public static boolean hasPropertyKey(String name)
+ {
+ return Pattern.compile("(?<=[^$]|^)(\\$\\{[^}]*\\})").matcher(name).find();
+ }
+
@Override
public Iterator<Prop> iterator()
{
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
index 74659fb941..e2574f2034 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
@@ -123,15 +123,16 @@ public class StartArgs
private boolean exec = false;
private boolean approveAllLicenses = false;
+ private boolean testingMode = false;
public StartArgs()
{
classpath = new Classpath();
}
- private void addFile(String uriLocation)
+ private void addFile(Module module, String uriLocation)
{
- FileArg arg = new FileArg(uriLocation);
+ FileArg arg = new FileArg(module, uriLocation);
if (!files.contains(arg))
{
files.add(arg);
@@ -376,6 +377,7 @@ public class StartArgs
*/
public void expandLibs(BaseHome baseHome) throws IOException
{
+ StartLog.debug("Expanding Libs");
for (String rawlibref : rawLibs)
{
StartLog.debug("rawlibref = " + rawlibref);
@@ -401,6 +403,7 @@ public class StartArgs
*/
public void expandModules(BaseHome baseHome, List<Module> activeModules) throws IOException
{
+ StartLog.debug("Expanding Modules");
for (Module module : activeModules)
{
// Find and Expand Libraries
@@ -434,7 +437,7 @@ public class StartArgs
for (String file : module.getFiles())
{
StartLog.debug("Adding module specified file: %s",file);
- addFile(file);
+ addFile(module,file);
}
}
}
@@ -638,6 +641,11 @@ public class StartArgs
{
return stopCommand;
}
+
+ public boolean isTestingModeEnabled()
+ {
+ return testingMode;
+ }
public boolean isVersion()
{
@@ -702,6 +710,13 @@ public class StartArgs
// valid, but handled in StartLog instead
return;
}
+
+ if ("--testing-mode".equals(arg))
+ {
+ System.setProperty("org.eclipse.jetty.start.testing","true");
+ testingMode = true;
+ return;
+ }
if (arg.startsWith("--include-jetty-dir="))
{
@@ -718,7 +733,7 @@ public class StartArgs
if (arg.startsWith("--download="))
{
- addFile(Props.getValue(arg));
+ addFile(null,Props.getValue(arg));
run = false;
download = true;
return;
@@ -793,7 +808,8 @@ public class StartArgs
// jetty.base build-out : add to ${jetty.base}/start.d/
if (arg.startsWith("--add-to-startd="))
{
- addToStartdIni.addAll(Props.getValues(arg));
+ List<String> moduleNames = Props.getValues(arg);
+ addToStartdIni.addAll(moduleNames);
run = false;
download = true;
return;
@@ -802,7 +818,8 @@ public class StartArgs
// jetty.base build-out : add to ${jetty.base}/start.ini
if (arg.startsWith("--add-to-start="))
{
- addToStartIni.addAll(Props.getValues(arg));
+ List<String> moduleNames = Props.getValues(arg);
+ addToStartIni.addAll(moduleNames);
run = false;
download = true;
return;
@@ -811,17 +828,8 @@ public class StartArgs
// Enable a module
if (arg.startsWith("--module="))
{
- for (String moduleName : Props.getValues(arg))
- {
- modules.add(moduleName);
- List<String> list = sources.get(moduleName);
- if (list == null)
- {
- list = new ArrayList<String>();
- sources.put(moduleName,list);
- }
- list.add(source);
- }
+ List<String> moduleNames = Props.getValues(arg);
+ enableModules(source,moduleNames);
return;
}
@@ -921,6 +929,21 @@ public class StartArgs
throw new UsageException(ERR_BAD_ARG,"Unrecognized argument: \"%s\" in %s",arg,source);
}
+ private void enableModules(String source, List<String> moduleNames)
+ {
+ for (String moduleName : moduleNames)
+ {
+ modules.add(moduleName);
+ List<String> list = sources.get(moduleName);
+ if (list == null)
+ {
+ list = new ArrayList<String>();
+ sources.put(moduleName,list);
+ }
+ list.add(source);
+ }
+ }
+
public void parseModule(Module module)
{
if(module.hasDefaultConfig())
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java
index 96ca01aa12..113253804c 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java
@@ -50,6 +50,14 @@ public class StartLog
out.printf(format + "%n",args);
}
}
+
+ public static void trace(String format, Object... args)
+ {
+ if (INSTANCE.trace)
+ {
+ out.printf("TRACE: " + format + "%n",args);
+ }
+ }
public static void debug(Throwable t)
{
@@ -63,15 +71,25 @@ public class StartLog
{
return INSTANCE;
}
+
+ public static void log(String type, String msg)
+ {
+ err.println(type + ": " + msg);
+ }
+
+ public static void log(String type, String format, Object... args)
+ {
+ err.printf(type + ": " + format + "%n",args);
+ }
public static void info(String format, Object... args)
{
- err.printf("INFO: " + format + "%n",args);
+ log("INFO",format,args);
}
public static void warn(String format, Object... args)
{
- err.printf("WARNING: " + format + "%n",args);
+ log("WARNING",format,args);
}
public static void warn(Throwable t)
@@ -84,6 +102,7 @@ public class StartLog
return INSTANCE.debug;
}
+ private boolean trace = false;
private boolean debug = false;
public void initialize(BaseHome baseHome, CommandLineConfigSource cmdLineSource) throws IOException
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java
index e35657c49f..c53389bb0a 100644
--- a/jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java
@@ -85,7 +85,7 @@ public class FileArgTest
@Test
public void testFileArg()
{
- FileArg arg = new FileArg(rawFileRef);
+ FileArg arg = new FileArg(null,rawFileRef);
if (expectedUri == null)
{
assertThat("URI",arg.uri,nullValue());
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/LicenseTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/LicenseTest.java
new file mode 100644
index 0000000000..c6d040fa64
--- /dev/null
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/LicenseTest.java
@@ -0,0 +1,154 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2014 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.start;
+
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jetty.toolchain.test.IO;
+import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
+import org.eclipse.jetty.toolchain.test.OS;
+import org.eclipse.jetty.toolchain.test.TestingDir;
+import org.junit.Rule;
+import org.junit.Test;
+
+/**
+ * Test various license handling.
+ */
+public class LicenseTest
+{
+ @Rule
+ public TestingDir testdir = new TestingDir();
+
+ @Rule
+ public SystemExitAsException exitrule = new SystemExitAsException();
+
+ private String assertFileExists(File basePath, String name) throws IOException
+ {
+ File file = new File(basePath, OS.separators(name));
+ FS.exists(file.toPath());
+ return IO.readToString(file);
+ }
+
+ private void execMain(List<String> cmds) throws Exception
+ {
+ int len = cmds.size();
+ String args[] = cmds.toArray(new String[len]);
+
+ Main main = new Main();
+ StartArgs startArgs = main.processCommandLine(args);
+ main.start(startArgs);
+ }
+
+ public List<String> getBaseCommandLine(File basePath)
+ {
+ List<String> cmds = new ArrayList<String>();
+ cmds.add("-Djava.io.tmpdir=" + MavenTestingUtils.getTargetDir().getAbsolutePath());
+ cmds.add("-Djetty.home=" + MavenTestingUtils.getTestResourceDir("dist-home").getAbsolutePath());
+ cmds.add("-Djetty.base=" + basePath.getAbsolutePath());
+ cmds.add("--testing-mode");
+
+ return cmds;
+ }
+
+ @Test
+ public void testAdd_NoLicensed() throws Exception
+ {
+ File basePath = testdir.getEmptyDir();
+
+ List<String> cmds = getBaseCommandLine(basePath);
+
+ cmds.add("--add-to-start=http,deploy");
+
+ execMain(cmds);
+ }
+
+ @Test
+ public void testAdd_CDI_Licensed() throws Exception
+ {
+ File basePath = testdir.getEmptyDir();
+
+ List<String> cmds = getBaseCommandLine(basePath);
+
+ cmds.add("-Dorg.eclipse.jetty.start.ack.license.cdi=true");
+ cmds.add("--add-to-start=cdi");
+
+ execMain(cmds);
+ }
+
+ @Test
+ public void testAdd_SPDY_Licensed() throws Exception
+ {
+ File basePath = testdir.getEmptyDir();
+
+ List<String> cmds = getBaseCommandLine(basePath);
+
+ cmds.add("-Dorg.eclipse.jetty.start.ack.license.protonego-impl=true");
+ cmds.add("--add-to-start=spdy");
+
+ execMain(cmds);
+
+ String contents = assertFileExists(basePath, "start.ini");
+ assertThat("Contents",contents,containsString("--module=spdy"+System.lineSeparator()));
+ }
+
+ @Test
+ public void testCreate_SPDY_Licensed() throws Exception
+ {
+ File basePath = testdir.getEmptyDir();
+
+ List<String> cmds = getBaseCommandLine(basePath);
+
+ cmds.add("-Dorg.eclipse.jetty.start.ack.license.protonego-impl=true");
+
+ StringReader startIni = new StringReader("--module=spdy\n");
+ try (FileWriter writer = new FileWriter(new File(basePath,"start.ini")))
+ {
+ IO.copy(startIni,writer);
+ }
+
+ execMain(cmds);
+ }
+
+ @Test
+ public void testCreate_CDI_Licensed() throws Exception
+ {
+ File basePath = testdir.getEmptyDir();
+
+ List<String> cmds = getBaseCommandLine(basePath);
+
+ cmds.add("-Dorg.eclipse.jetty.start.ack.license.cdi=true");
+ cmds.add("--create-files");
+
+ StringReader startIni = new StringReader("--module=cdi\n");
+ try (FileWriter writer = new FileWriter(new File(basePath,"start.ini")))
+ {
+ IO.copy(startIni,writer);
+ }
+
+ execMain(cmds);
+ }
+}
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/RebuildTestResources.java b/jetty-start/src/test/java/org/eclipse/jetty/start/RebuildTestResources.java
new file mode 100644
index 0000000000..9679ba4a28
--- /dev/null
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/RebuildTestResources.java
@@ -0,0 +1,190 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2014 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.start;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.PathMatcher;
+import java.nio.file.StandardCopyOption;
+import java.util.regex.Pattern;
+
+import org.eclipse.jetty.toolchain.test.FS;
+import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
+
+/**
+ * Utility class to rebuild the src/test/resources/dist-home from the active build tree.
+ * <p>
+ * Not really meant to be run with each build. Nor is it a good idea to attempt to do that (as this would introduce a dependency from jetty-start ->
+ * jetty-distribution which is a circular dependency)
+ */
+public class RebuildTestResources
+{
+ public static void main(String[] args)
+ {
+ File realDistHome = MavenTestingUtils.getProjectDir("../jetty-distribution/target/distribution");
+ File outputDir = MavenTestingUtils.getTestResourceDir("dist-home");
+ try
+ {
+ new RebuildTestResources(realDistHome,outputDir).rebuild();
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace();
+ }
+ }
+
+ private static interface FileCopier
+ {
+ public void copy(Path from, Path to) throws IOException;
+ }
+
+ private static class NormalFileCopier implements FileCopier
+ {
+ @Override
+ public void copy(Path from, Path to) throws IOException
+ {
+ Files.copy(from,to,StandardCopyOption.REPLACE_EXISTING);
+ }
+ }
+
+ private static class TouchFileCopier implements FileCopier
+ {
+ @Override
+ public void copy(Path from, Path to) throws IOException
+ {
+ Files.createFile(to);
+ }
+ }
+
+ private static interface Renamer
+ {
+ public String getName(Path path);
+ }
+
+ private static class NoRenamer implements Renamer
+ {
+ @Override
+ public String getName(Path path)
+ {
+ return path.getFileName().toString();
+ }
+ }
+
+ private static class RegexRenamer implements Renamer
+ {
+ private final Pattern pat;
+ private final String replacement;
+
+ public RegexRenamer(String regex, String replacement)
+ {
+ this.pat = Pattern.compile(regex);
+ this.replacement = replacement;
+ }
+
+ @Override
+ public String getName(Path path)
+ {
+ String origName = path.getFileName().toString();
+ return pat.matcher(origName).replaceAll(replacement);
+ }
+ }
+
+ private final Path destDir;
+ private final Path srcDir;
+
+ public RebuildTestResources(File realDistHome, File outputDir) throws IOException
+ {
+ this.srcDir = realDistHome.toPath().toRealPath();
+ this.destDir = outputDir.toPath();
+ }
+
+ private void copyLibs() throws IOException
+ {
+ System.out.println("Copying libs (lib dir) ...");
+ Path libsDir = destDir.resolve("lib");
+ FS.ensureDirExists(libsDir.toFile());
+
+ PathMatcher matcher = getPathMatcher("glob:**.jar");
+ Renamer renamer = new RegexRenamer("-9\\.[0-9.]*(v[0-9]*)?(-SNAPSHOT)?(RC[0-9])?(M[0-9])?","-TEST");
+ FileCopier copier = new TouchFileCopier();
+ copyDir(srcDir.resolve("lib"),libsDir,matcher,renamer,copier);
+ }
+
+ private void copyModules() throws IOException
+ {
+ System.out.println("Copying modules ...");
+ Path modulesDir = destDir.resolve("modules");
+ FS.ensureDirExists(modulesDir.toFile());
+
+ PathMatcher matcher = getPathMatcher("glob:**.mod");
+ Renamer renamer = new NoRenamer();
+ FileCopier copier = new NormalFileCopier();
+ copyDir(srcDir.resolve("modules"),modulesDir,matcher,renamer,copier);
+ }
+
+ private void copyXmls() throws IOException
+ {
+ System.out.println("Copying xmls (etc dir) ...");
+ Path xmlDir = destDir.resolve("etc");
+ FS.ensureDirExists(xmlDir.toFile());
+
+ PathMatcher matcher = getPathMatcher("glob:**.xml");
+ Renamer renamer = new NoRenamer();
+ FileCopier copier = new TouchFileCopier();
+ copyDir(srcDir.resolve("etc"),xmlDir,matcher,renamer,copier);
+ }
+
+ private void rebuild() throws IOException
+ {
+ copyModules();
+ copyLibs();
+ copyXmls();
+ System.out.println("Done");
+ }
+
+ private PathMatcher getPathMatcher(String pattern)
+ {
+ return FileSystems.getDefault().getPathMatcher(pattern);
+ }
+
+ private void copyDir(Path from, Path to, PathMatcher fileMatcher, Renamer renamer, FileCopier copier) throws IOException
+ {
+ Files.createDirectories(to);
+
+ for (Path path : Files.newDirectoryStream(from))
+ {
+ String name = renamer.getName(path);
+ Path dest = to.resolve(name);
+ if (Files.isDirectory(path))
+ {
+ copyDir(path,dest,fileMatcher,renamer,copier);
+ }
+ else
+ {
+ if (fileMatcher.matches(path))
+ {
+ copier.copy(path,dest);
+ }
+ }
+ }
+ }
+}
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/SystemExitAsException.java b/jetty-start/src/test/java/org/eclipse/jetty/start/SystemExitAsException.java
new file mode 100644
index 0000000000..413957d73d
--- /dev/null
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/SystemExitAsException.java
@@ -0,0 +1,79 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2014 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.start;
+
+import java.security.Permission;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+public class SystemExitAsException implements TestRule
+{
+ @SuppressWarnings("serial")
+ public static class SystemExitException extends RuntimeException
+ {
+ public SystemExitException(int status)
+ {
+ super("Encountered System.exit(" + status + ")");
+ }
+ }
+
+ private static class NoExitSecurityManager extends SecurityManager
+ {
+ @Override
+ public void checkPermission(Permission perm)
+ {
+ }
+
+ @Override
+ public void checkPermission(Permission perm, Object context)
+ {
+ }
+
+ @Override
+ public void checkExit(int status)
+ {
+ super.checkExit(status);
+ throw new SystemExitException(status);
+ }
+ }
+
+ @Override
+ public Statement apply(final Statement statement, Description description)
+ {
+ return new Statement()
+ {
+ @Override
+ public void evaluate() throws Throwable
+ {
+ SecurityManager origSecurityManager = System.getSecurityManager();
+ try
+ {
+ System.setSecurityManager(new NoExitSecurityManager());
+ statement.evaluate();
+ }
+ finally
+ {
+ System.setSecurityManager(origSecurityManager);
+ }
+ }
+ };
+ }
+}
diff --git a/jetty-start/src/test/resources/dist-home/etc/example-quickstart.xml b/jetty-start/src/test/resources/dist-home/etc/example-quickstart.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/example-quickstart.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/hawtio.xml b/jetty-start/src/test/resources/dist-home/etc/hawtio.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/hawtio.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/home-base-warning.xml b/jetty-start/src/test/resources/dist-home/etc/home-base-warning.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/home-base-warning.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jamon.xml b/jetty-start/src/test/resources/dist-home/etc/jamon.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jamon.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-annotations.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-annotations.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-annotations.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-cdi.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-cdi.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-cdi.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-debug.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-debug.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-debug.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-deploy.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-deploy.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-deploy.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-http.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-http.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-http.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-https.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-https.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-https.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-ipaccess.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-ipaccess.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-ipaccess.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-jaas.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-jaas.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-jaas.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-jmx-remote.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-jmx-remote.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-jmx-remote.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-jmx.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-jmx.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-jmx.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-logging.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-logging.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-logging.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-lowresources.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-lowresources.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-lowresources.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-monitor.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-monitor.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-monitor.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-plus.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-plus.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-plus.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-proxy.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-proxy.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-proxy.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-requestlog.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-requestlog.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-requestlog.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-rewrite.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-rewrite.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-rewrite.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-setuid.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-setuid.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-setuid.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-spdy-proxy.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-spdy-proxy.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-spdy-proxy.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-spdy.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-spdy.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-spdy.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-spring.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-spring.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-spring.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-ssl.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-ssl.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-ssl.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-started.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-started.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-started.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-stats.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-stats.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-stats.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty-xinetd.xml b/jetty-start/src/test/resources/dist-home/etc/jetty-xinetd.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty-xinetd.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jetty.xml b/jetty-start/src/test/resources/dist-home/etc/jetty.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jetty.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jminix.xml b/jetty-start/src/test/resources/dist-home/etc/jminix.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jminix.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/jolokia.xml b/jetty-start/src/test/resources/dist-home/etc/jolokia.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/jolokia.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/protonego-alpn.xml b/jetty-start/src/test/resources/dist-home/etc/protonego-alpn.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/protonego-alpn.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/protonego-npn.xml b/jetty-start/src/test/resources/dist-home/etc/protonego-npn.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/protonego-npn.xml
diff --git a/jetty-start/src/test/resources/dist-home/etc/webdefault.xml b/jetty-start/src/test/resources/dist-home/etc/webdefault.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/etc/webdefault.xml
diff --git a/jetty-start/src/test/resources/dist-home/lib/annotations/asm-5.0.1.jar b/jetty-start/src/test/resources/dist-home/lib/annotations/asm-5.0.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/annotations/asm-5.0.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/annotations/asm-commons-5.0.1.jar b/jetty-start/src/test/resources/dist-home/lib/annotations/asm-commons-5.0.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/annotations/asm-commons-5.0.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/annotations/javax.annotation-api-1.2.jar b/jetty-start/src/test/resources/dist-home/lib/annotations/javax.annotation-api-1.2.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/annotations/javax.annotation-api-1.2.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.apache-jsp-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.apache-jsp-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.apache-jsp-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.9.M3.jar b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.9.M3.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.9.M3.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.9.M3.jar b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.9.M3.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.9.M3.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar b/jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar b/jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-client-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-client-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-client-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-server-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-server-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/fcgi/fcgi-server-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar b/jetty-start/src/test/resources/dist-home/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-alpn-client-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-alpn-client-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-alpn-client-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-alpn-server-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-alpn-server-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-alpn-server-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-annotations-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-annotations-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-annotations-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-cdi-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-cdi-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-cdi-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-client-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-client-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-client-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-continuation-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-continuation-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-continuation-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-deploy-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-deploy-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-deploy-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-http-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-http-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-http-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-io-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-io-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-io-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-jaas-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-jaas-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-jaas-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-jaspi-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-jaspi-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-jaspi-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-jmx-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-jmx-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-jmx-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-jndi-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-jndi-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-jndi-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-plus-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-plus-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-plus-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-proxy-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-proxy-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-proxy-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-quickstart-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-quickstart-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-quickstart-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-rewrite-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-rewrite-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-rewrite-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-schemas-3.1.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-schemas-3.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-schemas-3.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-security-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-security-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-security-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-server-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-server-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-server-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-servlet-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-servlet-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-servlet-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-servlets-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-servlets-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-servlets-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-util-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-util-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-util-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-webapp-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-webapp-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-webapp-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jetty-xml-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/jetty-xml-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jetty-xml-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar b/jetty-start/src/test/resources/dist-home/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jndi/javax.transaction-api-1.2.jar b/jetty-start/src/test/resources/dist-home/lib/jndi/javax.transaction-api-1.2.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jndi/javax.transaction-api-1.2.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/javax.el-3.0.0.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.el-3.0.0.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.el-3.0.0.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-2.3.2.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-2.3.2.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-2.3.2.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-api-2.3.1.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-api-2.3.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp-api-2.3.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp.jstl-1.2.2.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp.jstl-1.2.2.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/javax.servlet.jsp.jstl-1.2.2.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/jetty-jsp-jdt-2.3.3.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/jetty-jsp-jdt-2.3.3.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/jetty-jsp-jdt-2.3.3.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jdt.core-3.8.2.v20130121.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jdt.core-3.8.2.v20130121.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jdt.core-3.8.2.v20130121.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jetty.orbit.javax.servlet.jsp.jstl-1.2.0.v201105211821.jar b/jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jetty.orbit.javax.servlet.jsp.jstl-1.2.0.v201105211821.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/jsp/org.eclipse.jetty.orbit.javax.servlet.jsp.jstl-1.2.0.v201105211821.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/monitor/jetty-monitor-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/monitor/jetty-monitor-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/monitor/jetty-monitor-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/servlet-api-3.1.jar b/jetty-start/src/test/resources/dist-home/lib/servlet-api-3.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/servlet-api-3.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/setuid/jetty-setuid-java-1.0.1.jar b/jetty-start/src/test/resources/dist-home/lib/setuid/jetty-setuid-java-1.0.1.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/setuid/jetty-setuid-java-1.0.1.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-client-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-client-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-client-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-core-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-core-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-core-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-common-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-common-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-common-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-server-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-server-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-http-server-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-server-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-server-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/spdy/spdy-server-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/spring/jetty-spring-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/spring/jetty-spring-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/spring/jetty-spring-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-client-impl-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-client-impl-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-client-impl-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-server-impl-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-server-impl-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/javax-websocket-server-impl-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/javax.websocket-api-1.0.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/javax.websocket-api-1.0.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/javax.websocket-api-1.0.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-api-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-api-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-api-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-client-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-client-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-client-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-common-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-common-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-common-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-server-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-server-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-server-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-servlet-TEST.jar b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-servlet-TEST.jar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/lib/websocket/websocket-servlet-TEST.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/annotations.mod b/jetty-start/src/test/resources/dist-home/modules/annotations.mod
new file mode 100644
index 0000000000..65e4654127
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/annotations.mod
@@ -0,0 +1,17 @@
+#
+# Jetty Annotation Scanning Module
+#
+
+[depend]
+# Annotations needs plus, and jndi features
+plus
+
+[lib]
+# Annotations needs jetty annotation jars
+lib/jetty-annotations-${jetty.version}.jar
+# Need annotation processing jars too
+lib/annotations/*.jar
+
+[xml]
+# Enable annotation scanning webapp configurations
+etc/jetty-annotations.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/cdi.mod b/jetty-start/src/test/resources/dist-home/modules/cdi.mod
new file mode 100644
index 0000000000..68dea58b62
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/cdi.mod
@@ -0,0 +1,26 @@
+#
+# CDI / Weld Jetty module
+#
+
+[depend]
+deploy
+annotations
+plus
+# JSP (and EL) are requirements for CDI and Weld
+jsp
+
+[files]
+lib/weld/
+http://central.maven.org/maven2/org/jboss/weld/servlet/weld-servlet/2.2.5.Final/weld-servlet-2.2.5.Final.jar|lib/weld/weld-servlet-2.2.5.Final.jar
+
+[lib]
+lib/weld/weld-servlet-2.2.5.Final.jar
+lib/jetty-cdi-${jetty.version}.jar
+
+[xml]
+etc/jetty-cdi.xml
+
+[license]
+Weld is an open source project hosted on Github and released under the Apache 2.0 license.
+http://weld.cdi-spec.org/
+http://www.apache.org/licenses/LICENSE-2.0.html
diff --git a/jetty-start/src/test/resources/dist-home/modules/client.mod b/jetty-start/src/test/resources/dist-home/modules/client.mod
new file mode 100644
index 0000000000..39b58d4e69
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/client.mod
@@ -0,0 +1,6 @@
+#
+# Client Feature
+#
+
+[lib]
+lib/jetty-client-${jetty.version}.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/continuation.mod b/jetty-start/src/test/resources/dist-home/modules/continuation.mod
new file mode 100644
index 0000000000..231c09d0f3
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/continuation.mod
@@ -0,0 +1,6 @@
+#
+# Classic Jetty Continuation Support Module
+#
+
+[lib]
+lib/jetty-continuation-${jetty.version}.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/debug.mod b/jetty-start/src/test/resources/dist-home/modules/debug.mod
new file mode 100644
index 0000000000..f740ea2c76
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/debug.mod
@@ -0,0 +1,9 @@
+#
+# Debug module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-debug.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/deploy.mod b/jetty-start/src/test/resources/dist-home/modules/deploy.mod
new file mode 100644
index 0000000000..f16b3f2fff
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/deploy.mod
@@ -0,0 +1,21 @@
+#
+# Deploy Feature
+#
+
+[depend]
+webapp
+
+[lib]
+lib/jetty-deploy-${jetty.version}.jar
+
+[files]
+webapps/
+
+[xml]
+etc/jetty-deploy.xml
+
+[ini-template]
+## DeployManager configuration
+# Monitored Directory name (relative to jetty.base)
+# jetty.deploy.monitoredDirName=webapps
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/ext.mod b/jetty-start/src/test/resources/dist-home/modules/ext.mod
new file mode 100644
index 0000000000..56b10f7ea4
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/ext.mod
@@ -0,0 +1,11 @@
+#
+# Module to add all lib/ext/**.jar files to classpath
+#
+
+[lib]
+lib/ext/**.jar
+
+[files]
+lib/
+lib/ext/
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/fcgi.mod b/jetty-start/src/test/resources/dist-home/modules/fcgi.mod
new file mode 100644
index 0000000000..e837b009c1
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/fcgi.mod
@@ -0,0 +1,15 @@
+#
+# FastCGI Module
+#
+
+[depend]
+servlet
+client
+
+[lib]
+lib/jetty-proxy-${jetty.version}.jar
+lib/fcgi/*.jar
+
+[ini-template]
+## For configuration of FastCGI contexts, see
+## TODO: documentation url here
diff --git a/jetty-start/src/test/resources/dist-home/modules/hawtio.mod b/jetty-start/src/test/resources/dist-home/modules/hawtio.mod
new file mode 100644
index 0000000000..2dfb31b150
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/hawtio.mod
@@ -0,0 +1,28 @@
+#
+# Hawtio x module
+#
+
+[depend]
+stats
+deploy
+jmx
+
+[xml]
+etc/hawtio.xml
+
+[files]
+etc/hawtio/
+lib/hawtio/
+https://oss.sonatype.org/content/repositories/public/io/hawt/hawtio-default/1.4.16/hawtio-default-1.4.16.war|lib/hawtio/hawtio.war
+
+[license]
+Hawtio is a redhat JBoss project released under the Apache License, v2.0
+http://hawt.io/
+http://github.com/hawtio/hawtio
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+[ini-template]
+
+-Dhawtio.authenticationEnabled=false
+-Dhawtio.dirname=/dirname
+-Dhawtio.config.dir=${jetty.base}/etc/hawtio
diff --git a/jetty-start/src/test/resources/dist-home/modules/home-base-warning.mod b/jetty-start/src/test/resources/dist-home/modules/home-base-warning.mod
new file mode 100644
index 0000000000..28e5757e81
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/home-base-warning.mod
@@ -0,0 +1,7 @@
+#
+# Home and Base Warning
+#
+
+[xml]
+etc/home-base-warning.xml
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/http.mod b/jetty-start/src/test/resources/dist-home/modules/http.mod
new file mode 100644
index 0000000000..dc34bc3cb9
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/http.mod
@@ -0,0 +1,27 @@
+#
+# Jetty HTTP Connector
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-http.xml
+
+[ini-template]
+### HTTP Connector Configuration
+
+## HTTP port to listen on
+jetty.port=8080
+
+## HTTP idle timeout in milliseconds
+http.timeout=30000
+
+## HTTP Socket.soLingerTime in seconds. (-1 to disable)
+# http.soLingerTime=-1
+
+## Parameters to control the number and priority of acceptors and selectors
+# http.selectors=1
+# http.acceptors=1
+# http.selectorPriorityDelta=0
+# http.acceptorPriorityDelta=0
diff --git a/jetty-start/src/test/resources/dist-home/modules/https.mod b/jetty-start/src/test/resources/dist-home/modules/https.mod
new file mode 100644
index 0000000000..bd1b718081
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/https.mod
@@ -0,0 +1,19 @@
+#
+# Jetty HTTPS Connector
+#
+
+[depend]
+ssl
+
+[xml]
+etc/jetty-https.xml
+
+[ini-template]
+## HTTPS Configuration
+# HTTP port to listen on
+https.port=8443
+# HTTPS idle timeout in milliseconds
+https.timeout=30000
+# HTTPS Socket.soLingerTime in seconds. (-1 to disable)
+# https.soLingerTime=-1
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/ipaccess.mod b/jetty-start/src/test/resources/dist-home/modules/ipaccess.mod
new file mode 100644
index 0000000000..956ea0f2e3
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/ipaccess.mod
@@ -0,0 +1,9 @@
+#
+# IPAccess module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-ipaccess.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/jaas.mod b/jetty-start/src/test/resources/dist-home/modules/jaas.mod
new file mode 100644
index 0000000000..4932140ca6
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jaas.mod
@@ -0,0 +1,16 @@
+#
+# JAAS Module
+#
+
+[depend]
+server
+
+[lib]
+lib/jetty-jaas-${jetty.version}.jar
+
+[xml]
+etc/jetty-jaas.xml
+
+[ini-template]
+## JAAS Configuration
+jaas.login.conf=etc/login.conf
diff --git a/jetty-start/src/test/resources/dist-home/modules/jamon.mod b/jetty-start/src/test/resources/dist-home/modules/jamon.mod
new file mode 100644
index 0000000000..2aeb2adcb8
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jamon.mod
@@ -0,0 +1,30 @@
+#
+# JAMon Jetty module
+#
+
+[depend]
+stats
+deploy
+jmx
+jsp
+
+[xml]
+etc/jamon.xml
+
+[files]
+lib/jamon/
+http://central.maven.org/maven2/com/jamonapi/jamon/2.79/jamon-2.79.jar|lib/jamon/jamon-2.79.jar
+http://central.maven.org/maven2/com/jamonapi/jamon_war/2.79/jamon_war-2.79.war|lib/jamon/jamon.war
+
+[lib]
+lib/jamon/**.jar
+
+[license]
+JAMon is a source forge hosted project released under a BSD derived license.
+http://jamonapi.sourceforge.net
+http://jamonapi.sourceforge.net/JAMonLicense.html
+
+[ini-template]
+jamon.summaryLabels=default, request.getStatus().contextpath.value.ms
+#jamon.summaryLabels=demo
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/jaspi.mod b/jetty-start/src/test/resources/dist-home/modules/jaspi.mod
new file mode 100644
index 0000000000..e7019ae1b6
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jaspi.mod
@@ -0,0 +1,10 @@
+#
+# Jetty JASPI Module
+#
+
+[depend]
+security
+
+[lib]
+lib/jetty-jaspi-${jetty.version}.jar
+lib/jaspi/*.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/jminix.mod b/jetty-start/src/test/resources/dist-home/modules/jminix.mod
new file mode 100644
index 0000000000..b35d7024cd
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jminix.mod
@@ -0,0 +1,41 @@
+#
+# JaMON Jetty module
+#
+
+[depend]
+stats
+jmx
+
+[xml]
+etc/jminix.xml
+
+[files]
+lib/jminix/
+http://central.maven.org/maven2/org/jminix/jminix/1.1.0/jminix-1.1.0.jar|lib/jminix/jminix-1.1.0.jar
+http://maven.restlet.com/org/restlet/org.restlet/1.1.5/org.restlet-1.1.5.jar|lib/jminix/org.restlet-1.1.5.jar
+http://maven.restlet.com/org/restlet/org.restlet.ext.velocity/1.1.5/org.restlet.ext.velocity-1.1.5.jar|lib/jminix/org.restlet.ext.velocity-1.1.5.jar
+http://central.maven.org/maven2/org/apache/velocity/velocity/1.5/velocity-1.5.jar|lib/jminix/velocity-1.5.jar
+http://central.maven.org/maven2/oro/oro/2.0.8/oro-2.0.8.jar|lib/jminix/oro-2.0.8.jar
+http://maven.restlet.com/com/noelios/restlet/com.noelios.restlet/1.1.5/com.noelios.restlet-1.1.5.jar|lib/jminix/com.noelios.restlet-1.1.5.jar
+http://maven.restlet.com/com/noelios/restlet/com.noelios.restlet.ext.servlet/1.1.5/com.noelios.restlet.ext.servlet-1.1.5.jar|lib/jminix/com.noelios.restlet.ext.servlet-1.1.5.jar
+http://central.maven.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar|lib/jminix/commons-logging-1.1.1.jar
+http://repo2.maven.org/maven2/net/sf/json-lib/json-lib/2.2.3/json-lib-2.2.3-jdk15.jar|lib/jminix/json-lib-2.2.3-jdk15.jar
+http://central.maven.org/maven2/commons-lang/commons-lang/2.4/commons-lang-2.4.jar|lib/jminix/commons-lang-2.4.jar
+http://central.maven.org/maven2/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar|lib/jminix/commons-beanutils-1.7.0.jar
+http://central.maven.org/maven2/commons-collections/commons-collections/3.2/commons-collections-3.2.jar|lib/jminix/commons-collections-3.2.jar
+http://central.maven.org/maven2/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar|lib/jminix/ezmorph-1.0.6.jar
+http://central.maven.org/maven2/org/jgroups/jgroups/2.12.1.3.Final/jgroups-2.12.1.3.Final.jar|lib/jminix/jgroups-2.12.1.3.Final.jar
+http://central.maven.org/maven2/org/jasypt/jasypt/1.8/jasypt-1.8.jar|lib/jminix/jasypt-1.8.jar
+
+[lib]
+lib/jminix/**.jar
+
+[license]
+JMiniX is a hosted at google code and released under the Apache License 2.0
+https://code.google.com/p/jminix/
+http://www.apache.org/licenses/LICENSE-2.0
+
+[ini-template]
+# Jminix Configuration
+jminix.port=8088
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/jmx-remote.mod b/jetty-start/src/test/resources/dist-home/modules/jmx-remote.mod
new file mode 100644
index 0000000000..b6be74afc9
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jmx-remote.mod
@@ -0,0 +1,18 @@
+#
+# JMX Remote Module
+#
+
+[depend]
+jmx
+
+[xml]
+etc/jetty-jmx-remote.xml
+
+[ini-template]
+## JMX Configuration
+## Enable for an open port accessible by remote machines
+# jetty.jmxrmihost=localhost
+# jetty.jmxrmiport=1099
+## Strictly speaking you shouldn't need --exec to use this in most environments.
+## If this isn't working, make sure you enable --exec as well
+# -Dcom.sun.management.jmxremote
diff --git a/jetty-start/src/test/resources/dist-home/modules/jmx.mod b/jetty-start/src/test/resources/dist-home/modules/jmx.mod
new file mode 100644
index 0000000000..ee091c706a
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jmx.mod
@@ -0,0 +1,13 @@
+#
+# JMX Module
+#
+
+[depend]
+server
+
+[lib]
+lib/jetty-jmx-${jetty.version}.jar
+
+[xml]
+etc/jetty-jmx.xml
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/jndi.mod b/jetty-start/src/test/resources/dist-home/modules/jndi.mod
new file mode 100644
index 0000000000..33c077ce68
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jndi.mod
@@ -0,0 +1,11 @@
+#
+# JNDI Support
+#
+
+[depend]
+server
+
+[lib]
+lib/jetty-jndi-${jetty.version}.jar
+lib/jndi/*.jar
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/jolokia.mod b/jetty-start/src/test/resources/dist-home/modules/jolokia.mod
new file mode 100644
index 0000000000..876c2fcd47
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jolokia.mod
@@ -0,0 +1,19 @@
+#
+# Jolokia Jetty module
+#
+
+[depend]
+stats
+deploy
+jmx
+
+[xml]
+etc/jolokia.xml
+
+[files]
+http://repo1.maven.org/maven2/org/jolokia/jolokia-war/1.2.2/jolokia-war-1.2.2.war|lib/jolokia/jolokia.war
+
+[license]
+Jolokia is released under the Apache License 2.0
+http://www.jolokia.org
+http://www.apache.org/licenses/LICENSE-2.0
diff --git a/jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jsp.mod b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jsp.mod
new file mode 100644
index 0000000000..aed547c851
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jsp.mod
@@ -0,0 +1,10 @@
+#
+# Apache JSP Module
+#
+
+[name]
+jsp-impl
+
+[lib]
+lib/apache-jsp/*.jar
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jstl.mod b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jstl.mod
new file mode 100644
index 0000000000..804b19131b
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/apache-jstl.mod
@@ -0,0 +1,8 @@
+#
+# Apache JSTL
+#
+[name]
+jstl-impl
+
+[lib]
+lib/apache-jstl/*.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jsp.mod b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jsp.mod
new file mode 100644
index 0000000000..130d2b371f
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jsp.mod
@@ -0,0 +1,8 @@
+#
+# Glassfish JSP Module
+#
+[name]
+jsp-impl
+
+[lib]
+lib/jsp/*.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jstl.mod b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jstl.mod
new file mode 100644
index 0000000000..4b8e6f360c
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jsp-impl/glassfish-jstl.mod
@@ -0,0 +1,6 @@
+#
+# Glassfish JSTL
+[name]
+jstl-impl
+
+# This file is empty as glassfish jstl is provided by glassfish jsp
diff --git a/jetty-start/src/test/resources/dist-home/modules/jsp.mod b/jetty-start/src/test/resources/dist-home/modules/jsp.mod
new file mode 100644
index 0000000000..bb31ca7599
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jsp.mod
@@ -0,0 +1,21 @@
+#
+# Jetty JSP Module
+#
+
+[depend]
+servlet
+annotations
+jsp-impl/${jsp-impl}-jsp
+
+[ini-template]
+# JSP Configuration
+
+# Select JSP implementation, choices are
+# glassfish : The reference implementation
+# default in jetty <= 9.1
+# apache : The apache version
+# default jetty >= 9.2
+jsp-impl=apache
+
+# To use a non-jdk compiler for JSP compilation when using glassfish uncomment next line
+# -Dorg.apache.jasper.compiler.disablejsr199=true
diff --git a/jetty-start/src/test/resources/dist-home/modules/jstl.mod b/jetty-start/src/test/resources/dist-home/modules/jstl.mod
new file mode 100644
index 0000000000..cb06244f5e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jstl.mod
@@ -0,0 +1,14 @@
+#
+# Jetty JSP Module
+#
+
+[depend]
+jsp
+jsp-impl/${jsp-impl}-jstl
+
+[ini-template]
+# JSTL Configuration
+# The glassfish jsp-impl includes JSTL by default and this module
+# is not required to activate it.
+# The apache jsp-impl does not include JSTL by default and this module
+# is required to put JSTL on the container classpath
diff --git a/jetty-start/src/test/resources/dist-home/modules/jvm.mod b/jetty-start/src/test/resources/dist-home/modules/jvm.mod
new file mode 100644
index 0000000000..195521c57f
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/jvm.mod
@@ -0,0 +1,23 @@
+[ini-template]
+## JVM Configuration
+## If JVM args are include in an ini file then --exec is needed
+## to start a new JVM from start.jar with the extra args.
+##
+## If you wish to avoid an extra JVM running, place JVM args
+## on the normal command line and do not use --exec
+# --exec
+# -Xmx2000m
+# -Xmn512m
+# -XX:+UseConcMarkSweepGC
+# -XX:ParallelCMSThreads=2
+# -XX:+CMSClassUnloadingEnabled
+# -XX:+UseCMSCompactAtFullCollection
+# -XX:CMSInitiatingOccupancyFraction=80
+# -verbose:gc
+# -XX:+PrintGCDateStamps
+# -XX:+PrintGCTimeStamps
+# -XX:+PrintGCDetails
+# -XX:+PrintTenuringDistribution
+# -XX:+PrintCommandLineFlags
+# -XX:+DisableExplicitGC
+# -Dorg.apache.jasper.compiler.disablejsr199=true
diff --git a/jetty-start/src/test/resources/dist-home/modules/logging.mod b/jetty-start/src/test/resources/dist-home/modules/logging.mod
new file mode 100644
index 0000000000..a39bfe4d23
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/logging.mod
@@ -0,0 +1,31 @@
+#
+# Jetty std err/out logging
+#
+
+[xml]
+etc/jetty-logging.xml
+
+[files]
+logs/
+
+[lib]
+lib/logging/**.jar
+resources/
+
+[ini-template]
+## Logging Configuration
+# Configure jetty logging for default internal behavior STDERR output
+# -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
+
+# Configure jetty logging for slf4j
+# -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
+
+# Configure jetty logging for java.util.logging
+# -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.JavaUtilLog
+
+# STDERR / STDOUT Logging
+# Number of days to retain logs
+# jetty.log.retain=90
+# Directory for logging output
+# Either a path relative to ${jetty.base} or an absolute path
+# jetty.logs=logs
diff --git a/jetty-start/src/test/resources/dist-home/modules/lowresources.mod b/jetty-start/src/test/resources/dist-home/modules/lowresources.mod
new file mode 100644
index 0000000000..99112d55fa
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/lowresources.mod
@@ -0,0 +1,18 @@
+#
+# Low Resources module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-lowresources.xml
+
+[ini-template]
+## Low Resources Configuration
+# lowresources.period=1050
+# lowresources.lowResourcesIdleTimeout=200
+# lowresources.monitorThreads=true
+# lowresources.maxConnections=0
+# lowresources.maxMemory=0
+# lowresources.maxLowResourcesTime=5000
diff --git a/jetty-start/src/test/resources/dist-home/modules/monitor.mod b/jetty-start/src/test/resources/dist-home/modules/monitor.mod
new file mode 100644
index 0000000000..09132c7b2c
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/monitor.mod
@@ -0,0 +1,13 @@
+#
+# Jetty Monitor module
+#
+
+[depend]
+server
+client
+
+[lib]
+lib/monitor/jetty-monitor-${jetty.version}.jar
+
+[xml]
+etc/jetty-monitor.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/plus.mod b/jetty-start/src/test/resources/dist-home/modules/plus.mod
new file mode 100644
index 0000000000..aac0f8f3ec
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/plus.mod
@@ -0,0 +1,15 @@
+#
+# Jetty Plus module
+#
+
+[depend]
+server
+security
+jndi
+webapp
+
+[lib]
+lib/jetty-plus-${jetty.version}.jar
+
+[xml]
+etc/jetty-plus.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_40.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_40.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_40.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_45.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_45.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_45.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_51.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_51.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_51.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_55.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_55.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_55.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_60.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_60.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_60.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_65.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_65.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_65.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_67.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_67.mod
new file mode 100644
index 0000000000..54d3731052
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_67.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.0.v20141016/alpn-boot-7.1.0.v20141016.jar|lib/alpn/alpn-boot-7.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_71.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_71.mod
new file mode 100644
index 0000000000..17fadeb61e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_71.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.1.v20141016/alpn-boot-7.1.1.v20141016.jar|lib/alpn/alpn-boot-7.1.1.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.1.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_72.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_72.mod
new file mode 100644
index 0000000000..17fadeb61e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.7.0_72.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/7.1.1.v20141016/alpn-boot-7.1.1.v20141016.jar|lib/alpn/alpn-boot-7.1.1.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-7.1.1.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0.mod
new file mode 100644
index 0000000000..a81732c453
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.0.v20141016/alpn-boot-8.1.0.v20141016.jar|lib/alpn/alpn-boot-8.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_05.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_05.mod
new file mode 100644
index 0000000000..a81732c453
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_05.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.0.v20141016/alpn-boot-8.1.0.v20141016.jar|lib/alpn/alpn-boot-8.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_11.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_11.mod
new file mode 100644
index 0000000000..a81732c453
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_11.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.0.v20141016/alpn-boot-8.1.0.v20141016.jar|lib/alpn/alpn-boot-8.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_20.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_20.mod
new file mode 100644
index 0000000000..a81732c453
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_20.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.0.v20141016/alpn-boot-8.1.0.v20141016.jar|lib/alpn/alpn-boot-8.1.0.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.0.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_25.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_25.mod
new file mode 100644
index 0000000000..26de933576
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn-1.8.0_25.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.1.v20141016/alpn-boot-8.1.1.v20141016.jar|lib/alpn/alpn-boot-8.1.1.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/alpn/alpn-boot-8.1.1.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn.mod
new file mode 100644
index 0000000000..d3e411867d
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/alpn.mod
@@ -0,0 +1,42 @@
+# ALPN is provided via a -Xbootclasspath that modifies the secure connections
+# in java to support the ALPN layer needed for SPDY (and eventually HTTP/2)
+#
+# This modification has a tight dependency on specific recent updates of
+# Java 1.7 and Java 1.8
+# (Java versions prior to 1.7u40 are not supported)
+#
+# The alpn protonego module will use an appropriate alpn-boot jar for your
+# specific version of Java.
+#
+# IMPORTANT: Versions of Java that exist after this module was created are
+# not guaranteed to work with existing alpn-boot jars, and might
+# need a new alpn-boot to be created / tested / deployed by the
+# Jetty project in order to provide support for these future
+# Java versions.
+#
+# All versions of alpn-boot can be found at
+# http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/
+
+[name]
+protonego-impl
+
+[depend]
+protonego-impl/alpn-${java.version}
+
+[lib]
+lib/jetty-alpn-client-${jetty.version}.jar
+lib/jetty-alpn-server-${jetty.version}.jar
+
+[xml]
+etc/protonego-alpn.xml
+
+[files]
+lib/
+lib/alpn/
+
+[license]
+ALPN is a hosted at github under the GPL v2 with ClassPath Exception.
+ALPN replaces/modifies OpenJDK classes in the java.sun.security.ssl package.
+http://github.com/jetty-project/jetty-alpn
+http://openjdk.java.net/legal/gplv2+ce.html
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_04.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_04.mod
new file mode 100644
index 0000000000..007570b675
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_04.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.0.v20120525/npn-boot-1.1.0.v20120525.jar|lib/npn/npn-boot-1.1.0.v20120525.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.0.v20120525.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_05.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_05.mod
new file mode 100644
index 0000000000..007570b675
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_05.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.0.v20120525/npn-boot-1.1.0.v20120525.jar|lib/npn/npn-boot-1.1.0.v20120525.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.0.v20120525.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_06.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_06.mod
new file mode 100644
index 0000000000..868a7a77fc
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_06.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.1.v20121030/npn-boot-1.1.1.v20121030.jar|lib/npn/npn-boot-1.1.1.v20121030.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.1.v20121030.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_07.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_07.mod
new file mode 100644
index 0000000000..868a7a77fc
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_07.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.1.v20121030/npn-boot-1.1.1.v20121030.jar|lib/npn/npn-boot-1.1.1.v20121030.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.1.v20121030.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_09.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_09.mod
new file mode 100644
index 0000000000..20c1db27bd
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_09.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.3.v20130313/npn-boot-1.1.3.v20130313.jar|lib/npn/npn-boot-1.1.3.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.3.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_10.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_10.mod
new file mode 100644
index 0000000000..20c1db27bd
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_10.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.3.v20130313/npn-boot-1.1.3.v20130313.jar|lib/npn/npn-boot-1.1.3.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.3.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_11.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_11.mod
new file mode 100644
index 0000000000..20c1db27bd
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_11.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.3.v20130313/npn-boot-1.1.3.v20130313.jar|lib/npn/npn-boot-1.1.3.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.3.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_13.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_13.mod
new file mode 100644
index 0000000000..1645a52dba
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_13.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.4.v20130313/npn-boot-1.1.4.v20130313.jar|lib/npn/npn-boot-1.1.4.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.4.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_15.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_15.mod
new file mode 100644
index 0000000000..73bc09007e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_15.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.5.v20130313/npn-boot-1.1.5.v20130313.jar|lib/npn/npn-boot-1.1.5.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.5.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_17.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_17.mod
new file mode 100644
index 0000000000..73bc09007e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_17.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.5.v20130313/npn-boot-1.1.5.v20130313.jar|lib/npn/npn-boot-1.1.5.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.5.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_21.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_21.mod
new file mode 100644
index 0000000000..73bc09007e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_21.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.5.v20130313/npn-boot-1.1.5.v20130313.jar|lib/npn/npn-boot-1.1.5.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.5.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_25.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_25.mod
new file mode 100644
index 0000000000..73bc09007e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_25.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.5.v20130313/npn-boot-1.1.5.v20130313.jar|lib/npn/npn-boot-1.1.5.v20130313.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.5.v20130313.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_40.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_40.mod
new file mode 100644
index 0000000000..465e6f034b
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_40.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.6.v20130911/npn-boot-1.1.6.v20130911.jar|lib/npn/npn-boot-1.1.6.v20130911.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.6.v20130911.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_45.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_45.mod
new file mode 100644
index 0000000000..465e6f034b
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_45.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.6.v20130911/npn-boot-1.1.6.v20130911.jar|lib/npn/npn-boot-1.1.6.v20130911.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.6.v20130911.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_51.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_51.mod
new file mode 100644
index 0000000000..465e6f034b
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_51.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.6.v20130911/npn-boot-1.1.6.v20130911.jar|lib/npn/npn-boot-1.1.6.v20130911.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.6.v20130911.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_55.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_55.mod
new file mode 100644
index 0000000000..5f8704d68a
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_55.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.8.v20141013/npn-boot-1.1.8.v20141013.jar|lib/npn/npn-boot-1.1.8.v20141013.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.8.v20141013.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_60.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_60.mod
new file mode 100644
index 0000000000..5f8704d68a
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_60.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.8.v20141013/npn-boot-1.1.8.v20141013.jar|lib/npn/npn-boot-1.1.8.v20141013.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.8.v20141013.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_65.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_65.mod
new file mode 100644
index 0000000000..5f8704d68a
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_65.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.8.v20141013/npn-boot-1.1.8.v20141013.jar|lib/npn/npn-boot-1.1.8.v20141013.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.8.v20141013.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_67.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_67.mod
new file mode 100644
index 0000000000..5f8704d68a
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_67.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.8.v20141013/npn-boot-1.1.8.v20141013.jar|lib/npn/npn-boot-1.1.8.v20141013.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.8.v20141013.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_71.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_71.mod
new file mode 100644
index 0000000000..851aca8727
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_71.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.9.v20141016/npn-boot-1.1.9.v20141016.jar|lib/npn/npn-boot-1.1.9.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.9.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_72.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_72.mod
new file mode 100644
index 0000000000..851aca8727
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn-1.7.0_72.mod
@@ -0,0 +1,8 @@
+[name]
+protonego-boot
+
+[files]
+http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.9.v20141016/npn-boot-1.1.9.v20141016.jar|lib/npn/npn-boot-1.1.9.v20141016.jar
+
+[exec]
+-Xbootclasspath/p:lib/npn/npn-boot-1.1.9.v20141016.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn.mod b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn.mod
new file mode 100644
index 0000000000..1a2c71d721
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego-impl/npn.mod
@@ -0,0 +1,37 @@
+# NPN is provided via a -Xbootclasspath that modifies the secure connections
+# in java to support the NPN layer needed for SPDY.
+#
+# This modification has a tight dependency on specific updates of Java 1.7.
+# (No support for Java 8 exists for npn / npn-boot, use alpn instead)
+#
+# The npn module will use an appropriate npn-boot jar for your specific
+# version of Java.
+#
+# IMPORTANT: Versions of Java that exist after this module was created are
+# not guaranteed to work with existing npn-boot jars, and might
+# need a new npn-boot to be created / tested / deployed by the
+# Jetty project in order to provide support for these future
+# Java versions.
+#
+# All versions of npn-boot can be found at
+# http://central.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/
+
+
+[name]
+protonego-impl
+
+[depend]
+protonego-impl/npn-${java.version}
+
+[xml]
+etc/protonego-npn.xml
+
+[files]
+lib/
+lib/npn/
+
+[license]
+NPN is a hosted at github under the GPL v2 with ClassPath Exception.
+NPN replaces/modifies OpenJDK classes in the java.sun.security.ssl package.
+http://github.com/jetty-project/jetty-npn
+http://openjdk.java.net/legal/gplv2+ce.html
diff --git a/jetty-start/src/test/resources/dist-home/modules/protonego.mod b/jetty-start/src/test/resources/dist-home/modules/protonego.mod
new file mode 100644
index 0000000000..fbf4d080e0
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/protonego.mod
@@ -0,0 +1,24 @@
+#
+# Protocol Negotiatin Selection Module
+#
+
+[depend]
+protonego-impl/${protonego}
+
+[ini-template]
+# Protocol Negotiation Implementation Selection
+# choices are:
+# 'npn' : original implementation for SPDY (now deprecated)
+# 'alpn' : replacement for NPN, in use by current SPDY implementations
+# and the future HTTP/2 spec
+# Note: java 1.8+ are ALPN only.
+protonego=alpn
+
+# Configuration for NPN
+# npn.protocols=spdy/3,http/1.1
+# npn.defaultProtocol=http/1.1
+
+# Configuration for ALPN
+# alpn.protocols=h2-14,http/1.1
+# alpn.defaultProtocol=http/1.1
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/proxy.mod b/jetty-start/src/test/resources/dist-home/modules/proxy.mod
new file mode 100644
index 0000000000..a879ae123e
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/proxy.mod
@@ -0,0 +1,22 @@
+#
+# Jetty Proxy module
+#
+
+[depend]
+servlet
+client
+
+[lib]
+lib/jetty-proxy-${jetty.version}.jar
+
+[xml]
+etc/jetty-proxy.xml
+
+[ini-template]
+## Proxy Configuration
+#jetty.proxy.servletClass=org.eclipse.jetty.proxy.ProxyServlet
+#jetty.proxy.servletMapping=/*
+#jetty.proxy.maxThreads=128
+#jetty.proxy.maxConnections=256
+#jetty.proxy.idleTimeout=30000
+#jetty.proxy.timeout=60000
diff --git a/jetty-start/src/test/resources/dist-home/modules/quickstart.mod b/jetty-start/src/test/resources/dist-home/modules/quickstart.mod
new file mode 100644
index 0000000000..89db9fd4fe
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/quickstart.mod
@@ -0,0 +1,12 @@
+#
+# Jetty Quickstart module
+#
+
+[depend]
+server
+plus
+annotations
+
+
+[lib]
+lib/jetty-quickstart-${jetty.version}.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/requestlog.mod b/jetty-start/src/test/resources/dist-home/modules/requestlog.mod
new file mode 100644
index 0000000000..f5e0614eb4
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/requestlog.mod
@@ -0,0 +1,30 @@
+#
+# Request Log module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-requestlog.xml
+
+[files]
+logs/
+
+[ini-template]
+## Request Log Configuration
+# Filename for Request Log output (relative to jetty.base)
+# requestlog.filename=/logs/yyyy_mm_dd.request.log
+# Date format for rollovered files (uses SimpleDateFormat syntax)
+# requestlog.filenameDateFormat=yyyy_MM_dd
+# How many days to retain the logs
+# requestlog.retain=90
+# If an existing log with the same name is found, just append to it
+# requestlog.append=true
+# Use the extended log output
+# requestlog.extended=true
+# Log http cookie information as well
+# requestlog.cookies=true
+# Set the log output timezone
+# requestlog.timezone=GMT
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/resources.mod b/jetty-start/src/test/resources/dist-home/modules/resources.mod
new file mode 100644
index 0000000000..8647d81325
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/resources.mod
@@ -0,0 +1,10 @@
+#
+# Module to add resources directory to classpath
+#
+
+[lib]
+resources/
+
+[files]
+resources/
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/rewrite.mod b/jetty-start/src/test/resources/dist-home/modules/rewrite.mod
new file mode 100644
index 0000000000..d2e00c8e89
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/rewrite.mod
@@ -0,0 +1,12 @@
+#
+# Jetty Rewrite module
+#
+
+[depend]
+server
+
+[lib]
+lib/jetty-rewrite-${jetty.version}.jar
+
+[xml]
+etc/jetty-rewrite.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/security.mod b/jetty-start/src/test/resources/dist-home/modules/security.mod
new file mode 100644
index 0000000000..ba3163275f
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/security.mod
@@ -0,0 +1,9 @@
+#
+# Jetty Security Module
+#
+
+[depend]
+server
+
+[lib]
+lib/jetty-security-${jetty.version}.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/server.mod b/jetty-start/src/test/resources/dist-home/modules/server.mod
new file mode 100644
index 0000000000..3cdac3578b
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/server.mod
@@ -0,0 +1,49 @@
+#
+# Base Server Module
+#
+
+[optional]
+jvm
+ext
+resources
+
+[lib]
+lib/servlet-api-3.1.jar
+lib/jetty-schemas-3.1.jar
+lib/jetty-http-${jetty.version}.jar
+lib/jetty-server-${jetty.version}.jar
+lib/jetty-xml-${jetty.version}.jar
+lib/jetty-util-${jetty.version}.jar
+lib/jetty-io-${jetty.version}.jar
+
+[xml]
+etc/jetty.xml
+
+[ini-template]
+##
+## Server Threading Configuration
+##
+# minimum number of threads
+threads.min=10
+# maximum number of threads
+threads.max=200
+# thread idle timeout in milliseconds
+threads.timeout=60000
+# buffer size for output
+jetty.output.buffer.size=32768
+# request header buffer size
+jetty.request.header.size=8192
+# response header buffer size
+jetty.response.header.size=8192
+# should jetty send the server version header?
+jetty.send.server.version=true
+# should jetty send the date header?
+jetty.send.date.header=false
+# What host to listen on (leave commented to listen on all interfaces)
+#jetty.host=myhost.com
+# Dump the state of the Jetty server, components, and webapps after startup
+jetty.dump.start=false
+# Dump the state of the Jetty server, before stop
+jetty.dump.stop=false
+
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/servlet.mod b/jetty-start/src/test/resources/dist-home/modules/servlet.mod
new file mode 100644
index 0000000000..fdb65c57a1
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/servlet.mod
@@ -0,0 +1,9 @@
+#
+# Jetty Servlet Module
+#
+
+[depend]
+server
+
+[lib]
+lib/jetty-servlet-${jetty.version}.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/servlets.mod b/jetty-start/src/test/resources/dist-home/modules/servlets.mod
new file mode 100644
index 0000000000..e8724b87d7
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/servlets.mod
@@ -0,0 +1,10 @@
+#
+# Jetty Servlets Module
+#
+
+[depend]
+servlet
+
+[lib]
+lib/jetty-servlets-${jetty.version}.jar
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/setuid.mod b/jetty-start/src/test/resources/dist-home/modules/setuid.mod
new file mode 100644
index 0000000000..64c9e23c9a
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/setuid.mod
@@ -0,0 +1,19 @@
+#
+# Set UID Feature
+#
+
+[depend]
+server
+
+[lib]
+lib/setuid/jetty-setuid-java-1.0.1.jar
+
+[xml]
+etc/jetty-setuid.xml
+
+[ini-template]
+## SetUID Configuration
+# jetty.startServerAsPrivileged=false
+# jetty.username=jetty
+# jetty.groupname=jetty
+# jetty.umask=002
diff --git a/jetty-start/src/test/resources/dist-home/modules/spdy.mod b/jetty-start/src/test/resources/dist-home/modules/spdy.mod
new file mode 100644
index 0000000000..cf79dfa0f2
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/spdy.mod
@@ -0,0 +1,26 @@
+#
+# SPDY Support Module
+#
+
+[depend]
+ssl
+protonego
+
+[lib]
+lib/spdy/*.jar
+
+[xml]
+etc/jetty-ssl.xml
+etc/jetty-spdy.xml
+
+[ini-template]
+## SPDY Configuration
+
+# Port for SPDY connections
+spdy.port=8443
+
+# SPDY idle timeout in milliseconds
+spdy.timeout=30000
+
+# Initial Window Size for SPDY
+#spdy.initialWindowSize=65536
diff --git a/jetty-start/src/test/resources/dist-home/modules/spring.mod b/jetty-start/src/test/resources/dist-home/modules/spring.mod
new file mode 100644
index 0000000000..444afb2f93
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/spring.mod
@@ -0,0 +1,16 @@
+#
+# Spring
+#
+[name]
+spring
+
+[depend]
+server
+
+[lib]
+lib/spring/*.jar
+
+[ini-template]
+## See http://www.eclipse.org/jetty/documentation/current/frameworks.html#framework-jetty-spring
+## for information on how to complete spring configuration
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/ssl.mod b/jetty-start/src/test/resources/dist-home/modules/ssl.mod
new file mode 100644
index 0000000000..ef471929f3
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/ssl.mod
@@ -0,0 +1,40 @@
+#
+# SSL Keystore module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-ssl.xml
+
+[files]
+http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/keystore|etc/keystore
+
+[ini-template]
+### SSL Keystore Configuration
+# define the port to use for secure redirection
+jetty.secure.port=8443
+
+## Setup a demonstration keystore and truststore
+jetty.keystore=etc/keystore
+jetty.truststore=etc/keystore
+
+## Set the demonstration passwords.
+## Note that OBF passwords are not secure, just protected from casual observation
+## See http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html
+jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
+jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g
+jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
+
+### Set the client auth behavior
+## Set to true if client certificate authentication is required
+# jetty.ssl.needClientAuth=true
+## Set to true if client certificate authentication is desired
+# jetty.ssl.wantClientAuth=true
+
+## Parameters to control the number and priority of acceptors and selectors
+# ssl.selectors=1
+# ssl.acceptors=1
+# ssl.selectorPriorityDelta=0
+# ssl.acceptorPriorityDelta=0
diff --git a/jetty-start/src/test/resources/dist-home/modules/stats.mod b/jetty-start/src/test/resources/dist-home/modules/stats.mod
new file mode 100644
index 0000000000..0922469cdf
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/stats.mod
@@ -0,0 +1,9 @@
+#
+# Stats module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-stats.xml
diff --git a/jetty-start/src/test/resources/dist-home/modules/webapp.mod b/jetty-start/src/test/resources/dist-home/modules/webapp.mod
new file mode 100644
index 0000000000..6bb37ef2ef
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/webapp.mod
@@ -0,0 +1,10 @@
+#
+# WebApp Support Module
+#
+
+[depend]
+servlet
+security
+
+[lib]
+lib/jetty-webapp-${jetty.version}.jar
diff --git a/jetty-start/src/test/resources/dist-home/modules/websocket.mod b/jetty-start/src/test/resources/dist-home/modules/websocket.mod
new file mode 100644
index 0000000000..e866b17989
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/websocket.mod
@@ -0,0 +1,12 @@
+#
+# WebSocket Module
+#
+
+[depend]
+# javax.websocket needs annotations
+annotations
+
+[lib]
+lib/websocket/*.jar
+
+
diff --git a/jetty-start/src/test/resources/dist-home/modules/xinetd.mod b/jetty-start/src/test/resources/dist-home/modules/xinetd.mod
new file mode 100644
index 0000000000..e53618e489
--- /dev/null
+++ b/jetty-start/src/test/resources/dist-home/modules/xinetd.mod
@@ -0,0 +1,17 @@
+#
+# Xinetd module
+#
+
+[depend]
+server
+
+[xml]
+etc/jetty-xinetd.xml
+
+[ini-template]
+## Xinetd Configuration
+## See ${jetty.home}/etc/jetty-xinetd.xml for example service entry
+jetty.xinetd.idleTimeout=300000
+jetty.xinetd.acceptors=2
+jetty.xinetd.statsOn=false
+

Back to the top