我目前正在编写一个Eclipse插件,允许用户使用已包含的一些模板Java代码创建Maven项目。
我正在尝试为mvn clean build
或mvn clean deploy
项目设置一些自定义控件。到目前为止,我有一个自定义包和自定义部署 IHandler
绑定到一些菜单贡献。他们使用 Maven Invoker 来构建如下:
MessageConsole console = ...
console.clearConsole();
console.activate();
MessageConsoleStream consoleOut = console.newMessageStream();
consoleOut.setActivateOnWrite(true);
try (
PrintStream stdout = new PrintStream(consoleOut, true))
{
// Invoke Maven
InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile(new File(project.getFile("pom.xml").getLocation().toOSString()));
request.setGoals(Arrays.asList(goals));
Invoker invoker = new DefaultInvoker();
invoker.setOutputHandler(new PrintStreamHandler(stdout, true));
invoker.execute(request);
} catch (MavenInvocationException e) {
...
}
这在我的Windows 7环境中运行良好,但是当我在Mac环境中测试它时遇到了一些问题,即没有打印到控制台并要求 M2_HOME必须设置。还有其他小问题,我真的觉得我正在重新发明轮子,我应该能够利用Eclipse现有的m2e功能。
所以我开始研究ILaunchConfigurationDelegate
并找到了MavenLaunchDelegate
类。它有限制警告,但我并不担心。我还发现了ExecutePomAction
,它引出了非常熟悉的Maven Build运行配置面板,但我想使用自己的自定义快捷方式。
我希望只用一个选项编写我自己的ILaunchShortcut
: package 或 deploy ,并从这个快捷方式和我的快捷方式调用适当的Maven构建自定义处理程序。问题是...... 我迷失了。
我正在寻找关于从Eclipse插件以编程方式调用maven构建的最佳方式的建议或资源。