You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Eclipse插件中以编程方式获取活动构建配置?

获取Eclipse活动构建配置与项目名称

实现思路

要获取活动构建配置,需借助Eclipse org.eclipse.core.resources 插件提供的核心API,通过IProject对象获取项目描述IProjectDescription,再从中提取活动配置信息;活动项目则可通过工作台的选择服务获取当前选中的项目。

代码实现

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.navigator.CommonNavigator;
import org.eclipse.ui.navigator.CommonViewer;
import org.eclipse.jface.viewers.IStructuredSelection;

public class BuildConfigHelper {

    // 获取活动构建配置名称
    public static String getActiveBuild() {
        IProject activeProject = getActiveProject();
        if (activeProject == null || !activeProject.exists()) {
            return null;
        }
        
        try {
            IProjectDescription projectDesc = activeProject.getDescription();
            return projectDesc.getActiveBuildConfig();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    // 获取活动项目名称
    public static String getActiveProjectName() {
        IProject activeProject = getActiveProject();
        return activeProject != null ? activeProject.getName() : null;
    }

    // 辅助方法:获取当前选中的活动项目
    private static IProject getActiveProject() {
        IWorkbench workbench = PlatformUI.getWorkbench();
        if (workbench == null) return null;
        
        IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
        if (window == null) return null;
        
        IWorkbenchPage page = window.getActivePage();
        if (page == null) return null;
        
        // 从Project Explorer/Package Explorer获取选中项目
        CommonNavigator navigator = (CommonNavigator) page.findView("org.eclipse.ui.navigator.ProjectExplorer");
        if (navigator == null) {
            navigator = (CommonNavigator) page.findView("org.eclipse.jdt.ui.PackageExplorer");
        }
        
        if (navigator != null) {
            CommonViewer viewer = navigator.getCommonViewer();
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            Object selectedObj = selection.getFirstElement();
            if (selectedObj instanceof IProject) {
                return (IProject) selectedObj;
            }
        }
        
        // 无选中项目时的 fallback:返回工作区首个项目(可按需调整)
        IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
        IProject[] projects = root.getProjects();
        return projects.length > 0 ? projects[0] : null;
    }
}

关键说明

  • 依赖配置:确保插件项目已添加org.eclipse.core.resources和org.eclipse.ui.navigator的依赖。
  • 异常处理:实际使用中可根据需求调整异常逻辑,比如返回空字符串替代null。
  • 项目 fallback:无选中项目时的默认逻辑可自行修改,比如提示用户选择项目而非直接返回首个项目。

内容的提问来源于stack exchange,提问作者Tim Schmid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:34:57