что получилось использовать Cygwin для разработки Java? - PullRequest
0 голосов
/ 30 июня 2011

Мы используем Windows, Linux и Solaris для нашей разработки. В настоящее время в Windows мы используем сценарии оболочки Windows и пакетные (.BAT) сценарии для запуска сценариев, связанных со сборкой. Мы используем Subversion в качестве инструмента контроля версий.

Мы хотим стандартизировать скрипты bash, чтобы они работали одинаково на Windows, Linux и Solaris. Какие проблемы я могу ожидать, если я хочу переместить среду разработки Windows из CMD.EXE в cygwin?

Кроме того, в настоящее время мы используем Ant, но очень скоро перейдем в maven. eclipse - наша среда разработки.

Если это вообще поможет, мы разрабатываем многопоточные серверы - продукт работает только на Solaris или Linux (не на Windows).

Спасибо,

Ответы [ 3 ]

3 голосов
/ 30 июня 2011

Проще вообще не использовать сценарии оболочки или командные файлы.Maven должен быть в состоянии сделать все, что вы положите в сценарий, и он кроссплатформенный.

2 голосов
/ 30 июня 2011

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

Windows использует ; в качестве разделителя пути вместо :

Если ваши сценарии используют PATH и CLASSPATH и другие переменные среды, унаследованные от среды Windows, то сценарии, предполагающие, что они могут разделять / объединять пути в :, будут сбиты с толку.

Аналогично, пути, содержащие точки с запятой, сбивают с толку. Мало кто из сценариев делает это, поскольку точка с запятой в любом случае является специальным символом в bash, но при отладке полезно помнить об этом.

Симлинки рода работ

Некоторые системы сборки, которые я видел, строили деревья символических ссылок. Симлинки в cygwin работают нормально с инструментами, скомпилированными для cygwin, но если вы передадите симлинк в java-программу и ожидаете, что она автоматически разыменовывает ее, то вы, вероятно, будете удивлены.

Нет единого корневого каталога

Тщательно написанные Java-программы могут обойти проблему, заключающуюся в том, что не существует единственного /, и двоичные файлы, скомпилированные / связанные с Cygwin, могут справиться, потому что есть поддельный каталог /cygdrive/ и поддельный /, но другие инструменты могут этого не делать.

Для меня это не было настоящей проблемой, поскольку сценарии сборки не должны переходить от /, но я упоминаю это как еще один источник путаницы.

2 голосов
/ 30 июня 2011

Пока ваши сценарии cygwin не нуждаются в каких-либо программах для конкретной ОС, cygwin должен довольно точно переводить на Unix.Более сложными будут такие вещи, как создание пользователей и права доступа к каталогам, при условии, что ваши сценарии нужно устанавливать, а не просто запускать.

Возможно, вашей самой большой проблемой будут каталоги.

  1. Стандартизацияиспользование / разделителей во всех ваших скриптах (bash и ANT) и в Java сделает вашу жизнь намного проще.Java в Windows (включая ANT) достаточно умен, чтобы правильно анализировать что-то вроде C:/Program Files/myprogram.
  2. Избегайте имен каталогов с пробелами, если это возможно.
  3. Используйте нотацию cygwin /cygdrive/c вместо C:/ в ваших сценариях.

Для Eclipse я бы также стандартизировал переводы UTF-8 и Unix во всех ваших источниках.См. Предпочтения -> Общие -> Рабочая область, Предпочтения -> Интернет -> (CSS | HTML | JSP файлы) и Предпочтения -> XML -> XMLFiles.

И последнее, как вы хотите выполнять скрипты в Cygwin.,У вас может быть пакетный файл, который вызывает скрипт через bash.exe, или вы можете просто указать cygwin на своем пути и выполнить bash напрямую.

...