在我的插件中添加特定的代码路径以支持多个IntelliJ版本

时间:2015-12-18 01:26:30

标签: java intellij-idea intellij-14 intellij-plugin intellij-15

IntelliJ 15在SimpleJavaParameters类中引入了一个名为setUseClasspathJar的新方法。

如果用户运行IntelliJ 15,我希望我的插件设置调用此方法。如果用户运行IntelliJ 14.1,则该方法甚至不可用(它将无法编译)。

如何编写我的插件,以便在签名更改时根据版本执行不同的操作?

1 个答案:

答案 0 :(得分:1)

您只能在IntelliJ IDEA 15上编译并使用if语句保护调用。例如:

final BuildNumber build = ApplicationInfo.getInstance().getBuild();
if (build.getBaselineVersion() >= 143) {
    // call setUseClasspathJar() here
}

基于IntelliJ平台的不同产品的内部版本号范围可用here

另一种选择是使用反射来调用方法(如果可用)。这是更冗长,但com.intellij.util.ReflectionUtil可以使它更容易:

final Method method = 
    ReflectionUtil.getDeclaredMethod(SimpleJavaParameters.class, 
                                     "setUseClasspathJar", boolean.class);
if (method != null) {
  try {
    method.invoke(parameters, true);
  }
  catch (IllegalAccessException e1) {
    throw new RuntimeException(e1);
  }
  catch (InvocationTargetException e1) {
    throw new RuntimeException(e1);
  }
}