A bnd instruction is a property that starts with a minus sign (‘-‘). An instruction instructs bndlib to do something, in general providing parameters to the code. All instructions in bndlib are listed later in this page.
All instructions are listed on the Instruction index
Syntax
Almost all bndlib instructions follow the general OSGi syntax. However, the bndlib syntax is in general a bit more relaxed, for example you can use either single quotes (‘’’) or double quotes (‘”’) while OSGi only allows double quotes. Dangling comma’s and some other not exactly correct headers are accepted by bndlib without complaining. Values without quotes are accepted as long as they cannot confuse the general syntax. For example, a value like 1.20 does not have to be quoted since the period (‘.’) cannot confuse the parser on that place, however, a value like [1.3,4) must be quoted since it contains a comma.
In this mannual we adhere to the same conventions as the OSGi specification. This is mostly reflected in the names for the terminals in the syntax specifications. As a reminder we repeat the syntax rules and common terminals:
*– Repetition of the previous element zero or more times, e.g.( ',' element ) *+– Repetition one or more times?– Previous element is optional( ... )– Grouping- ‘…’ – Literal
|– Or[...]– Set (one of)..– Range<...>– Externally defined token, followed with a description~– Not, negation
The following terminals are pre-defined:
ws ::= <see Character.isWhitespace>
digit ::= [0..9]
alpha ::= [a..zA..Z]
alphanum ::= alpha | digit
token ::= ( alphanum | '_' | '-' )+
number ::= digit+
jletter ::= <see [JSL][1] for JavaLetter>
jletterordigit ::= <See [JLS][1] for JavaLetterOrDigit >
qname ::= <See [JLS][1] for fully qualified class name >
identifier ::= jletter jletterordigit *
extended ::= ( alphanum | '_' | '-' | '.' )+
quoted-string-d ::= '"' ( ~["\#x0D#x0A#x00] | '\"'|'\')* '"'
quoted-string-s ::= ''' ( ~['\#x0D#x0A#x00] | '\''|'\')* '''
quoted-string ::= quoted-string-s | quoted-string-d
special-chars ::= ~["\#x0D#x0A#x00:=;,<See [JLS][1] for whitespace>]
path ::= special-chars+ | quoted-string
value ::= quoted-string | path
argument ::= extended | quoted-string
parameter ::= directive | attribute
directive ::= extended ':=' argument
attribute ::= extended '=' argument
parameters ::= parameter ( ',' parameter ) *
unique-name ::= identifier ( '.' identifier )*
symbolic-name ::= token('.'token)*
package-name ::= unique-name
version ::= major( '.' minor ( '.' micro ( '.' qualifier )? )? )?
major ::= number
minor ::= number
micro ::= number
qualifier ::= ( alphanum | '_' | '-' )+
version-range ::= interval | atleast
interval ::= ( '[' | '(' ) floor ',' ceiling ( ']' | ')' )
atleast ::= version
floor ::= version
ceiling ::= version
White spaces between terminals are ignored unless specifically noted. The only exception is the directive, a directive must be connected to the colon (‘:’). That is, bndlib stores attributes and directives in the same map and distinguishes them by the fact that directives end in a colon and attributes do not. For example, using a directive like foo; path := https://www.xyz.com will not work correctly because the path : is not a valid attribute nor directive name. Any value that contains a space, a tab, a comma, colon, semicolon, equal sign or any other character that is part of a terminal in the grammar must be quoted.
Almost all bndlib instructions follow the general OSGi syntax for a header.
-instruction ::= parameters
parameters ::= clause ( ',' clause ) *
clause ::= path ( ';' path ) *
( ';' parameter ) *
There are a number of short-cuts that are regularly used in bnd commands:
list ::= value ( ',' value ) *
url ::= <URL>
file-path ::= <file path, using / as separator>
Merged Instructions
Most instructions that accept multiple clauses are merged instructions. A merged instruction is an instruction which is specified by its prefix but which will merge any property that starts with this prefix followed by a period (‘.’). For example, the base instruction -plugin instruction accepts -plugin.git as well. The reason for this merging is that allows to append the base instruction with instructions from other files. For example, the bnd file in the cnf/ext directory are automatically included in the properties of the workspace. Since there can be many files, there would be a need to coordinate the using of a singleton base instruction. As always, singletons suck and in this case we solved it with merged instructions.
Some instructions put, sometimes very subtle, semantics on their ordering. To prevent different results from run to run, we make order the merge properties by placing the base instruction in front and then followed by the values from the other keys in lexically sorted order. For example, -a, -a.x, and -a.Z, and -a.1 will concatenate the clauses in the order -a,-a.1,-a.Z,-a.x.
Each of the constituents of the merged properties can be empty, this is properly handled by bndlib and will not create a an empty clause as would easily happen when the same thing was done with macros. Empty clauses can help when there is an optionality that depends on some condition.
As an example, lets set the -buildpath instruction:
-buildpath: com.example.foo;version=1.2
-buildpath.extra: ${if;${debug};com.example.foo.debug\;version=1.2}
This will result in a buildpath of (when debug is not false) of: com.example.foo;version=1.2, com.example.foo.debug;version=1.2.
Decorated Instructions
Instructions can also be decorated. A decorator is a header that ends with + or ++. A header like -runbundles is first merged and then decorated.
In this case, -runbundles is the stem. First, the total header is assembled by merging the property that has that stem. If there are properties that match stem + +.* or ++.*, then these properties are used to decorate the merged property. Notice that for the decorator the root key includes the + sign, the suffixes must come after the + sign. For example, for the header foo, the decorator would be foo+ and that would match a key like foo+.bar.
The decorator is a Parameters, it consists of a key and a set of attributes. The decorator key is usually a glob expressions.
After the header is merged, the key of each entry is matched against all globs in the decorator following the order of the decorator. When the first match is found, the attributes of the decorator clause that matches are stored with the attributes of the Parameter entry, overriding any attribute with the same attribute key. A Parameter entry key can only match one decorator glob expression.
For example, -runbundles a and -runbundles+ *;startlevel=20 will result in the content a;startlevel=20.
If the name of the decorator clause attribute starts with !, then the attribute, using the attribute name after removing the leading !, is removed from the Parameter entry. If the name of the decorator clause attribute starts with ~, then the decorator clause attribute value will not overwrite an existing value of the Parameter entry attribute, using the attribute name after removing the leading ~.
Example:
-foo a, b, c;skip=true, d
-foo+ b;skip=true,c;skip=false
-foo+.d d;skip=true
In this case, the first entry matched is b and it is matched against the second entry in the -foo instruction. Since the decorator has the skip=true attribute, it is carried over to the instruction. The result is therefore:
a, b;skip=true; c;skip=false, d;skip=true
If the decoration ends with 2 plus signs, for example -foo++, then the literals in the decoration headers will be added to the result if they are not matched to any key in the source header. If the decoration ends with a single + sign, literals that do not match are ignored.
- Decoration is not used for all instructions. It should be indicated on the instruction page if it is applied.
- There is a macro
decoratedthat can be used to apply decoration to any property key
SELECTOR
If a value in an instruction has a scope then you will be able to use a selector. A scope is a well defined, finite, set. For example, if you use the ‘-exportcontents’ instruction you can specify the packages that can be exported. Since you can only export the packages that are inside your bundle, the scope is the set of package names that were collected so far.
The syntax for a selector is:
selector ::= '!' ?
'=' ?
'*' | ( '.' | '?' | '|' | '$' | . | other ) *
( '.*' ) ?
( ':i' | ':o' | ':io' ) ?
A selector is an expression that is matched against all members of the scope. For example, com.example.* will match any package name that starts with com.example, for example com.example.foo, as well as com.example itself. The syntax used to describe the wildcarding is based on a globbing kind model, however, the selector is translated into a regular expression according to some simple rules.
The replacement rules to build the regular expression are as follows:
*– Is replaced with.*, matching any number of characters, triggers wildcard match.?- Is replaced with.?, matching any character, triggers wildcard match.|– Is inserted as is, triggers wildcard match.$– Escaped to\$..– The dot is treated as a package segment separator. It is escaped with\.. However, if the match ends with.*, the replacement will be(\..*)?. This triggers a wildcard match.
If you want to go ballistic with regular expressions, then you can go ahead. As long as the wildcards are triggered by one of the defined characters, the replaced string will be used as a regular expression.
If the selector ends with :i then a case insensitive match is requested, this will ignore any case differences.
If the selector ends with :o then the selector is marked optional. This means that when Bnd might warn about unused selectors, it will not warn that an optional selector is unused.
You can specify both flags by ending the selector with :io.
A selector can be prefixed with an exclamation mark, this indicates that a match must be treated as a removal operation. To understand removal, it is necessary to realize that the selectors are not declarative, the order of the selectors is relevant.
When bndlib has a scope, it will iterator over each element in the scope and then for element it will iterator over each selector. If there is a match on the scope member then it is always removed from the scope, it will not be matched against later selectors. If the selector starts with an exclamation mark then the member is removed. but it is not treated as a result. Ergo, the exclamation mark allows you to remove members before they are actually matched.
For example, you want to match all implementation packages (i.e. they have impl in their name) except when they start with com.example. This can be achieved with:
!com.example.*impl*, *.impl.*
Last, and also least, you can prefix the selector with an equal sign (‘=’) (after the exclamation mark if one is present). This will signal a literal match with the string, no globbing will be done.
The way the period (‘.’) is treated is kind of special. The reason is that people expect that the selector com.example.* actually includes the package com.example itself. In bndlib this has always been the case although the OSGi Alliance later decided to not follow this pattern when there was a need for the globbing of packages.
In this example, the first selector will remove any match and ignore it, the second selector now only sees scope members that are fitting in the earlier pattern.
Selectors are used in virtually any place where there is a reasonable scope. It is a very powerful feature. However, it is also easy to go overboard. If you find you need to use this feature excessively then you are likely overdoing it.
FILE
One of the most painful thing in making bndlib run anywhere is handling of files. Even though Java has a decent abstraction of the file system, problems with spaces in file names and backslashes in the wrong place have caused an uneven amount of bugs. Ok, this partially because most bndlib developers tend to use Macs, still no excuse and quite embarrassing.
Since bnd files need to be portable across environments we’ve chosen to use the Unix file separator, the slash (or solidus ‘/’) for more reasons than I can reasonably sum up here (what was Bill smoking when he picked the reverse solidus for file separator!). In bndlib, all file paths (ok, should) always go through a single method that actually parses it and turns it into a Java File object. This allows us to support a number of features in a portable way. The syntax of a file path is therefore:
file ::= ( '~/' | '/' )? ( ~['/']+ '/' ) * ~['/'] *
If a file path starts with:
- A slash (‘/’) then we go to the root of the current directory’s file system. Sorry, there is no way for a windows user to specify another file system since this would break portability.
- ’~/’, then the remainder of the file path is relative to the user’s home directory as defined by Java. To keep your workspace portable, make sure you do not store any information there that might break the build for others. However, this can be useful to store passwords etc.
- Anything else, then the path is relative. It depends in the context what the used root is of the path. In general, if there is a local file that creates this path, then the parent directory of this file is the root. Otherwise, if this path is used in relation a workspace, project, build, or bndrun then the base of each of these entities is used as the root. In other cases it is the actual working directory of the process.
You can use the ‘..’ operator for a segment in the file path to indicate a parent directory. It is highly advised to always use relative addressing to keep your workspace portable. However, there are a number of macros that can be used as anchors:
${p}, `${project} – The directory of the current project${workspace}– The directory of the current workspace${build} – The directory of thecnf` directory.
FILESPEC
A FILESPEC defines a set of files relative to a starting point. It can be identical to a FILE for a single file but it has some special syntax to recurse directories. For example, the FILESPEC foo/bar/**/spec/*.ts finds all files that end in spec/*.ts somewhere below the foo/bar directory.
The syntax is as follows:
FILESPEC ::= filespec ( ',' filespec )*
filespec ::= ( segment '/' ) filematch
segment ::= '**' | GLOB
filematch ::= '**' | '**' GLOB | GLOB
If a segment is ** then it will match any directory to any depth. Otherwise it must be a GLOB expression, which can also be a literal. The last segment is the filematch. This is a GLOB expression on a file name. As a convenience, if it is **, any file will match in any directory and if it starts with something like **.ts then it will also recurse and match on *.ts. That is, the following rules apply to the filematch:
prefix/** prefix/**/*
prefix/**.ts prefix/**/*.ts
PATH
A PATH is a repository specification. It is a specification for a number of JARs and/or bundles from a repository (well, most of the time). A PATH has the following syntax:
PATH ::= target ( ',' target ) *
target ::= ( entry | FILE ';' 'version' '=' 'file' )
( ';' PARAMETERS ) *
entry ::= symbolic-name ( ';' version ) ?
version ::= 'version' '='
( RANGE | 'latest' | 'project')
A PATH defines a number of bundles with its entries. Each entry is either a FILE or a symbolic-name. If only a symbolic name is specified, the default will be the import range from 0.0.0. This selects the whole repository for the given symbolic name. Outside the default, the repository entry can be specified in the following ways:
- RANGE – A version range limits the entries selected from the active repositories.
latest– Use the project’s output or, if the project does not exists, get the bundle with the highest version from the repositories.project– Mandate the use of the project’s output
GLOB
A glob is a pattern that can be matched against a candidate to see if it matches. To match multiple candidates with
one pattern, the pattern is allowed to contain wildcard characters. A wildcard character is a stand in for zero or
more other characters. For example, a glob like *.xml matches any name that ends with .xml, the asterisk * stands
in for zero or more characters. Therefore, it matches foo.xml, xml.xml.xml, but also just .xml. The other
wildchar is the question mark (?) which matches exactly one character. For example, ???.xml matches abc.xml but not a.xml
or .xml.
Sometimes it is necessary to match against a number of strings. The vertical bar (|) can separate these strings. For
example, abc|def|ghi matches any of abc, def, or ghi.
It is also possible to group strings inside the pattern using parentheses. For example, foo(a|b)bar matches fooabar
or foobbar.
The glob also supports character classes with the square brackets [ and ]. Characters between the square brackets
literally match to any character at that position. These character classes also form a group. For example, foo[abc]bar matches
fooabar, foobbar, or foocbar.
Groups can be repeated using a question mark (cardinality 0..1), the asterisk (cardinality 0..n), or the plus sign (cardinality 1..n). For example, (a)*
matches aaaa but also the empty string. If the standard cardinalities do not suffice, then a group can be suffixed by a
cardinality specification using the curly braces ({ and }). Inside the curly braces the lower bound and the optional upper
bound can be specified. If no upper bound is specified then the lower bound is also the upper bound.
For example, (?i)([0-9A-F][0-9A-F]){20} matches a 40 digit SHA digest in hex regardless of case.
There are some special characters that get special treatment:
special ::= '{' | '}' | '|' | '+' | '*' | '?' | '(' | ')' | '[' | ']'
These characters can be escaped with a reverse solidus (\) to override their special meaning, they will then be matched literally. To
escape a long string, it is possible to place \Q at the beginning of a block that needs to be escaped and \E at the end.
For example, foo\Q*****\Ebar
Some examples:
| Glob | Regular Expression | Matches |
|---|---|---|
abc.ts |
abc\.ts |
abc.ts |
*.ts |
.*\.ts |
abc.ts, def.ts |
foo***bar |
foo.*.*.*bar |
foobar, fooXbar, fooXXXXbar |
foo(A|B|C)*bar |
foo(A|B|C)*bar |
fooAbar, fooBBBAbar,fooCbar |
foo\{\}bar |
foo\{\}bar |
foo{}bar |
xx(?i)xx |
xx(?i)xx |
xxXx, xxXX, xxxx |
Special Cases
Some instruction use the GLOB but provide some convenience. For example, the package selectors of Export-Package et. al.
detect a case like com.example.* and turn it into a regular expression that matches com.example.foo but also matches
com.example. This is generally explained in the instruction.
Mapping a Glob to a Regular Expression
This section defines how globs are mapped to regular expressions. Although the globs are quite intuitive to use, they do expose all regular expression capabilities. A strong advice is to keep it simple. The mapping itself is actually non-trivial and takes a number of heuristics that can easily go wrong. Basically, if you need this section you’re likely doing something that is too complex.
For backward compatibility reasons, we support the unix like glob style for or’ing like {a,b,c}. However, it is
recommended to use the form using the vertical bar since it is more flexible and closer to regular expressions.
A glob is mapped to a regular expression character by character. During this traversal the following states are kept:
SIMPLE– Basic simple glob form. This is the default.CURLIES– Inside a curly braces group that is not a cardinality specification. Curly braces can be nested.QUOTED– Inside a\Q...\Eblock (cannot be nested)BRACKETS– Inside a character group enclosed by square brackets (cannot be nested).
Character sets:
escaped ::= `.` | `$` | `^` | `@` | `%`
special ::= `?` | `*` | `+`
end ::= ')' | ']' | '}'
start ::= '('
Escaped characters are escaped in SIMPLE mode and CURLIES mode. In QUOTED or BRACKETS mode no escaping is done. For example
^$ becomes \^\$ matching literally ^$. However, [^$] becomes [^$], matching anything but a dollar sign. In QUOTED
and BRACKETS mode, also the special, end, and start sets are directly inserted without any special handling.
In the SIMPLE and CURLIES mode the special characters require special handling. For these remaining mappings it is important
to realize that there are groups. There are parenthesized groups, bracketed group, and curly braces groups. For
example, (a|b), [abcd], or {a,b,c} respectively. If curly braces are used after a group then it is a quantifier and not considered a group. That is, {a,b} is
considered a group but [a,b]{1,2} then the {1,2} is a quantifier and not a group.
So when a special character is preceded with a group, it is inserted without any special processing. If it is not
preceded then the following rules apply:
*– mapped to.*, this matches any number of characters?– mapped to., this matches one character+– mapped to\+, matches a plus sign!
Some examples:
| Glob | Regular Expression |
|---|---|
* |
.* |
(a)* |
(a)* |
[abc]+ |
[abc]+ |
. |
\. |
[.*+|] |
[.*+|] |
+ |
\+ |
(x|y)+ |
(x|y)+ |
{x,y} |
(?:x|y) |
{[xa],y} |
(?:[xa]|y) |
(?:foo) |
(?:foo) |
{foo} |
(?:foo) |
[\p{Lower}] |
[\p{Lower}] |
[a-z&&[^bc]] |
[a-z&&[^bc]] |
Instruction Index
| Instruction | Description | Class |
|---|---|---|
| -augment PARAMETER ( ',' PARAMETER ) * | Add requirements and capabilities to the resources during resolving. | Workspace |
| -baseline selector | Control what bundles are enabled for baselining and optionally specify the baseline version or file. | Project |
| -baselinerepo qname | Define the repository to calculate baselining against | Workspace |
| -bnd-driver | Sets the driver property. | |
| -builderignore PATH-SPEC ( ',' PATH-SPEC ) * | List of project-relative directories to be ignored by the builder. | Project |
| -buildpath PATH | Provides the class path for building the jar, the entries are references to the repositories. | Project |
| -buildrepo repo ( ',' repo ) * | After building a JAR, release the JAR to the given repositories. | Project |
| -buildtool toolspec (EXPERIMENTAL!) | A specification for the bnd CLI to install a build tool, like gradle, in the workspace | bnd |
| -bumppolicy | The policy for the bump command | Macro |
| -bundleannotations SELECTORS | Selects the classes that need processing for standard OSGi Bundle annotations. | Project |
| -cdiannotations SELECTORS | Selects the packages that need processing for CDI annotations. | Project |
| -check 'ALL' | ( 'IMPORTS' | 'EXPORTS' ) * | Enable additional checking | Analyzer |
| -classpath FILE (',' FILE) * | Specify additional file based entries (either directories or JAR files) to add to the used classpath. | Analyzer |
| -compression DEFLATE | STORE | Set the compression level for the generated JAR, the default is DEFLATE | Builder |
| -conditionalpackage PACKAGE-SPEC ( ',' PACKAGE-SPEC ) * | Recursively add packages from the class path when referred and when they match one of the package specifications. | Project |
| -conduit | This project is a front to one or more JARs in the file system | Project |
| -connection-settings | Setting up the communications for bnd | |
| -consumer-policy VERSION-MASK | Specify the default version bump policy for a consumer when a binary incompatible change is detected. | Project |
| -contract | Establishes a link to a contract and handles the low level details. | Project |
| -define-contract | Define a contract when one cannot be added to the buildpath. | Project |
| -dependson SELECTORS | Add dependencies from the current project to other projects, before this project is built, any project this project depends on will be built first. | Project |
| -deploy | Deploy the current project to a repository through Deploy plugins (e.g. MavenDeploy plugin) | Project |
| -deployrepo | Specifies to which repo the project should be deployed. | Project |
| -diffignore SELECTORS | Manifest header names and resource paths to ignore during baseline comparison. | Project |
| -diffpackages SELECTORS | The names of exported packages to baseline. | Project |
| -digests DIGEST ( ',' DIGEST ) * | Set the digest algorithms to use | Project |
| -distro REPO (',' REPO) | Resolve against pre-defined system capabilities | Workspace |
| -donotcopy | Set the default filters for file resources that should not be copied. | Project |
| -dsannotations SELECTORS | Selects the packages that need processing for standard OSGi DS annotations. | Builder |
| -dsannotations-options SELECTORS | Options for controlling DS annotation processing. | Builder |
| -eeprofile 'auto' | PROFILE + | Provides control over what Java 8 profile to use. | Project |
| -executable ( rejar= STORE | DEFLATE ) ( ',' strip= matcher ( ',' matcher )* ) ( ',' location= FORMAT ) | Process an executable jar to strip optional directories of the contained bundles, and/or change their compression. The location string can also be calculated from bsn and version | Project |
| -export PATH ( ';' PARAMETER )* ( ',' PATH ( ';' PARAMETER )* )* | Turns a bndrun file into its deployable format | Project |
| -export-apiguardian PACKAGE-SPEC, ( ',' PACKAGE-SPEC )* | Exports the given packages where the the `@API` annotation is found on contained classes. | Project |
| -exportcontents PACKAGE-SPEC, ( ',' PACKAGE-SPEC )* | Exports the given packages but does not try to include them from the class path. The packages should be loaded with alternative means. | Project |
| -exportreport report-def ( ',' report-def )* | Configure a list of reports to be exported. | Workspace & Project |
| -exporttype | This specifies the type of the exported content | |
| -extension | A plugin that is loaded to its url, downloaded and then provides a header used instantiate the plugin. | Project |
| -failok ('true' | 'false')? | Will ignore any error during building and assume all went ok. | Project |
| -fixupmessages SELECTOR ( ';' ( is | replace | restrict ) )* ... | Fixup errors and warnings. | Project |
| -generate srcs ';output=' DIR ( ';' ( system | generate | classpath))* ... | Generate sources | Project |
| -gestalt | provides access to the gestalt properties that describe the environment | |
| -groupid groupId | Set the default Maven groupId | Project |
| -include PATH-SPEC ( ',' PATH-SPEC ) * | Include a number of files from the file system | Project |
| -includepackage PACKAGE-SPEC, ( ',' PACKAGE-SPEC )* | Include a number of packages from the class path | Builder |
| -includeresource iclause | Include resources from the file system | Builder & Executable |
| Instruction Reference | ||
| -init ${MACRO} ( ',' ${MACRO}) * | Executes the macros while initializing the project for building. | Project |
| -invalidfilenames | Specify file/directory names that should not be used because they are not portable. | Project |
| -javaagent BOOLEAN | Specify if classpath jars with Premain-Class headers are to be used as java agents | Project |
| -jpms-module-info modulename [; version=<version>] [; access=OPEN|SYNTHETIC|MANDATED] | Used to generate the `module-info.class` | JPMS |
| -jpms-module-info-options module-infos+ | Used to generate the `module-info.class` | JPMS |
| -jpms-multi-release BOOLEAN | Enables generating manifests and module infos for multi release JARs. | JPMS |
| -launcher | Options for the runtime launcher | Project |
| -library library ( ',' library )* | Apply a bnd library to the workspace, project, or bndrun file | Workspace or Project |
| -make | If a resource is not found, specify a recipe to make it. | Project |
| -manifest FILE | Override manifest calculation and set fixed manifest | Builder |
| -manifest-name RESOURCE | Set the resource path to the manifest, for certain standards the manifest has a different name. | Ant |
| -maven-dependencies* entry ( ',' entry )* | Configure maven dependency information for the generated pom | Project |
| -maven-release ('local'|'remote') ( ',' option )* | Set the Maven release options for the Maven Bnd Repository | Project |
| -maven-scope dependency-scope | Set the default Maven dependency scope to use when generating dependency information in the generated pom | Project |
| -metainf-services | Controls how META-INF/services files are processed. | Analyzer |
| -metatypeannotations SELECTORS | Selects the packages that need processing for standard OSGi Metatype annotations. | Builder |
| -metatypeannotations-options SELECTORS | Restricts the use of Metatype Annotation to a minimum version. | Builder |
| -namesection RESOURCE-SPEC ( ',' RESOURCE-SPEC ) * | Create a name section (second part of manifest) with optional property expansion and addition of custom attributes. Patterns not ending with \"/\" target resources. Those ending with \"/\" target packages. | Builder |
| -nobuildincache BOOLEAN | Do not use a build in cache for the launcher and JUnit. | Builder |
| -nobundles BOOLEAN | Do not build the project. | Project |
| -noclassforname BOOLEAN | Do not add package reference to classes loaded with Class.forName(String). | Builder |
| -nodefaultversion BOOLEAN | Do not add a default version to exported packages when no version is present. | Builder |
| -noee BOOLEAN | Donot add an automatic requirement on an EE capability based on the class format. | Ant |
| -noextraheaders BOOLEAN | Do not add a any extra headers specific for bnd. | Builder |
| -noimportjava BOOLEAN | Do not import java.* packages. | Analyzer |
| -nojunit BOOLEAN | Indicate that this project does not have JUnit tests | Ant |
| -nojunitosgi BOOLEAN | Indicate that this project does not have JUnit OSGi tests | Ant |
| -nomanifest BOOLEAN | Do not safe the manifest in the JAR. | Ant |
| -noparallel CATEGORY;task=TASKS | Prevent Gradle tasks in the same category from executing in parallel. | Workspace |
| -noproxyinterfaces BOOLEAN | Do not calculate Import-Package references for 'Proxy.newProxyInstance' usage found in method bodies during class processing. | Builder |
| -nosubstitution | Setting this to true disables package substitution globally (default is false). That means, that bnd does not calculate Import-Package references for packages exported by the current bundle. | |
| -nouses BOOLEAN | Do not calculate uses directives on package exports or on capabilities. | Project |
| -output FILE | Specify the output directory or file. | Analyzer |
| -outputmask TEMPLATE ? | If set, is used a template to calculate the output file. It can use any macro but the ${@bsn} and ${@version} macros refer to the current JAR being saved. The default is bsn + ".jar". | Project |
| -packageinfotype | Sets the different types of package info. | |
| -pedantic BOOLEAN | Warn about things that are not really wrong but still not right. | Processor |
| -plugin.* plugin-def ( ',' plugin-def )* | Load plugins and their parameters. | Processor |
| -pluginpath* PARAMETERS | Define JARs to be loaded in the local classloader for plugins. | Processor |
| -pom BOOLEAN | PROPERTIES | Generate a maven pom in the JAR | Processor |
| -prepare makespec ( ',' makespec )* | Execute a number of shell commands before every build (might not work on Windows) | Project |
| -preprocessmatchers SELECTOR | Specify which files can be preprocessed | Builder |
| -privatepackage PACKAGE-SPEC | Specify the private packages, these packages are included from the class path. Alternative to Private-Package, this version is not included in the manifest. | Builder |
| -profile KEY | Sets a prefix that is used when a variable is not found, it is then re-searched under "[<[profile]>]<[key]>". | Builder |
| -provider-policy VERSION-MASK | Specify the default version bump policy for a provider when a binary incompatible change is detected. | Project |
| -releaserepo* NAME ( ',' NAME ) * | Define the names of the repositories to use for a release | Project |
| -remoteworkspace (true|false) | Enable the workspace to server remote requests from the local system, needed for Launchpad | Project |
| -removeheaders KEY-SELECTOR ( '.' KEY-SELECTOR ) * | Remove matching headers from the manifest. | Project |
| -reportconfig plugin-def ( ',' plugin-def )* | Configure a the content of report. | Workspace & Project |
| -reportnewer BOOLEAN | Report any entries that were added to the build since the last JAR was made. | Project |
| -reproducible BOOLEAN | TIMESTAMP | Ensure the bundle can be built in a reproducible manner. | Builder |
| -require-bnd (FILTER ( ',' FILTER )* )? | The filter can test against 'version', which will contain the Bnd version. If it does not match, Bnd will generate an error. | Project |
| -resolve.effective qname (',' qname ) | Set the use effectives for the resolver | Workspace |
| -resolve.excludesystem true|false | A property used by the resolver, if set to true (default) it excludes the system resource | Runtime |
| -resolve (manual|auto|beforelaunch|batch|cache) | Defines when/how resolving is done to calculate the -runbundles | Workspace |
| -resolve.preferences qname ( ',' qname ) | Override the default order and selection of repositories | Workspace |
| -resolve.reject ( '@'? namespace ( ';filter:=' FILTER )? ), | Controls rejection of capabilities during resolving. | Workspace |
| -resolvedebug INTEGER | Display debugging information for a resolve operation | Workspace |
| -resourceonly BOOLEAN | Ignores warning if the bundle only contains resources and no classes. | Project |
| -runblacklist requirement (',' requirement) | Blacklist a set of bundles for a resolve operation | Workspace |
| -runbuilds BOOLEAN | Defines if this should add the bundles build by this project to the -runbundles. For a bndrun file this is default false, for a bnd file this is default true. | Project |
| -runbundles* REPO-ENTRY ( ',' REPO-ENTRY )* | Add additional bundles, specified with their bsn and version like in -buildpath, that are installed and started before the project is run. | Project |
| -runee EE | Define the runtime Execution Environment capabilities, default Java 6. | Builder |
| -runenv PROPERTIES | Specify a JDB port on invocation when launched outside a debugger so the debugger can attach later. | Project |
| -runframework ( 'none' | 'services' | ANY )? | Sets the type of framework to run. If 'none', an internal dummy framework is used. Otherwise the Java META-INF/services model is used for the FrameworkFactory interface name. | Launcher |
| -runframeworkrestart BOOLEAN | Restart the framework in the same VM if the framework is stopped or updated. | Project |
| -runfw REPO-ENTRY | Specify the framework JAR's entry in a repository. | Launcher |
| -runjdb ADDRESS | Specify a JDB socket transport address on invocation when launched outside a debugger so the debugger can attach later. | Project |
| -runkeep true | false | Decides to keep the framework storage directory between launching | Project |
| -runnoreferences BOOLEAN | Do not use the `reference:` URL scheme for installing a bundle in the installer. | Launcher |
| -runoptions | Options for the launch | |
| -runpath REPO-ENTRY ( ',' REPO-ENTRY ) | Additional JARs for the remote VM path, should include the framework. | Project |
| -runprogramargs | Additional arguments for the program invokation. | Project |
| -runproperties PROPERTIES | Define system properties for the remote VM. | Launcher |
| -runprovidedcapabilities | Extra capabilities for a distro resolve | Workspace |
| -runremote | It provides remote debugging support for bnd projects. | |
| -runrepos REPO-NAME ( ',' REPO-NAME )* | Order and select the repository for resolving against. The default order is all repositories in their plugin creation order. | Resolve |
| -runrequires REQUIREMENT ( ',' REQUIREMENT )* | The root requirements for a resolve intended to create a constellation for the -runbundles. | Resolve |
| -runstartlevel ( order | begin | step )* | Assign a start level to each run-bundle after resolving | Project |
| -runstorage FILE | Define the directory to use for the framework's work area. | Project |
| -runsystemcapabilities* CAPABILITY (',' CAPABILITY ) | Define extra capabilities for the remote VM. | Launcher |
| -runsystempackages* PARAMETERS | Define extra system packages (packages exported from the remote VM -runpath). | Launcher |
| -runtimeout DURATION | Project | |
| -runtrace BOOLEAN | Trace the launched process in detail | Launcher |
| -runvm KEYS | Additional arguments for the VM invocation. Arguments are added as-is. | Project |
| -savemanifest FILE | Write out the manifest to a separate file after it has been calculated. | Builder |
| -sign PARAMETERS | Report any entries that were added to the build since the last JAR was made. | Project |
| -snapshot STRING | String to substitute for "SNAPSHOT" in the bundle version's qualifier | Project |
| -sourcepath | List of directory names that used to find sources. | Builder |
| -sources BOOLEAN | Include the source code (if available on the -sourcepath) in the bundle at OSGI-OPT/src | Builder |
| -stalecheck srcs ';newer=' depends ( ';' ( warning | error | command ))* ... | Perform a stale check of files and directories before building a jar | Project |
| -standalone repo-spec (, repo-spec ) | Disconnects the bndrun file from the workspace and defines its on repositories | Run |
| -strict BOOLEAN | If strict is true, then extra verification is done. | Processor |
| -sub FILE-SPEC ( ',' FILE-SPEC )* | Enable sub-bundles to build a set of .bnd files that use bnd.bnd file as a basis. The list of bnd files can be specified with wildcards. | Builder |
| -systemproperties PROPERTIES | These system properties are set in the local JVM when a workspace is started. This was mainly added to allow one to set JVM options via system properties. | Workspace |
| -testcontinuous BOOLEAN | Do not exit after running the test suites but keep watching the bundles and rerun the test cases if the bundle is updated. | Test |
| -tester REPO-SPEC | Species the tester (bundle) that is supposed to test the code. The default is biz.aQute.tester | Project |
| -testpackages PACKAGE-SPEC ( ',' PACKAGE-SPEC ) | Project | |
| -testpath REPO-SPEC ( ',' REPO-SPEC ) | The specified JARs from a repository are added to the remote JVM's classpath if the JVM is started in test mode in addition to the -runpath JARs. | Project |
| -testsources REGEX ( ',' REGEX )* | Specification to find JUnit test cases by traversing the test src directory and looking for java classes. The default is (.*).java. | Project |
| -testunresolved BOOLEAN | Will execute a JUnit testcase ahead of any other test case that will abort if there are any unresolved bundles. | Project |
| -undertest true | Will be set by the project when it builds a JAR in test mode, intended to be used by plugins. | Project |
| -upto VERSION | Specify the highest compatibility version, will disable any incompatible features added after this version. | Project |
| -wab FILE ( ',' FILE )* | Create a Web Archive Bundle (WAB) or a WAR | Builder |
| -wablib FILE ( ',' FILE )* | Specify the libraries that must be included in a Web Archive Bundle (WAB) or WAR. | Builder |
| -workingset PARAMETER ( ',' PARAMETER ) * | Group the workspace into different working sets | Workspace |
| -workspace-templates | Define workspace templates for a new workspace | Workspace |
| -x-overwritestrategy | On windows we sometimes cannot delete a file because someone holds a lock in our or another process. So if we set the -overwritestrategy flag we use an avoiding strategy. |
Table of contents
- -augment PARAMETER ( ',' PARAMETER ) * - Add requirements and capabilities to the resources during resolving.
- -baseline selector - Control what bundles are enabled for baselining and optionally specify the baseline version or file.
- -baselinerepo qname - Define the repository to calculate baselining against
- -bnd-driver - Sets the driver property.
- -builderignore PATH-SPEC ( ',' PATH-SPEC ) * - List of project-relative directories to be ignored by the builder.
- -buildpath PATH - Provides the class path for building the jar, the entries are references to the repositories.
- -buildrepo repo ( ',' repo ) * - After building a JAR, release the JAR to the given repositories.
- -buildtool toolspec (EXPERIMENTAL!) - A specification for the bnd CLI to install a build tool, like gradle, in the workspace
- -bumppolicy - The policy for the bump command
- -bundleannotations SELECTORS - Selects the classes that need processing for standard OSGi Bundle annotations.
- -cdiannotations SELECTORS - Selects the packages that need processing for CDI annotations.
- -check 'ALL' | ( 'IMPORTS' | 'EXPORTS' ) * - Enable additional checking
- -classpath FILE (',' FILE) * - Specify additional file based entries (either directories or JAR files) to add to the used classpath.
- -compression DEFLATE | STORE - Set the compression level for the generated JAR, the default is DEFLATE
- -conditionalpackage PACKAGE-SPEC ( ',' PACKAGE-SPEC ) * - Recursively add packages from the class path when referred and when they match one of the package specifications.
- -conduit - This project is a front to one or more JARs in the file system
- -connection-settings - Setting up the communications for bnd
- -consumer-policy VERSION-MASK - Specify the default version bump policy for a consumer when a binary incompatible change is detected.
- -contract - Establishes a link to a contract and handles the low level details.
- -define-contract - Define a contract when one cannot be added to the buildpath.
- -dependson SELECTORS - Add dependencies from the current project to other projects, before this project is built, any project this project depends on will be built first.
- -deploy - Deploy the current project to a repository through Deploy plugins (e.g. MavenDeploy plugin)
- -deployrepo - Specifies to which repo the project should be deployed.
- -diffignore SELECTORS - Manifest header names and resource paths to ignore during baseline comparison.
- -diffpackages SELECTORS - The names of exported packages to baseline.
- -digests DIGEST ( ',' DIGEST ) * - Set the digest algorithms to use
- -distro REPO (',' REPO) - Resolve against pre-defined system capabilities
- -donotcopy - Set the default filters for file resources that should not be copied.
- -dsannotations SELECTORS - Selects the packages that need processing for standard OSGi DS annotations.
- -dsannotations-options SELECTORS - Options for controlling DS annotation processing.
- -eeprofile 'auto' | PROFILE + - Provides control over what Java 8 profile to use.
- -executable ( rejar= STORE | DEFLATE ) ( ',' strip= matcher ( ',' matcher )* ) ( ',' location= FORMAT ) - Process an executable jar to strip optional directories of the contained bundles, and/or change their compression. The location string can also be calculated from bsn and version
- -export PATH ( ';' PARAMETER )* ( ',' PATH ( ';' PARAMETER )* )* - Turns a bndrun file into its deployable format
- -export-apiguardian PACKAGE-SPEC, ( ',' PACKAGE-SPEC )* - Exports the given packages where the the `@API` annotation is found on contained classes.
- -exportcontents PACKAGE-SPEC, ( ',' PACKAGE-SPEC )* - Exports the given packages but does not try to include them from the class path. The packages should be loaded with alternative means.
- -exportreport report-def ( ',' report-def )* - Configure a list of reports to be exported.
- -exporttype - This specifies the type of the exported content
- -extension - A plugin that is loaded to its url, downloaded and then provides a header used instantiate the plugin.
- -failok ('true' | 'false')? - Will ignore any error during building and assume all went ok.
- -fixupmessages SELECTOR ( ';' ( is | replace | restrict ) )* ... - Fixup errors and warnings.
- -generate srcs ';output=' DIR ( ';' ( system | generate | classpath))* ... - Generate sources
- -gestalt - provides access to the gestalt properties that describe the environment
- -groupid groupId - Set the default Maven groupId
- -include PATH-SPEC ( ',' PATH-SPEC ) * - Include a number of files from the file system
- -includepackage PACKAGE-SPEC, ( ',' PACKAGE-SPEC )* - Include a number of packages from the class path
- -includeresource iclause - Include resources from the file system
- -init ${MACRO} ( ',' ${MACRO}) * - Executes the macros while initializing the project for building.
- -invalidfilenames - Specify file/directory names that should not be used because they are not portable.
- -javaagent BOOLEAN - Specify if classpath jars with Premain-Class headers are to be used as java agents
-
-jpms-module-info modulename [; version=
] [; access=OPEN|SYNTHETIC|MANDATED] - Used to generate the `module-info.class` - -jpms-module-info-options module-infos+ - Used to generate the `module-info.class`
- -jpms-multi-release BOOLEAN - Enables generating manifests and module infos for multi release JARs.
- -launcher - Options for the runtime launcher
- -library library ( ',' library )* - Apply a bnd library to the workspace, project, or bndrun file
- -make - If a resource is not found, specify a recipe to make it.
- -manifest FILE - Override manifest calculation and set fixed manifest
- -manifest-name RESOURCE - Set the resource path to the manifest, for certain standards the manifest has a different name.
- -maven-dependencies* entry ( ',' entry )* - Configure maven dependency information for the generated pom
- -maven-release ('local'|'remote') ( ',' option )* - Set the Maven release options for the Maven Bnd Repository
- -maven-scope dependency-scope - Set the default Maven dependency scope to use when generating dependency information in the generated pom
- -metainf-services - Controls how META-INF/services files are processed.
- -metatypeannotations SELECTORS - Selects the packages that need processing for standard OSGi Metatype annotations.
- -metatypeannotations-options SELECTORS - Restricts the use of Metatype Annotation to a minimum version.
- -namesection RESOURCE-SPEC ( ',' RESOURCE-SPEC ) * - Create a name section (second part of manifest) with optional property expansion and addition of custom attributes. Patterns not ending with \"/\" target resources. Those ending with \"/\" target packages.
- -nobuildincache BOOLEAN - Do not use a build in cache for the launcher and JUnit.
- -nobundles BOOLEAN - Do not build the project.
- -noclassforname BOOLEAN - Do not add package reference to classes loaded with Class.forName(String).
- -nodefaultversion BOOLEAN - Do not add a default version to exported packages when no version is present.
- -noee BOOLEAN - Donot add an automatic requirement on an EE capability based on the class format.
- -noextraheaders BOOLEAN - Do not add a any extra headers specific for bnd.
- -noimportjava BOOLEAN - Do not import java.* packages.
- -nojunit BOOLEAN - Indicate that this project does not have JUnit tests
- -nojunitosgi BOOLEAN - Indicate that this project does not have JUnit OSGi tests
- -nomanifest BOOLEAN - Do not safe the manifest in the JAR.
- -noparallel CATEGORY;task=TASKS - Prevent Gradle tasks in the same category from executing in parallel.
- -noproxyinterfaces BOOLEAN - Do not calculate Import-Package references for 'Proxy.newProxyInstance' usage found in method bodies during class processing.
- -nosubstitution - Setting this to true disables package substitution globally (default is false). That means, that bnd does not calculate Import-Package references for packages exported by the current bundle.
- -nouses BOOLEAN - Do not calculate uses directives on package exports or on capabilities.
- -output FILE - Specify the output directory or file.
- -outputmask TEMPLATE ? - If set, is used a template to calculate the output file. It can use any macro but the ${@bsn} and ${@version} macros refer to the current JAR being saved. The default is bsn + ".jar".
- -packageinfotype - Sets the different types of package info.
- -pedantic BOOLEAN - Warn about things that are not really wrong but still not right.
- -plugin.* plugin-def ( ',' plugin-def )* - Load plugins and their parameters.
- -pluginpath* PARAMETERS - Define JARs to be loaded in the local classloader for plugins.
- -pom BOOLEAN | PROPERTIES - Generate a maven pom in the JAR
- -prepare makespec ( ',' makespec )* - Execute a number of shell commands before every build (might not work on Windows)
- -preprocessmatchers SELECTOR - Specify which files can be preprocessed
- -privatepackage PACKAGE-SPEC - Specify the private packages, these packages are included from the class path. Alternative to Private-Package, this version is not included in the manifest.
- -profile KEY - Sets a prefix that is used when a variable is not found, it is then re-searched under "[<[profile]>]<[key]>".
- -provider-policy VERSION-MASK - Specify the default version bump policy for a provider when a binary incompatible change is detected.
- -releaserepo* NAME ( ',' NAME ) * - Define the names of the repositories to use for a release
- -remoteworkspace (true|false) - Enable the workspace to server remote requests from the local system, needed for Launchpad
- -removeheaders KEY-SELECTOR ( '.' KEY-SELECTOR ) * - Remove matching headers from the manifest.
- -reportconfig plugin-def ( ',' plugin-def )* - Configure a the content of report.
- -reportnewer BOOLEAN - Report any entries that were added to the build since the last JAR was made.
- -reproducible BOOLEAN | TIMESTAMP - Ensure the bundle can be built in a reproducible manner.
- -require-bnd (FILTER ( ',' FILTER )* )? - The filter can test against 'version', which will contain the Bnd version. If it does not match, Bnd will generate an error.
- -resolve (manual|auto|beforelaunch|batch|cache) - Defines when/how resolving is done to calculate the -runbundles
- -resolve.effective qname (',' qname ) - Set the use effectives for the resolver
- -resolve.excludesystem true|false - A property used by the resolver, if set to true (default) it excludes the system resource
- -resolve.preferences qname ( ',' qname ) - Override the default order and selection of repositories
- -resolve.reject ( '@'? namespace ( ';filter:=' FILTER )? ), - Controls rejection of capabilities during resolving.
- -resolvedebug INTEGER - Display debugging information for a resolve operation
- -resourceonly BOOLEAN - Ignores warning if the bundle only contains resources and no classes.
- -runblacklist requirement (',' requirement) - Blacklist a set of bundles for a resolve operation
- -runbuilds BOOLEAN - Defines if this should add the bundles build by this project to the -runbundles. For a bndrun file this is default false, for a bnd file this is default true.
- -runbundles* REPO-ENTRY ( ',' REPO-ENTRY )* - Add additional bundles, specified with their bsn and version like in -buildpath, that are installed and started before the project is run.
- -runee EE - Define the runtime Execution Environment capabilities, default Java 6.
- -runenv PROPERTIES - Specify a JDB port on invocation when launched outside a debugger so the debugger can attach later.
- -runframework ( 'none' | 'services' | ANY )? - Sets the type of framework to run. If 'none', an internal dummy framework is used. Otherwise the Java META-INF/services model is used for the FrameworkFactory interface name.
- -runframeworkrestart BOOLEAN - Restart the framework in the same VM if the framework is stopped or updated.
- -runfw REPO-ENTRY - Specify the framework JAR's entry in a repository.
- -runjdb ADDRESS - Specify a JDB socket transport address on invocation when launched outside a debugger so the debugger can attach later.
- -runkeep true | false - Decides to keep the framework storage directory between launching
- -runnoreferences BOOLEAN - Do not use the `reference:` URL scheme for installing a bundle in the installer.
- -runoptions - Options for the launch
- -runpath REPO-ENTRY ( ',' REPO-ENTRY ) - Additional JARs for the remote VM path, should include the framework.
- -runprogramargs - Additional arguments for the program invokation.
- -runproperties PROPERTIES - Define system properties for the remote VM.
- -runprovidedcapabilities - Extra capabilities for a distro resolve
- -runremote - It provides remote debugging support for bnd projects.
- -runrepos REPO-NAME ( ',' REPO-NAME )* - Order and select the repository for resolving against. The default order is all repositories in their plugin creation order.
- -runrequires REQUIREMENT ( ',' REQUIREMENT )* - The root requirements for a resolve intended to create a constellation for the -runbundles.
- -runstartlevel ( order | begin | step )* - Assign a start level to each run-bundle after resolving
- -runstorage FILE - Define the directory to use for the framework's work area.
- -runsystemcapabilities* CAPABILITY (',' CAPABILITY ) - Define extra capabilities for the remote VM.
- -runsystempackages* PARAMETERS - Define extra system packages (packages exported from the remote VM -runpath).
- -runtimeout DURATION -
- -runtrace BOOLEAN - Trace the launched process in detail
- -runvm KEYS - Additional arguments for the VM invocation. Arguments are added as-is.
- -savemanifest FILE - Write out the manifest to a separate file after it has been calculated.
- -sign PARAMETERS - Report any entries that were added to the build since the last JAR was made.
- -snapshot STRING - String to substitute for "SNAPSHOT" in the bundle version's qualifier
- -sourcepath - List of directory names that used to find sources.
- -sources BOOLEAN - Include the source code (if available on the -sourcepath) in the bundle at OSGI-OPT/src
- -stalecheck srcs ';newer=' depends ( ';' ( warning | error | command ))* ... - Perform a stale check of files and directories before building a jar
- -standalone repo-spec (, repo-spec ) - Disconnects the bndrun file from the workspace and defines its on repositories
- -strict BOOLEAN - If strict is true, then extra verification is done.
- -sub FILE-SPEC ( ',' FILE-SPEC )* - Enable sub-bundles to build a set of .bnd files that use bnd.bnd file as a basis. The list of bnd files can be specified with wildcards.
- -systemproperties PROPERTIES - These system properties are set in the local JVM when a workspace is started. This was mainly added to allow one to set JVM options via system properties.
- -testcontinuous BOOLEAN - Do not exit after running the test suites but keep watching the bundles and rerun the test cases if the bundle is updated.
- -tester REPO-SPEC - Species the tester (bundle) that is supposed to test the code. The default is biz.aQute.tester
- -testpackages PACKAGE-SPEC ( ',' PACKAGE-SPEC ) -
- -testpath REPO-SPEC ( ',' REPO-SPEC ) - The specified JARs from a repository are added to the remote JVM's classpath if the JVM is started in test mode in addition to the -runpath JARs.
- -testsources REGEX ( ',' REGEX )* - Specification to find JUnit test cases by traversing the test src directory and looking for java classes. The default is (.*).java.
- -testunresolved BOOLEAN - Will execute a JUnit testcase ahead of any other test case that will abort if there are any unresolved bundles.
- -undertest true - Will be set by the project when it builds a JAR in test mode, intended to be used by plugins.
- -upto VERSION - Specify the highest compatibility version, will disable any incompatible features added after this version.
- -wab FILE ( ',' FILE )* - Create a Web Archive Bundle (WAB) or a WAR
- -wablib FILE ( ',' FILE )* - Specify the libraries that must be included in a Web Archive Bundle (WAB) or WAR.
- -workingset PARAMETER ( ',' PARAMETER ) * - Group the workspace into different working sets
- -workspace-templates - Define workspace templates for a new workspace
- -x-overwritestrategy - On windows we sometimes cannot delete a file because someone holds a lock in our or another process. So if we set the -overwritestrategy flag we use an avoiding strategy.