Подтвердить что ты не робот

Создание Eclipse IDE с нуля - как указать целевую ОС?

Это сообщение о создании всей Eclipse IDE из исходного кода - и, в частности, о том, как указать целевую ОС, для которой вы хотите создать исполняемый файл.

введите описание изображения здесь

Я нашел следующий учебник, который поможет мне выполнить процедуру сборки: http://www.vogella.com/tutorials/EclipsePlatformDevelopment/article.html

Особенно полезен раздел 13 этого учебника. Я расскажу о шагах, которые нужно предпринять один за другим здесь, поэтому вам не нужно читать учебник по vogella.

НЕОБХОДИМЫЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ:

По-видимому, на вашем компьютере (Windows) должно быть установлено следующее программное обеспечение:

  • Git
  • Maven Version 3.3.1 (убедитесь, что папка bin, в которой вы извлекаете Maven, добавляется в PATH. Инструкции по установке см. в https://maven.apache.org/install.html)
  • Oracle 1.8 JDK или выше (не забудьте установить переменную среды JAVA_HOME)

Теперь вы готовы начать:

ШАГ 1:

Создайте новую папку на диске C:\. Назовите его C:\myEclipse. Это будет папка, в которой мы вытаскиваем репозиторий Git последней версии Eclipse.

ШАГ 2:

Откройте оболочку Windows cmd с правами администратора (щелкните правой кнопкой мыши по значку cmd, если вы сделали один на своем рабочем столе, и выберите open with admin rights). Перейдите в эту папку с помощью команды cd C:\myEclipse. Теперь введите следующую команду: git config --system core.longpaths true. Это уведомляет Git, что длинные имена могут встречаться в репозитории. Забудьте эту команду, и это приведет к ошибкам позже.

ШАГ 3:

Клонировать репозиторий Git:

git clone -b master --recursive git://git.eclipse.org/gitroot/platform/eclipse.platform.releng.aggregator.git

Теперь вам нужно иметь терпение, чтобы весь исходный код был скопирован в вашу локальную папку.

ШАГ 4:

Наконец, пришло время начать сборку. Процедура сборки займет несколько часов, поэтому целесообразно пропустить модульные тесты. Поэтому не забудьте добавить параметр -DskipTests. Это команда для запуска сборки:

mvn clean verify -DskipTests

Через несколько часов сборка должна завершиться.

ШАГ 5:

Результаты сборки теперь должны быть в следующей папке:

C:\myEclipse\eclipse.platform.releng.aggregator\eclipse.platform.releng.tychoeclipsebuilder\sdk\target\products

Обратите внимание, что Eclipse IDE построена для всех возможных целевых машин. 32-битная Windows, 64-битная Windows, Macintosh, Linux,... Неудивительно, что это занимает несколько часов! Я хотел бы создать только одну цель - например, мою 64-битную машину Windows. Это, мы надеемся, значительно сократит время сборки и позволит быстрее проверить изменения кода.

Кто-нибудь знает, как достичь этого?


EDIT:

Я добавил аргумент -Dnative=win32.win32.x86_64 в команду сборки. К сожалению, я получаю сообщение об ошибке через 15-20 минут. На этот раз я добавил аргумент -X, чтобы получить отладочную информацию:

                      ...

[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

У меня все еще нет ответа, поэтому я начал щедрость. Повторите шаг 1 до шаг 5 на вашем компьютере (с аргументом -Dnative=win32.win32.x86_64, добавленным к четвертому шагу). Достижили ли вы успешную сборку Eclipse IDE только для одной целевой ОС (желательно Windows 64-bit)? Делает ли сборку быстрее - по сравнению с общим процессом сборки, который предназначен для всех ОС?

PS: У меня есть другие вопросы, связанные с темой Eclipse "Build from scratch". Если вам интересно:

Давайте объединимся, чтобы самостоятельно создать IDE Eclipse - и настроить его на наши нужды; -)


EDIT:

г/ПСС. Zapl написал интересный комментарий. Он/она считает, что аргумент -Dnative неверен, после того как он прочитал следующую ссылку: http://comments.gmane.org/gmane.comp.ide.eclipse.cbi.devel/896

Надеюсь, мы подошли бы ближе к ответу: -)


