当前位置: 首页 > 面试题库 >

通过命令行自动将Java(Android)项目导入Eclipse工作区

拓拔辰钊
2023-03-14
问题内容

我试图通过命令行(使用bash脚本)自动将项目导入Eclipse工作区。我已经看到很多帖子建议即使对于非C / C
++项目也使用CDT无头构建,但是我想避免下载CDT,因为我的项目都是Java /
Android项目,并且我希望能够对许多人实现自动化无需让他们都下载CDT。我已经尝试了以下无用的JDT无头构建:

eclipse -nosplash \
    -application org.eclipse.jdt.apt.core.aptBuild \
    -data [absolute_path_to_desired_workspace] \
    -import [absolute_path_to_project_directories]

输出显示“正在构建工作区”,然后显示“注销”,但是在工作区中打开Eclipse会话在Package Explorer中没有任何显示。

在工作区中查看./metadata/.log文件似乎未显示任何导入错误。

如果不使用CDT无头构建,是否不可能将现有的Java Eclipse项目自动导入Eclipse?


问题答案:

不幸的是,JDT发行版没有任何支持 -import
参数的应用程序,例如CDT的org.eclipse.cdt.managedbuilder.core.headlessbuild。但是您可以轻松编写一个简单的代码:

package test.myapp;

import java.util.LinkedList;
import java.util.List;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;

public class Application implements IApplication {

    public Object start(IApplicationContext context) throws Exception {

        String[] args = (String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS);

        boolean build = false;

        // Determine projects to import
        List<String> projects = new LinkedList<String>();
        for (int i = 0; i < args.length; ++i) {
            if ("-import".equals(args[i]) && i + 1 < args.length) {
                projects.add(args[++i]);
            } else if ("-build".equals(args[i])) {
                build = true;
            }
        }

        if (projects.size() == 0) {
            System.out.println("No projects to import!");
        } else {
            for (String projectPath : projects) {
                System.out.println("Importing project from: " + projectPath);

                // Import project description:
                IProjectDescription description = ResourcesPlugin.getWorkspace().loadProjectDescription(
                        new Path(projectPath).append(".project"));
                IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName());
                project.create(description, null);
                project.open(null);
            }

            // Build all projects after importing
            if (build) {
                System.out.println("Re-building workspace");
                ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.CLEAN_BUILD, new NullProgressMonitor());
                ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor());
            }
        }
        return null;
    }

    public void stop() {
    }
}

您的plugin.xml应包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         id="App"
         point="org.eclipse.core.runtime.applications">
      <application
            cardinality="singleton-global"
            thread="main"
            visible="true">
         <run
               class="test.myapp.Application">
         </run>
      </application>
   </extension>
</plugin>

创建并将插件导出为“ test.myapp_1.0.0.jar”。然后,您可以按以下方式使用它:

  1. 将test.myapp_1.0.0.jar复制到您的Eclipse / dropins /文件夹中
  2. 将所有需要的插件复制到目标工作空间目录:

cp -r项目/ * NewWorkspace /

  1. 将所需的项目导入工作空间:

蚀-nosplash-应用程序test.myapp.App-数据NewWorkspace-导入/ path / to / NewWorkspace /
project1-导入/ path / to / NewWorkspace / project2等…

  1. 现在,您可以安全地从Eclipse / dropins /文件夹中删除test.myapp_1.0.0.jar。

我已经上传了所有代码,包括此处导出的插件:https :
//github.com/spektom/eclipse-import



 类似资料:
  • 我正在使用eclipse JDT并想知道是否有任何方法可以从命令行导入项目。对于eclipse CDT,无头构建应用程序可以达到这个目的,但对于eclipse JDT我无法做到这一点。 我还研究了一些堆栈溢出的帖子,并附带了下面的链接。这里建议的解决办法行不通,因此请我在这里表示关切。如果有人有什么解决办法,请告诉我? 通过命令行将Java(Android)项目自动导入Eclipse工作区 谢谢

  • 如您所见,这个错误来自AndroidManifest。xml,它发生在android studio中,我查了很多信息,不知道它是如何产生的,如果你能帮我一把,我很感激。 我想添加的另一件事是,该活动在此文件中显示了illeagal。

  • 问题内容: 我正在尝试将很大的.csv文件(〜4gb)导入mysql。我正在考虑使用phpmyadmin,但是您的最大上传大小为2mb。有人告诉我,我必须使用命令行。 我打算按照以下说明将其导入:http : //dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680 将.csv表中的第一行设置为mysql表中的列名的命令是什么?该选项可通过p

  • 问题内容: 我正在尝试导出Java项目。我可以通过使用选项导出-> Java-> JAR文件来创建JAR文件。我无法将此jar文件导入Eclipse(Java的没有导入选项)。我在这里做错什么了吗? 针对Web开发人员使用Eclipse Java EE IDE(版本:Juno发行版) 问题答案: 有比导出和导入罐子更简单的方法。假设您的项目名为MyProject123。只是: 只需使用文件管理器打

  • 问题内容: 有没有一种方法可以从命令行编译基于Eclipse的Java项目? 我正在尝试自动化我的构建(不是使用FinalBuilder蚂蚁),而且我既不是Java专家也不是Eclipse专家。我可能可以弄清楚如何使用直接的Java命令行选项来执行此操作,但是Eclipse项目感觉像是在浪费很多精力。 如果无法通过命令行编译Eclipse项目,是否可以从Eclipse内部生成所需的Java命令行?

  • 您使用的是一个旧的、不受支持的Gradle版本。请使用1.8或更高版本。请在项目的Gradle设置或项目的Gradle包装(如果适用)中指向支持的Gradle版本 有关详细信息,请参阅IDE日志(帮助显示日志) 我在使用Android Studio0.3和Ubuntu的时候,也在Windows 8的盒子上尝试了一下,但也出现了同样的错误。我正在使用并且尝试检查和取消检查。这是窃听器吗?我怎么才能绕