Skip to main content

Args

Command-line arguments can be associated with a microservice using the args() method.

Example
public static void main(String[] args) {
Microservice
.create() // Create builder.
.args(args) // Pass in args.
.build() // Create microservice.
.start() // Start microservice.
.join() // Join thread.
;
}

When specified, the arguments can be retrieved using the Microservice.getArgs() method which provides an API for easily accessing command-line arguments using common notation:

Args args = Microservice.getInstance().getArgs();

One main argument (a1):

// a1
String a1 = args.get(0).orElse(null); // "a1"
String a2 = args.get(1).orElse(null); // null

Two main arguments (a1 a2):

// a1 a2
String a1 = args.get(0).orElse(null); // "a1"
String a2 = args.get(1).orElse(null); // "a2"

One main argument and one optional flag with no value (a1 -a2):

// a1 -a2
String a1 = args.get(0).orElse(null);
boolean hasA2 = args.has("a2"); // true
boolean hasA3 = args.has("a3"); // false

One main argument and one optional argument with one value (a1 -a2 v2):

// a1 -a2 v2
String a1 = args.get(0).orElse(null);
String a2 = args.get("a2").orElse(null); // "v2"
String a3 = args.get("a3").orElse(null); // null

One main argument and one optional argument with multiple values (a1 -a2 v2a v2b):

// a1 -a2 v2a v2b
String a1 = args.get(0).orElse(null);
List<String> a2 = args.getAll("a2"); // Contains ["v2a","v2b"]
List<String> a3 = args.getAll("a3"); // Empty list

Same as previous but specifying the argument name multiple times (a1 -a2 v2a -a2 v2b):

// a1 -a2 v2a -a2 v2b
String a1 = args.get(0).orElse(null);
List<String> a2 = args.getAll("a2"); // Contains ["v2a","v2b"]

Specifying the command-line arguments also makes them available through $A SVL variables.

These can be used in the configuration file and throughout various Juneau annotations.

Example
// $A used in variable resolver.
VarResolver varResolver = Microservice.getInstance().getVarResolver();
System.out.println(varResolver.resolve("Arg #1 is set to $A{1}"));
// $A used in annotation.
@Rest(
title="$A{title}",
...
)