ЗАВЕРШЕНИЕ:

Внезапно этот вопрос привлек внимание сообщества. Вскоре у меня появилось много предложений/ответов. Я не могу проверить каждый из них прямо сейчас, потому что процедура сборки занимает около 2 часов.

У меня осталось 19 часов, чтобы наградить 50 очков. Пожалуйста, дайте мне знать, если вы успешно воспроизвели STEPS 1..5 из этого вопроса на своей собственной машине и смогли создать Eclipse IDE с нуля для одной конкретной ОС. Я дам вам бонус: -)

4b9b3361

Ответ 1

Этот фрагмент взят из рабочего файла pom.xml, который экспортируется в win32.win32.x86_64. Возможно, некоторые части не требуются для вашего проекта, но это может быть хорошей отправной точкой для добавления этого в ваш файл 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, чтобы включить параллельные сборки. Я, наконец, закончил s > mvn clean verify -DkipTests -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. Таким образом, я проверил строки 915 и 1012 файла \eclipse.platform.swt\bundles\org.eclipse.swt\buildSWT.xml. После установки failonerror = "false" (по умолчанию установлено значение "true" ) в обеих строках я смог продолжить сборку. Я оцениваю это как очень плохое решение, и это не должно быть окончательным решением проблемы, чтобы отключить такие тесты.

Наконец, я закончил с ошибками в проекте org.eclipse.pde.build.tests и остановился после проблем. Весь проект, кажется, неправильно сконфигурирован во многих частях, и пока я не нашел лучшего решения. Люди должны помнить о золотом правиле не совершать ничего, что нарушает сборку, чтобы избежать таких проблем. Возможно, проблемы будут решены после нескольких обновлений для репо.

Ответ 2

Из https://wiki.eclipse.org/Platform-releng/Platform_Build#Building_natives

Необязательно, вы можете передать параметр -Dnative = с помощью одного из следующих параметров для компиляции туземцев для указанного native.

  • cocoa.macosx.x86
  • cocoa.macosx.x86_64
  • gtk.linux.x86
  • gtk.linux.x86_64
  • win32.win32.x86
  • win32.win32.x86_64
  • win32.wce_ppc.arm

Аргумент будет -Dnative=win32.win32.x86_64

Ответ 3

Существует несколько проектов, которые здесь создаются

  • Местные жители SWT. (-Dnative =)
  • IDE. (независимая от платформы)

Туроператоры SWT создаются (командой SWT) каждый день в 19:00 EST/EDT каждый день и помещаются в eclipse.platform.swt.binaries.git repo. Для этой сборки требуется довольно много зависимостей, таких как visual studio, xulrunner, WebKit и т.д. Для тестирования сборки я не предлагаю вам попробовать это.

CBI (Common Build Infrastructure) делает плагин eclipse строит и подписывает и упаковывает. Этот процесс независим от платформы.

CBI build начинается в 20:00 EST/EDT ежедневно, а swt.binaries собираются только во время упаковки. Упаковка, вероятно, займет около 5 минут в течение всего процесса. Поэтому я не ожидаю большой разницы, если вы укажете только 1 цель для сборки.

Ответ 4

Чтобы настроить таргетинг только на одну ОС, вы должны указать целевую среду в родительском файле pom.xml(см. Tycho - среда выполнения задач)

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
        <environments>
            <environment>
                <os>win32</os>
                <ws>win32</ws>
                <arch>x86</arch>
            </environment>
        <environments>
    </configuration>
</plugin>

Если вы используете PDE Build вместо Maven/Tycho, то свойство Ant configs, например -Dconfigs="win32, win32, x86".

FYI: Eclipse Platform CI, который генерирует архивы Eclipse SDK