首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Eclipse中动态创建空EMF项目

在Eclipse中动态创建空EMF项目
EN

Stack Overflow用户
提问于 2016-12-08 01:40:11
回答 1查看 230关注 0票数 0

我希望使用Java代码以编程方式创建一个空EMF项目。在使用GUI对话框选择EMF类别下的“空EMF”选项时,所创建的设置基本上是相同的。

我已经找到了用于创建Java项目的代码段。我找不到空EMF项目的任何东西。我认为该功能隐藏在JDT或EMF中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-14 05:31:05

在分析了一些用于生成Eclipse插件项目的代码之后,我得出了如下结论:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package projectGenerator;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;

public abstract class EMFProjectGenerator {

    public static IProject createProject(String projectName) {
        IProject project = null;
        IWorkspace workspace = ResourcesPlugin.getWorkspace();
        int version = 2;
        String finalName = projectName;
        project = workspace.getRoot().getProject(projectName);
        while (project.exists()) { // to avoid duplicates:
            finalName = projectName + version;
            version++;
            project = workspace.getRoot().getProject(finalName);
        }
        IJavaProject javaProject = JavaCore.create(project);
        IProjectDescription projectDescription = ResourcesPlugin.getWorkspace().newProjectDescription(finalName);
        projectDescription.setLocation(null);
        try {
            project.create(projectDescription, null);
        } catch (CoreException exception) {
            exception.printStackTrace();
        }
        List<IClasspathEntry> classpathEntries = new ArrayList<IClasspathEntry>();
        projectDescription.setNatureIds(new String[] { JavaCore.NATURE_ID, "org.eclipse.pde.PluginNature" });
        ICommand java = projectDescription.newCommand();
        java.setBuilderName(JavaCore.BUILDER_ID);
        ICommand manifest = projectDescription.newCommand();
        manifest.setBuilderName("org.eclipse.pde.ManifestBuilder");
        ICommand schema = projectDescription.newCommand();
        schema.setBuilderName("org.eclipse.pde.SchemaBuilder");
        ICommand oaw = projectDescription.newCommand();
        projectDescription.setBuildSpec(new ICommand[] { java, manifest, schema, oaw });
        IFolder srcContainer = null;
        try {
            project.open(null);
            project.setDescription(projectDescription, null);
            srcContainer = project.getFolder("src");
            if (!srcContainer.exists()) {
                srcContainer.create(false, true, null);
            }
        } catch (CoreException exception) {
            exception.printStackTrace();
        }
        IClasspathEntry srcClasspathEntry = JavaCore.newSourceEntry(srcContainer.getFullPath());
        classpathEntries.add(0, srcClasspathEntry);
        classpathEntries.add(JavaCore.newContainerEntry(
                new Path("org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7")));
        classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins")));
        try {
            javaProject.setRawClasspath(classpathEntries.toArray(new IClasspathEntry[classpathEntries.size()]), null);
            javaProject.setOutputLocation(new Path("/" + finalName + "/bin"), null);
        } catch (JavaModelException exception) {
            exception.printStackTrace();
        }
        createManifest(finalName, project);
        return project;
    }

    private static IFile createFile(String name, IContainer container, String content, String charSet) throws CoreException, IOException {
        IFile file = container.getFile(new Path(name));
        InputStream stream = new ByteArrayInputStream(content.getBytes(file.getCharset()));
        if (file.exists()) {
            file.setContents(stream, true, true, null);
        } else {
            file.create(stream, true, null);
        }
        stream.close();
        if (file != null && charSet != null) {
            file.setCharset(charSet, null);
        }
        return file;
    }

