<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- 
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 -->

<document>

  <properties>
    <title>Properties</title>
    <author email="evenisse@ifrance.com">Emmanuel Venisse</author>
  </properties>

  <body>
    <section name="JNLP settings">
      <table>
        <tr><th>Property</th><th>Optional?</th><th>Description</th><th>Default</th></tr>
        <tr>
          <td>maven.jnlp.dir</td>
          <td>Yes</td>
          <td>
            Root of generated .jnlp file and signing jars.
          </td>
          <td>
            ${maven.build.dir}/jnlp
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.spec</td>
          <td>Yes</td>
          <td>
            The versions of the specification that this JNLP file required.
          </td>
          <td>
            1.0+
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.http.codebase</td>
          <td>Yes</td>
          <td>
            The jnlp root element on web server.
          </td>
          <td>
            ${pom.url}
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.title</td>
          <td>Yes</td>
          <td>
            The name of the application.
          </td>
          <td>
            ${pom.name}
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.vendor</td>
          <td>Yes</td>
          <td>
            The name of the application.
          </td>
          <td>The name of the vendor of the application.</td>
        </tr>
        <tr>
          <td>maven.jnlp.homepage</td>
          <td>Yes</td>
          <td>
            URL locating the home page for the application. It can be used
            by the JNLP Client to point the user to a Web page where they
            can find more information about the application.
          </td>
          <td>
            index.html
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.icon</td>
          <td>Yes</td>
          <td>
            URL locating the icon of the application.
            The icon can be used by a JNLP Client to identify the application to the user.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.icon.splash</td>
          <td>Yes</td>
          <td>
            URL locating the splash screen icon of the application .
            The icon can be used by a JNLP Client to customise a splash screen to the user.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.description</td>
          <td>Yes</td>
          <td>
            The default description of the application.
            All descriptions contains plain text. No formatting, such as, e.g.,
            HTML tags are supported.
          </td>
          <td>
            ${pom.description}
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.description.one-line</td>
          <td>Yes</td>
          <td>
            If a reference to the application is going to appear in one row
            in a list or a table, this description will be used.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.description.short</td>
          <td>Yes</td>
          <td>
            The short description of the application.
            If a reference to the application is going to be displayed in a
            situation where there is room for a paragraph, this description is used.
          </td>
          <td>
            ${pom.shortDescription}
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.description.tooltip</td>
          <td>Yes</td>
          <td>
            A description of the application intended to be used as a tooltip.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.offline.allowed</td>
          <td>Yes</td>
          <td>
            The optional offline-allowed element indicates if the application can work
            while the client system is disconnected from the network. The default is
            that an application only works if the client system is online.
          </td>
          <td>
            false
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.permission</td>
          <td>Yes</td>
          <td>
            Possible values : all or j2ee.
            The specification specifies two trusted environments, the all-permissions
            environment and an environment that meets the security specifications of
            the J2EE Application Client environment. Both of these environments provide
            unrestricted access to the network and local disk. Thus, an application can
            intentionally or unintentionally harm the local system. An application must
            only be launched if it is trusted.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.j2se.version</td>
          <td>Yes</td>
          <td>
            Describes supported version of the JRE.
          </td>
          <td>
            1.4
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.j2se.heapsize.initial</td>
          <td>Yes</td>
          <td>
            Indicates the initial size of the Java heap. The modifiers m and k can be used
            for megabytes and kilobytes, respectively. For example, "128m" will be the same
            as specifying "134217728" (128*1024*1024). The modifiers are not case-sensitive.
          </td>
          <td>
            32m
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.j2se.heapsize.max</td>
          <td>Yes</td>
          <td>
            Indicates the maximum size of the Java heap. The modifiers m and k can be
            used for megabytes and kilobytes, respectively. For example, "128m" will
            be the same as specifying "134217728" (128*1024*1024). The modifiers are
            not case-sensitive.
          </td>
          <td>
            128m
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.isapplet</td>
          <td>Yes</td>
          <td>
            Defines if JNLP file describes an applet.
          </td>
          <td>
            false
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.applet.name</td>
          <td>Yes</td>
          <td>
            The applet name.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.isinstaller</td>
          <td>Yes</td>
          <td>
            Defines if JNLP file describes an installer.
          </td>
          <td>
            false
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.iscomponent</td>
          <td>Yes</td>
          <td>
            Defines if JNLP file describes a component.
          </td>
          <td>
            false
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.mainclass</td>
          <td>Yes</td>
          <td>
            The main class for the application or the applet.
            If this is not specified, then the Main-Class manifest entry for the main
            JAR file is used. If neither is specified, then the launch must be aborted.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.mainclass.arguments</td>
          <td>Yes</td>
          <td>
            The argument list for the main class. All arguments are separated by a space.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.usejarversions</td>
          <td>Yes</td>
          <td>
            Generate jar references in jnlp file with their associated version numbers. 
            Generate a version.xml file to map these version numbers to the actual jar files.
          </td>
          <td>false</td>
        </tr>
        <tr>
          <td>maven.jnlp.cert.version</td>
          <td>Yes</td>
          <td>
            A version string to be appended to each dependency version when generating
            version.xml.  (This is only useful if maven.jnlp.usejarversions is set to true).
            This comes in handy, when your code signing certificate expires and is renewed.  
            Java Web Start requires that ALL jars be signed with the same certificate.  When 
            renewing a certificate you must change all of the version numbers of all jars, so 
            that the JWS client will re-download the jars that haven't changed, but have only 
            been re-signed by the new key.  With this property, when you get a renewed key,
            all you have to do, is update the maven.jnlp.cert.version string to a new value, 
            and the new version.xml will have all new version strings for ALL jars.
          </td>
          <td>false</td>
        </tr>
      </table>
    </section>
    <section name="Keystore settings">
      <table>
        <tr><th>Property</th><th>Description</th><th>See</th></tr>
        <tr>
          <td>maven.jnlp.signjar.store</td>
          <td>Yes</td>
          <td>
            The keystore location. It's necessary if you want sign your jars.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.storepass</td>
          <td>Yes</td>
          <td>
            The password for keystore integrity. Must be at least 6 characters long.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.alias</td>
          <td>Yes</td>
          <td>
            The alias for the keystore.
          </td>
          <td>
            ${pom.artifactId}
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.validity</td>
          <td>Yes</td>
          <td>
            Indicates how many days certificate is valid.
          </td>
          <td>
            720
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.dname.cn</td>
          <td>Yes</td>
          <td>
            The common name of distinguished name.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.dname.ou</td>
          <td>Yes</td>
          <td>
            The organization unit of distinguished name.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.dname.o</td>
          <td>Yes</td>
          <td>
            The organization of distinguished name.
          </td>
          <td>
            ${pom.organization.name}
          </td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.dname.l</td>
          <td>Yes</td>
          <td>
            The locality of distinguished name.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.dname.s</td>
          <td>Yes</td>
          <td>
            The street of distinguished name.
          </td>
          <td></td>
        </tr>
        <tr>
          <td>maven.jnlp.signjar.dname.c</td>
          <td>Yes</td>
          <td>
            The country of distinguished name.
          </td>
          <td></td>
        </tr>
      </table>
    </section>
    <section name="Including Jars in JNLP distribution">
      <p>
        You must tell Maven what jars you want included in the jnlp distribution.
        This is achieved by specifying meta-information in the POM, using the
        following syntax for jar files :
      </p>

  <source><![CDATA[
    <dependency>
      <id>jarid</id>
      <version>jarversion</version>
      <properties>
        <jnlp.jar>true</jnlp.jar>
      </properties>
    </dependency>
  ]]></source>

      <p>
      Or for native jar files :
      </p>

  <source><![CDATA[
    <dependency>
      <id>jarid</id>
      <version>jarversion</version>
      <properties>
        <jnlp.native.jar>true</jnlp.native.jar>
      </properties>
    </dependency>
  ]]></source>
    </section>
    <section name="How to define the main jar?">
      <p>
        When you define the main class of your application, you must define the jar
        that contains the main class. This is achieved by specifying meta-information
        in the pom, using the following syntax for jar files :
      </p>

  <source><![CDATA[
    <dependency>
      <id>jarid</id>
      <version>jarversion</version>
      <properties>
        <jnlp.jar>true</jnlp.jar>
        <jnlp.main.jar>true</jnlp.main.jar>
      </properties>
    </dependency>
  ]]></source>

      <p>
        If no jars contains this tag (jnlp.main.jar), it's the project jar which will be used.
      </p>
    </section>
  </body>
</document>
