//  ========================================================================
//  Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd.
//  ========================================================================
//  All rights reserved. This program and the accompanying materials
//  are made available under the terms of the Eclipse Public License v1.0
//  and Apache License v2.0 which accompanies this distribution.
//
//      The Eclipse Public License is available at
//      http://www.eclipse.org/legal/epl-v10.html
//
//      The Apache License v2.0 is available at
//      http://www.opensource.org/licenses/apache2.0.php
//
//  You may elect to redistribute this code under either of these licenses.
//  ========================================================================

[source, screen, subs="{sub-order}"]
....
[mybase]$ java -jar /opt/jetty-distribution/start.jar --list-config

Java Environment:
-----------------
 java.home = /lib/jvm/jdk-8u31-x64/jre
 java.vm.vendor = Oracle Corporation
 java.vm.version = 25.31-b07
 java.vm.name = Java HotSpot(TM) 64-Bit Server VM
 java.vm.info = mixed mode
 java.runtime.name = Java(TM) SE Runtime Environment
 java.runtime.version = 1.8.0_31-b13
 java.io.tmpdir = /tmp
 user.dir = /home/jetty/mybase
 user.language = en
 user.country = US

Jetty Environment:
-----------------
 jetty.version = {VERSION}
 jetty.home = /opt/jetty-distribution
 jetty.base = /home/jetty/mybase

Config Search Order:
--------------------
 <command-line>
 ${jetty.base} -> /home/jetty/mybase
 ${jetty.home} -> /opt/jetty-distribution


JVM Arguments:
--------------
 (no jvm args specified)

System Properties:
------------------
 (no system properties specified)

Properties:
-----------
 jetty.http.port = 8080

Jetty Server Classpath:
-----------------------
Version Information on 11 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
      changes to the --module=name command line options will be reflected here.
 0:                    3.1.0 | ${jetty.home}/lib/servlet-api-3.1.jar
 1:                 3.1.0.M0 | ${jetty.home}/lib/jetty-schemas-3.1.jar
 2:           {VERSION} | ${jetty.home}/lib/jetty-http-{VERSION}.jar
 3:           {VERSION} | ${jetty.home}/lib/jetty-server-{VERSION}.jar
 4:           {VERSION} | ${jetty.home}/lib/jetty-xml-{VERSION}.jar
 5:           {VERSION} | ${jetty.home}/lib/jetty-util-{VERSION}.jar
 6:           {VERSION} | ${jetty.home}/lib/jetty-io-{VERSION}.jar
 7:           {VERSION} | ${jetty.home}/lib/jetty-security-{VERSION}.jar
 8:           {VERSION} | ${jetty.home}/lib/jetty-servlet-{VERSION}.jar
 9:           {VERSION} | ${jetty.home}/lib/jetty-webapp-{VERSION}.jar
10:           {VERSION} | ${jetty.home}/lib/jetty-deploy-{VERSION}.jar

Jetty Active XMLs:
------------------
 ${jetty.home}/etc/jetty.xml
 ${jetty.home}/etc/jetty-http.xml
 ${jetty.home}/etc/jetty-deploy.xml
....
