gpt4 book ai didi

java - 从头开始构建 Eclipse IDE - 如何指定目标操作系统?

转载 作者:IT王子 更新时间:2023-10-29 00:43:22 25 4
gpt4 key购买 nike

这篇文章是关于从源代码构建整个 Eclipse IDE - 尤其是如何指定要为其构建可执行文件的目标操作系统。

enter image description here

我找到了以下教程来指导我完成构建过程:http://www.vogella.com/tutorials/EclipsePlatformDevelopment/article.html

尤其是该教程的第 13 章很有帮助。我将在这里一一描述需要采取的步骤——所以你不需要阅读 vogella 教程。

需要的软件:

显然,您需要在 (Windows) 机器上安装以下软件:

  • Git
  • Maven 版本 3.3.1(确保将提取 Maven 的 bin 文件夹添加到 PATH。有关安装说明,请参阅 https://maven.apache.org/install.html )
  • Oracle 1.8 JDK 或更高版本(不要忘记设置 JAVA_HOME 环境变量)

  • 现在您已准备好开始:

    第 1 步:

    C:\ 磁盘中创建一个新文件夹。我们将其命名为 C:\myEclipse 。这将是我们 pull 最新 Eclipse 版本的 Git 存储库的文件夹。

    第 2 步:

    以管理员权限打开 Windows cmd shell(如果您在桌面上创建了一个 cmd 图标,请右键单击 open with admin rights 图标,然后选择 cd C:\myEclipse )。通过命令 git config --system core.longpaths true 转到该文件夹​​。现在输入以下命令: -DskipTests 。这会通知 Git 在存储库中可能出现长名称。忘记此命令,稍后会导致错误。

    第 3 步:

    克隆 Git 存储库:
    git clone -b master --recursive git://git.eclipse.org/gitroot/platform/eclipse.platform.releng.aggregator.git

    现在,您应该有耐心将所有源代码复制到您的本地文件夹。

    第 4 步:

    最后是时候开始构建了。构建过程已经需要几个小时,所以跳过单元测试是明智的。因此不要忘记添加 C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.releng.tychoeclipsebuilder\sdk\target\products 参数。这是开始构建的命令:
    mvn clean verify -DskipTests

    几个小时后,构建应该完成。

    第 5 步:

    构建的结果现在应该在以下文件夹中:
    -Dnative=win32.win32.x86_64
    请注意,Eclipse IDE 是为所有可能的目标机器构建的。 32 位 Windows、64 位 Windows、Macintosh、Linux ……难怪需要几个小时!我只想为一个目标构建 - 例如我的 64 位 Windows 机器。这有望显着减少构建时间,并使我能够更快地验证代码更改。

    有谁知道如何实现这一目标?

    编辑:

    我已将参数 -X 添加到构建命令中。不幸的是,我在 15 到 20 分钟后收到错误消息。这一次,我还添加了参数 -Dnative=win32.win32.x86_64 以获取调试信息:
                          ...

    [INFO] equinox-sdk ........................................ SKIPPED
    [INFO] org.eclipse.rcp.id ................................. SKIPPED
    [INFO] org.eclipse.rcp.sdk.id ............................. SKIPPED
    [INFO] org.eclipse.platform.ide ........................... SKIPPED
    [INFO] org.eclipse.platform.sdk ........................... SKIPPED
    [INFO] org.eclipse.sdk.ide ................................ SKIPPED
    [INFO] eclipse-junit-tests ................................ SKIPPED
    [INFO] eclipse.platform.repository ........................ SKIPPED
    [INFO] platform-aggregator ................................ SKIPPED
    [INFO] -----------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] -----------------------------------------------------------------------
    [INFO] Total time: 23:54 min
    [INFO] Finished at: 2016-06-19T18:12:14+02:00
    [INFO] Final Memory: 668M/3263M
    [INFO] -----------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8: run (natives) on project org.eclipse.swt.win32.win32.x86_64: An Ant BuildException has occured: The following error occurred while executing this line:
    [ERROR] C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:915: The following error occurred while executing this line:
    [ERROR] C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:1012: exec returned: 1
    [ERROR] around Ant part ...<ant antfile="build.xml" target="build_libraries"/>... @ 4:54 in C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt.binaries\bundles\org.eclipse.swt.win32.win32.x86_64\target\antrun\build-main.xml
    [ERROR] -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:
    run (natives) on project org.eclipse.swt.win32.win32.x86_64:
    An Ant BuildException has occured:
    The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:915: The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:1012: exec returned: 1 around Ant part ...<ant antfile="build.xml" target="build_libraries"/>... @ 4:54 in C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt.binaries\bundles\org.eclipse.swt.win32.win32.x86_64\target\antrun\build-main.xml
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    Caused by:
    org.apache.maven.plugin.MojoExecutionException:
    An Ant BuildException has occured:

    The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:915:

    The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:1012: exec returned: 1 around Ant part ...<ant antfile="build.xml" target="build_libraries"/>... @ 4:54 in C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt.binaries\bundles\org.eclipse.swt.win32.win32.x86_64\target\antrun\build-main.xml
    at org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:342)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default BuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 20 more
    Caused by: C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt.binaries\bundles\org.eclipse.swt.win32.win32.x86_64\target\antrun\build-main.xml

    :4: The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml

    :915:The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:1012: exec returned: 1
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:568)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:443)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
    at org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:313)
    ... 22 more
    Caused by: C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml

    :915: The following error occurred while executing this line:
    C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:1012: exec returned: 1
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:568)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:443)
    at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    ... 33 more

    Caused by: C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml:1012: exec returned: 1
    at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:643)
    at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
    at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    ... 46 more
    [ERROR]
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [ERROR]
    [ERROR] After correcting the problems, you can resume the build with the command

    [ERROR] mvn <goals> -rf :org.eclipse.swt.win32.win32.x86_64

    我仍然没有答案,所以我开始赏金。请在您的机器上重现 step 1 直到 step 5 (将 -Dnative 参数添加到第四步)。您是否仅针对一个操作系统目标(最好是 Windows 64 位)成功构建了 Eclipse IDE?与针对所有操作系统的一般构建过程相比,构建速度是否更快?

    PS:我还有一些与 Eclipse“从头开始构建”主题相关的其他问题。如果你有兴趣:
  • Building Eclipse IDE from scratch - how to choose CDT over JDT?
  • Building Eclipse IDE from scratch - how to specify the target OS?
  • Building Eclipse IDE from scratch - making bigger icons sometimes successful

  • 让我们大家联合起来自己构建 Eclipse IDE - 并根据我们的需要对其进行调整 ;-)

    编辑:

    先生/女士Zapl 写了一个有趣的评论。他/她在阅读以下链接后认为 ojit_code 参数不正确:
    http://comments.gmane.org/gmane.comp.ide.eclipse.cbi.devel/896

    希望我们现在能更接近答案:-)

    最终编辑:

    突然,这个问题引起了社区的注意。我在短时间内得到了很多建议/答案。我现在无法验证它们中的每一个,因为构建过程需要大约 2 个小时。

    我还有 19 个小时的时间来奖励 50 点奖励。如果您在自己的机器上成功地从这个问题中复制了 STEPS 1..5,并成功地为一个特定的操作系统从头开始构建 Eclipse IDE,请告诉我。我会给你奖金:-)

    最佳答案

    此代码段取自导出到 win32.win32.x86_64 的工作 pom.xml。
    也许您的项目不需要某些部分,但将其添加到您的 pom 文件可能是一个很好的起点。

    ..
    ..
    <build>
    <plugins>
    <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-maven-plugin</artifactId>
    <version>0.20.0</version>
    <extensions>true</extensions>
    </plugin>
    <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>0.20.0</version>
    <configuration>
    <resolver>p2</resolver>
    <environments>
    <environment>
    <os>win32</os>
    <ws>win32</ws>
    <arch>x86_64</arch>
    </environment>
    </environments>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>0.20.0</version>
    <configuration>
    <compilerArgument>-err:-forbidden</compilerArgument>
    </configuration>
    </plugin>
    </plugins>
    </build>
    ..
    ..

    编辑

    正如评论中提到的,我按照您的步骤操作并遇到了一些问题。我现在解决了大部分问题。如果其他人也遇到很多错误,这里有一些解决方案。
  • 在文件 eclipse.pde.ui/pom.xml 第 19 行中:版本是 4.6.0-SNAPSHOT,但必须是 4.7.0-SNAPSHOT
  • 提示:要加快构建速度,您可以添加例如“-T 4”到 mvn 命令以启用并行构建。我最终以 >mvn clean verify -DSkipTests -T 4 -Dnative=win32.win32.x86_64
  • 结束

    在此修复之后,我能够运行,直到遇到初始问题中提到的相同错误。
    我转到项目文件夹\eclipse.platform.swt.binaries\bundles\org.eclipse.swt.win32.win32.x86_64 并启动了 Ant 构建(Apache Ant 版本 1.9.7)并且它没有错误地完成。但是当它由 Maven 构建执行时,我遇到了同样的错误。
    因此,我检查了文件\eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml 的第 915 和 1012 行。在两行中设置 failonerror="false"(默认设置为“true”)后,我能够继续构建。我认为这是一个非常糟糕的解决方案,它不应该是禁用此类测试的问题的最终解决方案。

    最后,我以项目 org.eclipse.pde.build.tests 中的错误结束并停止关注这些问题。
    整个项目似乎在许多部分配置错误,到目前为止我找不到更好的解决方案。人们应该记住黄金法则,不要提交任何破坏构建的东西,以避免出现此类问题。也许这些问题会在对 repo 进行一些更新后得到解决。

    关于java - 从头开始构建 Eclipse IDE - 如何指定目标操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37885323/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com