我正在尝试让我的Dropwizard应用程序接受自定义命令行参数。文档似乎不足,只有一半解释了该怎么做。考虑到我是新手,我需要一个从代码到命令行使用的非常明确的例子。
有人愿意分享吗?我查看了this个问题,但它没有明确解释,我也无法解决问题。
请不要询问我尝试过的代码示例。相信我,我已经尝试了很多,我不确定要发布什么,因为大多数代码都消失了。如果你知道如何做到这一点,不应该花很长时间来回答。感谢。
答案 0 :(得分:6)
我正在使用手册中所述的示例。如果需要实现以下输出,可以使用提供的代码执行此操作。如果您需要更具体的信息,请告诉我。
Input: java -jar <your-jar> hello -u conor
Output: Hello conor
我不确定您使用的是哪种版本的dropwizard。这是0.9.1
的一个主类
public class MyApplication extends Application<MyConfiguration> {
public static void main(String[] args) throws Exception {
{
new MyApplication().run(args);
}
}
@Override
public void initialize(Bootstrap<DropwizardConfiguration> bootstrap) {
bootstrap.addCommand(new MyCommand());
}
@Override
public void run(ExampleConfiguration config,
Environment environment) {
}
}
MyCommand.java
public class MyCommand extends Command {
public MyCommand() {
super("hello", "Prints a greeting");
}
@Override
public void configure(Subparser subparser) {
// Add a command line option
subparser.addArgument("-u", "--user")
.dest("user")
.type(String.class)
.required(true)
.help("The user of the program");
}
@Override
public void run(Bootstrap<?> bootstrap, Namespace namespace) throws Exception {
System.out.println("Hello " + namespace.getString("user"));
}
}
参考:http://www.dropwizard.io/0.9.1/docs/manual/core.html#man-core-commands
答案 1 :(得分:0)
公共类TestCommand扩展Command {
public TestCommand() {
super("commandName", "CommandDesc");
}
@Override
public void configure(Subparser subparser) {
subparser.addArgument("-ct", "--commandTest").dest("Dest").type(String.class).required(true)
.help("command test");
}
@Override
public void run(Bootstrap<?> bootstrap, Namespace namespace) throws Exception {
System.out.println("command to test -> " + namespace.getString("Dest"));
}
}
运行代码: commandName -ct dwizard 作为args
输出:要测试的命令 - &gt; dwizard 强>
如果您编写了一个扩展“Command”类或类似类的类,那么以下命令应该可以工作 commandName {command} {command arg}