Skip to content

nkonev/Coursework-on-Software-Engineering

Repository files navigation

В данном руководстве описаны:

  • системные требования
  • подготовка Eclipse Standart (впрочем, оно также подходит для версии Eclipse for Java developers, ибо тех Maven- и WindowBuilder-плагинов, что там стоят, недостаточно) к импорту данного Maven-проекта
  • собственно импорт и сборка данного проекта
  • сборка для разных платформ
  • возникшие в процессе и решённые проблемы
  • ссылки различной степени полезности

a.maven-цели

Для сботки используется build manager Maven; некоторые плагины были отключены(напр.: maven-jar-plugin) и заменены, т. к. в нашем usecase они делали совсем не то, что нужно... а некоторые цели(goals) были переопределены:

  • clean -- очистка
  • compile -- компиляция
  • prepare-package -- сборка .jar -- для любой платформы, возможен кроссбилдинг, см. в соответствующей главе
  • package -- сборка .exe / исполняемого файла -- только для своей платформы, кроссбилдинга нет
  • deploy -- отправка *.jar, *win32*.exe, *win64*.exe на FTP

b.Системные требования

Требования? А где ожидаемая кроссплатформенность, мы же используем Java...

  1. Требования к IDE

Возникли из-за проблем совместимости версий Eclipse с плагинами для него(m2e, Maven SCM Handler for EGit).
Так вот, руководство актуально для Eclipse Kepler: Eclipse Standard 4.3 или Eclipse IDE for Java Developers 4.3 на момент 2 ноября 2013.

У товарища была проблема при использовании Eclipse IDE for Java EE Developers версии Juno.

  1. Требования к версиям библиотек

Описаны в файле pom.xml :)

Учитывая отсутствие .project, .settings, а тем более .classpath проект теоретически можно собрать даже без среды.

  1. Требования к ОС

Являются следствием системозависимости либы SWT, на данный момент(6 ноября 2013) в pom.xml созданы профили для Windows x86, Windows AMD64, Linux x86 и Linux AMD64.

Mac OS не поддерживается библиотекой Hunspell-BridJ.

c.Подготовка Eclipse

I. Добавление кнопок git на панель

Взято из предыдущего моего мануала Eclipse+GitHub

II. Установка Maven-плагина

Взято отсюда.
Для установки:

  1. зайдите в меню Help->Install New Software
  2. Выберите Work with --All Available Sites--
  3. в фильтре наберите m2e и отметьте плагины как показано на рисунке
  4. Отключите галочки, как написано здесь, чтобы Maven не забивал Workspace лишним мусором на полгигабайта.

III. Установка коннектора Maven SCM Handler for EGit

Взято отсюда и обновлено.
Коннектор нужен для того чтобы на V-м шаге в поле 'SCM URL' был пункт 'git', иными словами, для возможности нормального импорта Maven-проектов из Git-репозиториев.
Мы вынуждены добавлять неподписанный плагин-коннектор из стороннего репозитория, из-за того что коннектор из официального репозитория не совместим с последними версиями Eclipse (судя по ссылке, эта проблема уже была начиная с Eclipse Juno).

  1. Click Help
  2. Install New Software
  3. Uncheck the box labeled Group items by category (this step is important or you won't see the connector in the table)
  4. Paste in this URL http://repository.tesla.io:8081/nexus/content/sites/m2e.extras/m2eclipse-egit/0.14.0/N/0.14.0.201305250025/ <- осторожно, ссылка может быть обрезана из-за того что не умещается по длине - ссылка обновлена по сравнению с той что в статье... Скрин
  5. Eclipse предупредит об установке неподписанного плагина, соглашаемся...
  6. Finish the plugin install wizard and restart the workspace

IV. Установка WindowBuilder(опционально)

d.Импорт

V. Импорт maven-проекта из GitHub в Eclipse Workspace

Взято отсюда и дополнено.

  1. Select the "Import..." context menu from the Package Explorer view
  2. Select "Check out Maven projects from SCM" option under the Maven category
  3. Выбираем SCM URL: git и вставляем ссылку:

Здесь есть одна особенность - а именно: Eclipse может 'задуматься' на несколько секунд(Windows) или на несколько минут(Linux) перед тем, как собственно отобразить проект в Package Explorer.
4. Дальше обновляем проект(иногда сам Maven просит это сделать через Problems View):
Maven -> Update Project...

Снимаем галочку Offline:

5. Скорее всего на значке проекта будет восклицательный знак, либо красный крест - это от того что Eclipse не видит нужных библиотек(зависимостей).
Сейчас мы их скачаем:
Запускаем Тесты: Run As -> Maven test
Запускаем тесты
Ждём, пока maven скачает все нужные для сборки maven-плагины и зависимости(библиотеки)... Куда?

Успех:

Если на значке проекта по-прежнему остаётся восклицательный знак или красный крест, то обновляем проект.

e.Сборка для разных платформ

Предположим, у вас платформа win x86 и вы собираетесь сделать билд для win x86_64.
При попытке сборки с указанием профиля mvn prepare-package -P winprofile64 в результирующий jar добавятся библиотеки SWT для win x86 (т. к. профиль winprofile32 активировался сам из-за тега <activation>), а плагин manen-assembly-plugin не произведёт замену, из-за того что содержащиеся в архиве org.eclipse.swt.win32.win32.x86_64-4.3.jar файлы swt-xulrunner-win32-4332.dll, ... имеют идентичные названия с уже добавленными файлами для org.eclipse.swt.win32.win32.x86-4.3.jar.

В результате на выходе в папке target имеем файл Coursework-on-Software-Engineering-win64--2014-01-12--15-39-standalone.jar, который вроде бы и предназначен для x64, а на самом деле содержит x32-библиотеки, и на x64 не запустится в принципе.

Решение:
Нужно принудительно деактивировать профиль вашей платформы, в нашем случае это winprofile32 :
mvn prepare-package -P winprofile64,!winprofile32

f.Известные проблемы

  1. Ругается на наличие BOM: illegal character: \65279

Проблема проявилась на Linux Mint amd64, но не проявилась на Windows x86.
Решение:
# Removing BOM from all text files in current directory:
sed -i '1 s/^\xef\xbb\xbf//' *.java

  1. Куда подевался гигабайт дискового пространства?

  1. Maven скачивает зависимости(библиотеки) и прочие maven-плагины в ~/.m2/repository на Linux и в %USERPROFILE%\.m2\repository на Windows. Очищать эти папки во время работы над проектом нет смысла.

  2. По непонятным причинам Maven забирает примерно 500МБ в Your_Workspace_path/.metadata/.plugins/org.eclipse.m2e.core/nexus
    Это безобразие можно отключить, открыв Window -> Preferences

    и выставив галочки вот так: alt-текст
    (решение взято отсюда, но нужно оставить снятой галочку Offline, иначе не скачаются новые файлы(плагины и зависимости), а значит мы не сможем собрать только что импортированный проект).
    Затем можно удалить папку Your_Workspace_path/.metadata/.plugins/org.eclipse.m2e.core/nexus.

  3. pom.xml скорее всего не совместим со старым maven 2.x


В Eclipse, судя по возникшим проблемам, используется maven 3.x.

  1. An error occurred while collecting items to be installed...

Или "Восстанавливаем работоспособность Help -> Install New Software и Help -> Check for Updates в Eclipse Kepler".
Взято отсюда и обновлено для Eclipse Kepler.

  1. export the update site listing to bookmarks.xml file (Install/Update->Available Software Sites->Export)

  2. stop eclipse

  3. remove configuration/.settings/org.eclipse.equinox.p2.*.prefs files C:\Program Files\eclipse\p2\org.eclipse.equinox.p2.engine\.settings
    C:\Program Files\eclipse\p2\org.eclipse.equinox.p2.engine\profileRegistry\epp.package.standard.profile\.data\.settings

  4. start eclipse

  5. import the bookmarks.xml file (Install/Update->Available Software Sites->Import) that was exported in step 1

  6. Checking out maven projects has encountered a problem


Возникает при импорте проекта(Import... -> Check out Maven projects from SCM -> SCM URL) на старых версиях Eclipse.

Решение: Используйте Eclipse Kepler 4.3

  1. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

[INFO] —-----------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] —-----------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