    private static void createManifest(String projectName, IProject project) {
        StringBuilder manifestContent = new StringBuilder("Manifest-Version: 1.0\n");
        manifestContent.append("Bundle-ManifestVersion: 2\n");
        manifestContent.append("Bundle-Name: " + projectName + "\n");
        manifestContent.append("Bundle-SymbolicName: " + projectName + "; singleton:=true\n");
        manifestContent.append("Bundle-Version: 1.0.0\n");
        manifestContent.append("Require-Bundle: ");
        manifestContent.append(" org.eclipse.emf.ecore\n");
        IFolder metaInf = project.getFolder("META-INF");
        try {
            metaInf.create(false, true, null);
            createFile("MANIFEST.MF", metaInf, manifestContent.toString(), null);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

这并不完美,但目前应该如此。如果有人对此有所改进,请随时告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41036145

复制
相关文章
【Javaweb学习笔记】在Eclipse中创建Web项目
大家好呀,今天我们来学习用Eclipse创建Web项目,笔者安装了中文的插件,但整体步骤和全英文的差不多噢~
颜颜yan_
2022/12/01
8820
【Javaweb学习笔记】在Eclipse中创建Web项目
eclipse 创建maven 项目 动态web工程完整示例
注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了
noteless
2018/09/11
8870
eclipse 创建maven 项目 动态web工程完整示例
maven之在eclipse中创建maven项目
2、Maven插件的设置: Window->Preferences->Maven ①installations : 指定Maven核心程序的位置。默认是插件自带的Maven程序,改为我们自己解压的那个。 ②user settings : 指定Maven核心程序中 conf/settings.xml 文件的位置,进而获取本地仓库的位置。
西西嘛呦
2020/08/26
7040
maven之在eclipse中创建maven项目
ECLIPSE中创建ABAP项目的步骤
因为我看到很多人都问过关于Eclipse的ABAP开发工具的问题。所以写了这篇配置。
matinal
2020/11/27
2.5K0
创建空maven项目
1.创建空maven项目 创建完成
2020/10/23
2.3K0
创建空maven项目
在eclipse下使用maven创建web项目
第一次接触maven管理的项目是在大三的时候,当时由于忙于享受大学里的美好时光而错过了美好的学习时机。现在想想还是有点小后悔的,如果当初能够好好学习,现在来公司就能够直接手手头上这个项目,不至于这么苦逼,大热天还得抱着电脑学习。但是之前所做的每一件事,只要不是对着天花板发呆,谁知道对我们的日后成长会有什么影响了。所以仔细想想还是抓紧当下,展望未来吧! 在看这篇文章之前,大家伙得先把maven安装配置好,还要在eclipse上安装上maven插件。不然下面的操作你是无法进行下去的。这里推荐一些maven相关教程。 Maven安装配置: http://jingyan.baidu.com/article/d8072ac45d3660ec94cefd51.html Eclipse上安装maven插件: http://blog.csdn.net/wode_dream/article/details/38052639 Maven基础学习教程:http://wiki.jikexueyuan.com/project/maven/overview.html
我是李超人
2020/08/20
8970
eclipse创建maven项目
1.打开eclipse,文件-新建-其他,选择Maven Project
似水的流年
2018/01/12
8950
eclipse创建maven项目
在我们的项目上点击右键,选择properties 并找到 Project Facets ,并点击Convert to faceted form…  然后勾选Dynamic Web Module 并点击ok  如下图:(3.0只有tomcat7才支持)
似水的流年
2019/12/04
6490
eclipse创建maven项目
1.打开eclipse,文件-新建-其他,选择Maven Project 2.第一个打上勾,并输入存储目录 3.下一步,这里的Packing 选择 war的形式 4.由于packin
似水的流年
2018/01/18
9920
eclipse创建maven项目
eclipse创建一个java项目目录_Eclipse创建JAVA项目
为了便于硬盘上的文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发中,也需要将编写的类在项目中分目录存放,以便于文件管理。为此,Jaca引入了包(package)机制,(貌似跟Python的包差不多),程序可以通过声明包的方式对Java类定义目录。Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用Package语句,具体示例如下:
全栈程序员站长
2022/09/09
1.2K0
eclipse创建一个java项目目录_Eclipse创建JAVA项目
ECLIPSE中创建ABAP项目失败原因解析
"Logon to system ERD failed (System "ERD" does not support Eclipse based ABAP Development Tools)"
matinal
2020/11/27
9690
在eclipse中创建maven项目、导出jar包、在windows服务器上运行
我们找到打包好的jar包,以压缩包的形式打开,找到META-INF文件下的MANIFEST.MF文件。
翟凤玺
2020/10/29
4.1K0
在eclipse中创建maven项目、导出jar包、在windows服务器上运行
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
noteless
2018/09/11
1K0
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
在IDEA中创建maven项目
  现在的JavaWeb项目中,绝大多数都是采用的maven结构的项目,而对于maven支持的最好的IDE开发工具为IDEA,所以说我就以在IDEA上为例来进行maven开发的讲解。
全栈程序员站长
2022/06/25
3K0
在IDEA中创建maven项目
使用eclipse创建maven web项目
本文介绍了如何使用Eclipse创建Maven Web项目,包括项目结构、依赖管理、构建以及部署。同时针对Index.jsp报错的问题,进行了详细的解决步骤。
用户1141560
2017/12/26
1.2K0
使用eclipse创建maven web项目
【SAP HANA系列】ECLIPSE中创建ABAP项目的步骤
因为我看到很多人都问过关于Eclipse的ABAP开发工具的问题。所以写了这篇配置。
matinal
2020/11/12
1K0
【SAP HANA系列】ECLIPSE中创建ABAP项目的步骤
eclipse创建java项目无反应
系统升级到win10,重新安装eclipse,发现设置了原来的工作文件夹后,点击Java Project和Project都没有反应
全栈程序员站长
2022/11/17
1.1K0
eclipse创建java项目无反应
【SAP HANA系列】ECLIPSE中创建ABAP项目失败原因解析
"Logon to system ERD failed (System "ERD" does not support Eclipse based ABAP Development Tools)"
matinal
2020/11/12
8540
【SAP HANA系列】ECLIPSE中创建ABAP项目失败原因解析
Eclipse创建springboot+mybatis+gradle项目
plugins { id 'org.springframework.boot' version '2.1.3.RELEASE' id 'java' }
故久
2019/09/29
1.3K0
Eclipse创建springboot+mybatis+gradle项目
eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
如果搜索不到内容,或者有报错信息(index downloads are disabled ,search results may be incomplete)
noteless
2018/09/11
9050
eclipse 创建maven 项目 动态web工程完整示例  maven 整合springmvc整合mybatis

相似问题

EMF for Eclipse

10

Xtext:动态创建EMF资源

13

无法在Eclipse 3.6.1中创建动态项目。

23

如何使用Eclipse EMF创建通用列表?

21

eclipse中的空动态web项目面问题

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文