Создание 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 с нуля для одной конкретной ОС. Я дам вам бонус: -)
Ответы
Ответ 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