如何使用 org.codehaus.mojo 中的 keytool API?

How to use keytool API from org.codehaus.mojo?

我正在尝试使用 codehaus 的 mojo keytool API - http://mojo.codehaus.org/keytool/keytool-api/index.html

我已经建立了一个示例项目,并试图通过 API 执行 changeAlias 请求。

这是我的示例代码:

KeyToolChangeAliasRequest request = new KeyToolChangeAliasRequest();
request.setVerbose(true);
request.setKeystore("keystore.ks");
request.setStorepass("keypass");
request.setAlias(oldAlias);
request.setKeypass("keypass");
request.setDestalias(newAlias);

DefaultKeyTool keyTool = new DefaultKeyTool();
JavaToolResult result = keyTool.execute(request);
result.getExitCode();
result.getExecutionException();

但是,当我 运行 程序出现空指针异常时 -

java.lang.NullPointerException
at org.codehaus.mojo.keytool.DefaultKeyTool.createCommandLine(DefaultKeyTool.java:53)
at org.codehaus.mojo.keytool.DefaultKeyTool.createCommandLine(DefaultKeyTool.java:33)

由于文档不完善,我无法找到如何正确使用 API。

你不能那样使用代码。它必须在 plexus 容器环境中完成。

您可以看到 builder 对象为空的代码在哪里 (http://mojo.codehaus.org/keytool/keytool-api/xref/org/codehaus/mojo/keytool/DefaultKeyTool.html#53),因为它应该通过 plexus 容器注入。

如果您愿意,我们可以讨论改进代码以便更容易地从外部调用(如果您可以使用项目用户或开发邮件列表)。