Проблема возникает из-за того что встроенный Maven не видит JDK, и как следствие не может скомпилировать:

  • Если не установлена JDK - установить.
  • JDK установлена, но в Eclipse сбились Installed JREs - выставлена JRE:

    Должна быть JDK:
  1. Неправильно отображаются русские буквы


Решение: Properties -> Resource -> Text File Encoding -> UTF-8


Результат:

  1. Внезапно появились ошибки - Eclipse не видит импортируемые пакеты


Решение: обновите проект.

  1. Не работает maven-release-plugin :

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:branch (default-cli) on project Coursework-on-Software-Engineering: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] "git" не является внутренней или внешней
[ERROR] командой, исполняемой программой или пакетным файлом.

Решение:

  1. Добавьте путь к git.exe в PATH
    Добавьте путь к git.exe в PATH
    1.1 Удостоверьтесь, что git.exe виден из консоли, набрав git:

  2. Перезапустите Eclipse

  3. git, запущенный maven-release-plugin'ом требует имя и email:


[ERROR]
[ERROR] *** Please tell me who you are.
[ERROR]
[ERROR] Run
[ERROR]
[ERROR] git config --global user.email "you@example.com"
[ERROR] git config --global user.name "Your Name"
[ERROR]
[ERROR] to set your account's default identity.
[ERROR] Omit --global to set the identity only in this repository.
[ERROR]

Решение:

  1. Window -> Preferences -> Team -> Git -> Configuration -> System Settings -> Add Entry...

  2. Key: user.name, Value: your_name

  3. Key: user.email, Value: your_email@gmail.com

  4. maven-release-plugin зависает на git push или куда вписывать логин-пароль?


В консоли отображается
[INFO] Executing: cmd.exe /X /C "git push https://github.com/nikit-cpp/Coursework-on-Software-Engineering.git 0.1.x"
[INFO] Working directory: E:\Programming\Examples 9 java\swt\Coursework-on-Software-Engineering
а в диспетчере задач висит процесс git.exe

Решение: нужно указать имя и пароль:

  • способ 1: создать в папке проекта файл release.properties с 2-мя строками:
    scm.username=your_github_username
    scm.password=your_github_password

Не забудьте добавить файл release.properties в .gitignore, вы же не хотите запушить свой логин и пароль на публичный репозиторий :)

Судя по всему он изменяется с каждой версией, и вышеупомянутые строки придётся вписать ещё раз...

  • способ 2: дописать параметры при вызове maven: -Dusername=your_github_username -Dpassword=your_github_password
  1. Не работает release:prepare

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project Coursework-on-Software-Engineering: Failed to invoke Maven build. Error configuring command-line. Reason: Maven executable not found at: E:\Programming\Examples 9 java\swt\Coursework-on-Software-Engineering\EMBEDDED\bin\mvn.bat -> [Help 1]
release-plugin не способен вызвать embedded maven, поэтому придётся поставить maven(да-да, с дописыванием в PATH - чтобы его можно было вызвать из консоли, набрав mvn) и задать его в настройках Eclipse: Window -> Prefrences -> Maven -> Installations




g.Полезные ссылки

About

Рубрикация текста с помощью Hunspell.

Resources

Stars

Watchers

Forks

Packages

No packages published