# Configuration Properties
Following is the list of configuration properties for generating your project from the TrueLicense Maven Archetype in alphabetic order. Please check the Example Configurations page to see how to apply these properties.
TIP
Property names and values are case-sensitive.
WARNING
If you want to change the value of these properties, then it’s generally necessary to regenerate the project from the TrueLicense Maven Archetype.
WARNING
Even if all their property values are equal, the license keys of any two generated projects will not be compatible unless both projects also share the following key store files (see below for default values):
keygen/src/main/resources/${privateKeyStoreFile}keymgr/src/main/resources/${ftpKeyStoreFile}keymgr/src/main/resources/${publicKeyStoreFile}
# Required Properties
# artifactId
- Description
The Maven artifact ID of the root POM (opens new window) for the generated project. This could match the name of your software product, e.g.
product, or be generic, e.g.license.- Type
A Maven artifact ID must not contain spaces and should consist of only lower-case characters - see Maven Coordinates (opens new window).
# company
- Description
The display name of your company, e.g.
Company Inc..- Type
# groupId
- Description
The Maven group ID for the generated project. This could be the reversed domain name for your company plus the name of the software product.
- Type
A Maven group ID must not contain spaces and should consist of only lower-case characters - see Maven Coordinates (opens new window).
# password
- Description
The common password for accessing keystores and encrypting license keys.
- Type
A string of at least eight characters which must contain letters and digits. You should consider this to be the bare minimum. Choosing a longer password with additional punctuation characters significantly improves the security level of your licensing schema.
# subject
- Description
The license management subject. The value of this property gets stored in the generated license keys and is used for validation. A
global.namespace.truelicense.api.LicenseValidationExceptiongets thrown if the validation fails. It's best practice including the name of your software product, and a version number range for which the license keys are valid, e.g.Product 1orProduct 1.X. The license validation step compares the entire string, so the version number format doesn't matter. If you want to obsolete existing license keys in a future release then all you need to do is to change the value of this property, e.g. toProduct 2orProduct 2.X.- Type
# version
- Description
The Maven version for the generated project. This should match the version of your software product.
- Type
# Optional Properties
# artifactName
- Description
The display name of the parent POM for the generated project. This could be the name of your software product, e.g.
Product, or be generic, e.g.License.- Type
- Default Value
-
# customClasspathScope
- Description
Declares the scope of the class path for the custom classes referenced by the properties with the name pattern
*Class.- Type
Enter
compileto declare that custom classes are available on the class path at compile time. The advantage is that the classes can be safely included in the byte code obfuscation process. The disadvantage is that the classes need to be known at compile time so that manual editing of the dependencies in the generated POM files for the Key Generator or Key Manager module may be necessary.Enter
runtimeto declare that custom classes are available on the class path at runtime only. The advantage is that the classes don't need to be known at compile time so that manual editing of the generated POM files should not be necessary. The disadvantage is that the classes need to be generally excluded from the byte code obfuscation process, e.g. for the Key Manager module. This is considered to be a security leak and therefore should be generally avoided. However, this is not true for ProGuard (opens new window): TrueLicense generates code for dynamic class loading which is correctly recognized and obfuscated by ProGuard so that it's safe to use this option with ProGuard.- Default Value
compile
# disableWizard
- Description
Whether the Swing wizard dialog in the Key Manager module should be disabled or not. Enter
trueto remove the dependency on the TrueLicense Swing module and reduce the code size.- Type
- Default Value
false
# editions
- Description
A space separated list of edition names, ordered from supersets to subsets, e.g.
enterprise standard. Each name must be a valid Java identifier name and should be camel-cased with a lower-case initial character. The nameseditionandftpare reserved for internal use.- Type
A space separated list of valid identifiers in the Java language.
- Default Value
standard
# freeTrialPeriod
- Description
The number of days for an auto-generated Free Trial Period (FTP). Needs to be a non-negative integer, e.g.
30. Specify0to disable the auto-generation of FTP license keys.- Type
- Default Value
0
# ftpKeyStoreFile
- Description
The path of the FTP keystore file in the Key Manager module relative to the base path
keymgr/src/main/resources/. This property gets ignored if the property freeTrialPeriod is set to0. Otherwise, if this property is set to-, then it gets overridden by the property publicKeyStoreFile.- Type
- Default Value
-
# ftpSecretMarkerClass
- Description
A fully qualified binary class name which declares the user or system preferences node to use for storing the auto-generated FTP license key. This property gets ignored if the property freeTrialPeriod is set to
0. Otherwise, the package name of the referenced class needs to be kept secret because removing the FTP license key from the preferences' node triggers the auto-generation of another FTP license key! The named class gets dynamically loaded at run time, so it doesn't have to be on the compile-time class path of the Key Manager module.- Type
- Default Value
-
# hideUninstallAction
- Description
Whether the Swing wizard dialog in the Key Manager module should hide the action for uninstalling the license key or not.
- Type
- Default Value
false
# keyGenAuthorization
- Description
An expression of the type
global.namespace.truelicense.api.LicenseManagementAuthorizationfor use in the Key Generator module. Enter-to use no license authorization.- Type
- Default Value
-
# keyGenValidation
- Description
An expression of the type
global.namespace.truelicense.api.LicenseValidationfor use in the Key Generator module. Enter-to use only the built-in license validation function.- Type
- Default Value
-
# keyGenValidationComposition
- Description
Selects the composition strategy for license validation functions in the Key Generator module. This property gets ignored if the property keyGenValidation is set to
-.- Type
Enter
overrideto apply only the custom function. Enterdecorateto apply both the custom function and the built-in function.- Default Value
decorate
# keyMgrAuthorization
- Description
An expression of the type
global.namespace.truelicense.api.LicenseManagementAuthorizationfor use in the Key Manager module. Enter-to use no license authorization.- Type
- Default Value
-
# keyMgrClock
- Description
An expression of the type
java.time.Clockfor use in the Key Manager module. Enter-to use the system clock.- Type
- Default Value
-
# keyMgrValidation
- Description
An expression of the type
global.namespace.truelicense.api.LicenseValidationfor use in the Key Manager module. Enter-to use only the built-in license validation function.- Type
- Default Value
-
# keyMgrValidationComposition
- Description
Selects the composition strategy for license validation functions in the Key Manager module. This property gets ignored if the property keyMgrValidation is set to
-.- Type
Enter
overrideto apply only the custom function. Enterdecorateto apply both the custom function and the built-in function.- Default Value
decorate
# keyPairAlgorithm
- Description
The algorithm to use when generating key pairs in the keystore files on the first build. This property gets ignored if the keystore files already exist. The algorithm needs to be implemented by some security provider which is installed in the JRE.
- Type
The name of a
KeyPairGeneratoralgorithm (opens new window):DiffieHellmanDSAECRSARSASSA-PSSX25519(requires Java 11 or later)X448(requires Java 11 or later)XDH(requires Java 11 or later)
- Default Value
DSA
# keyPairSize
- Description
The key size in bits when generating key pairs in the keystore files at the first build. This property gets ignored if the keystore files already exist. Otherwise, if it's
0, then the property gets overridden by the keytool. Otherwise, the bit size needs to correspond to the property keyPairAlgorithm and be implemented by some security provider which is installed in the JRE.- Type
- Default Value
0
# keyStoreType
- Description
The default keystore type. The type needs to be implemented by some security provider which is installed in the JRE.
- Type
The name of a
KeyStoretype (opens new window):DKSJCEKSJKSPKCS11PKCS12
- Default Value
If the property licenseKeyFormat is set to
V1, then this property gets set toJKS, or else if the property licenseKeyFormat starts withV2/, then it gets set toJCEKS, or else toPKCS12.
# licenseKeyFormat
- Description
The format of the license keys. Enter
V4to benefit from the latest cryptographic standards. It was introduced in TrueLicense 4 and depends on the Jackson JSON Processor. EnterV2/JSONonly if you need to retain compatibility with this license key format. It was introduced in TrueLicense 2 and depends on the Jackson JSON Processor. EnterV2/XMLonly if you need to retain compatibility with this license key format. It was introduced in TrueLicense 2 and depends on the JAXB API and runtime. EnterV1only if you need to retain compatibility with this license key format. It was introduced in TrueLicense 1.- Type
One of:
V1V2/XMLV2/JSONV4
- Default Value
V4
# package
- Description
The base package name of the generated project. It's best practice evaluating the expression
${groupId}or${groupId}.${artifactId}if this results in a valid package name.- Type
- Default Value
The value of the property groupId.
# pbeAlgorithm
- Description
The algorithm for the password based encryption. The algorithm needs to be implemented by some security provider which is installed in the JRE.
- Type
The name of a
Cipheralgorithm (opens new window):PBEWithMD5AndDESPBEWithMD5AndTripleDESPBEWithSHA1AndDESedePBEWithSHA1AndRC2_40PBEWithSHA1AndRC2_128PBEWithSHA1AndRC4_40PBEWithSHA1AndRC4_128PBEWithHmacSHA1AndAES_128PBEWithHmacSHA224AndAES_128PBEWithHmacSHA256AndAES_128PBEWithHmacSHA384AndAES_128PBEWithHmacSHA512AndAES_128PBEWithHmacSHA1AndAES_256PBEWithHmacSHA224AndAES_256PBEWithHmacSHA256AndAES_256PBEWithHmacSHA384AndAES_256PBEWithHmacSHA512AndAES_256
- Default Value
If the property licenseKeyFormat is set to
V1, then this property gets set toPBEWithMD5AndDES, or else if the property licenseKeyFormat starts withV2/, then it gets set toPBEWithSHA1AndDESede, or else toPBEWithHmacSHA256AndAES_128.
# preferencesType
- Description
The type of the preferences nodes where to install license keys. Note that
systemgenerally requires the JVM to be run with administrator privileges or otherwise ajava.util.prefs.BackingStoreExceptionmay get thrown by the generated integration tests.- Type
One of:
systemuser
- Default Value
user
# privateKeyStoreFile
- Description
The path of the private keystore file in the Key Generator module relative to the base path
keygen/src/main/resources/.- Type
- Default Value
private.ks
# publicKeyStoreFile
- Description
The path of the public keystore file in the Key Manager module relative to the base path
keymgr/src/main/resources/.- Type
- Default Value
public.ks
# signatureAlgorithm
- Description
The algorithm to use when signing a generated key pair in a keystore file at the first build. This property gets ignored if the keystore file already exists. The signature algorithm needs to correspond to the property keyPairAlgorithm and be implemented by some security provider which is installed in the JRE.
- Type
The name of a
Signaturealgorithm (opens new window):NONEwithDSASHA1withDSASHA224withDSASHA256withDSASHA384withDSASHA512withDSASHA3-224withDSASHA3-256withDSASHA3-384withDSASHA3-512withDSANONEwithDSAinP1363FormatSHA1withDSAinP1363FormatSHA224withDSAinP1363FormatSHA256withDSAinP1363FormatNONEwithECDSASHA1withECDSASHA224withECDSASHA256withECDSASHA384withECDSASHA512withECDSASHA3-224withECDSASHA3-256withECDSASHA3-384withECDSASHA3-512withECDSANONEwithECDSAinP1363FormatSHA1withECDSAinP1363FormatSHA224withECDSAinP1363FormatSHA256withECDSAinP1363FormatSHA384withECDSAinP1363FormatSHA512withECDSAinP1363FormatNONEwithRSAMD2withRSAMD5withRSASHA1withRSASHA224withRSASHA256withRSASHA384withRSASHA512withRSASHA512/224withRSASHA512/256withRSASHA3-224withRSASHA3-256withRSASHA3-384withRSASHA3-512withRSARSASSA-PSS
- Default Value
The property value gets determined by the keytool.
# trueLicenseVersion
- Description
The TrueLicense version to use.
- Type
- Default Value
The version of the latest release as of the release date of the TrueLicense Maven Archetype.
# verboseCli
- Description
Whether the command line interface (CLI) should write debugging information to the standard error stream by default or not.
- Type
- Default Value
false