Создайте проект Java Eclipse из командной строки

118

Есть ли способ скомпилировать проект Java на основе Eclipse из командной строки?

Я пытаюсь автоматизировать свою сборку (используя FinalBuilder, а не ant), и я не являюсь экспертом по Java или Eclipse. Я, вероятно, смогу понять, как это сделать, используя прямые параметры командной строки java, но тогда проект Eclipse кажется напрасным зря.

Если нет возможности скомпилировать проект Eclipse через командную строку, есть ли способ сгенерировать требуемую командную строку java из Eclipse? Или есть какие-то файлы, которые я могу покопаться, чтобы найти шаги компиляции, которые он выполняет за кулисами?


Ребята, ищу ответ, в который НЕ входит муравей. Позвольте мне повторить исходный вопрос ....... Есть ли способ собрать проект Eclipse из командной строки?

Я не думаю, что это необоснованный вопрос, учитывая, что я могу сделать что-то вроде этого для Visual Studio:

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"
Кейт Дж.
источник
3
Как там не плагин / баночка для этого !!
Киевели
1
Хорошо ... Я добавил новый правильный ответ.
Киевели

Ответы:

61

Вы можете создать проект eclipse через рабочую область из командной строки:

eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

Он использует jdt aptплагин для автоматического создания вашего рабочего пространства. Это также известно как «Безголовая сборка». Чертовски сложно понять. Если вы не используете win32 exe, вы можете попробовать следующее:

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

Обновить

Несколько лет назад Eclipse заменили startup.jarна "пусковую установку равноденствия".

https://wiki.eclipse.org/Equinox_Launcher

На Eclipse Mars (MacOX):

java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.eclipse.jdt.apt.core.aptBuild

-dataПараметр определяет местоположение вашего рабочего пространства.

Номер версии программы запуска Equinox будет зависеть от того, какая у вас версия eclipse.

Kieveli
источник
4
Несмотря на то, что я давно ушел из этого проекта и не могу проверить, действительно ли этот ответ работает, я меняю принятый ответ на этот. Потому что это указывает на то, что Eclipse действительно имеет переключатель командной строки.
Keith G,
3
Только одна мысль - похоже, это работает только для уже существующих рабочих пространств. Я предполагаю, что это затрудняет, например, извлечение проекта из системы управления версиями и его создание таким образом.
Джон
Я считаю, что мое рабочее пространство было привязано к репозиторию svn. У него были либо относительные пути, либо соответствующие структуры каталогов.
Киевели
2
Каким вы видите результаты сборки? Я пробовал это и получил вывод: «Создание рабочей области», но я не понял, успешно ли построена или нет.
Дикла
Вы также можете создать свое рабочее пространство с помощью ant-скрипта командной строки. См. Help.eclipse.org/indigo/…
reprogrammer
22

Чтобы завершить ответ Андре, решение для муравьев может быть похоже на решение, описанное в Emacs, JDEE, Ant и компиляторе Eclipse Java , например:

      <javac
          srcdir="${src}"
          destdir="${build.dir}/classes"> 
        <compilerarg 
           compiler="org.eclipse.jdt.core.JDTCompilerAdapter" 
           line="-warn:+unused -Xemacs"/>
        <classpath refid="compile.classpath" />
      </javac>

Элемент compilerarg также позволяет передавать дополнительные аргументы командной строки компилятору eclipse.

Здесь вы можете найти полный пример сценария ant, который будет вызываться из командной строки с помощью:

java -cp C:/eclipse-SDK-3.4-win32/eclipse/plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.eclipse.ant.core.antRunner -buildfile build.xml -verbose

НО все это связано с муравьем, а Кейт не хочет этого.

Информацию о пакетной компиляции см. В разделе « Компиляция кода Java» , особенно в разделе « Использование пакетного компилятора ».

Класс пакетного компилятора находится в подключаемом модуле JDT Core. Имя класса - org.eclipse.jdt.compiler.batch.BatchCompiler. Он упакован в plugins / org.eclipse.jdt.core_3.4.0..jar. Начиная с версии 3.2, он также доступен для отдельной загрузки. Имя файла - ecj.jar.
Начиная с версии 3.3, этот jar также содержит поддержку jsr199 (Compiler API) и поддержку jsr269 (обработка аннотаций). Для использования поддержки обработки аннотаций требуется 1,6 ВМ.

Запуск пакетного компилятора из командной строки даст

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java

или:

java -jar ecj.jar -classpath rt.jar A.java

Все параметры компиляции java также подробно описаны в этом разделе.

Отличие от функции компиляции командной строки Visual Studio заключается в том, что Eclipse, похоже, не читает напрямую свои .project и .classpath в аргументе командной строки . Вы должны сообщить всю информацию, содержащуюся в .project и .classpath, в различных параметрах командной строки, чтобы достичь того же результата компиляции.

Итак, краткий ответ: «да, Eclipse вроде как». ;)

VonC
источник
2
Можно скомпилировать рабочее пространство с проектом Eclipse, используя проект ant4eclipse, но для этого потребуется много смазки, так как вам нужно выполнить все необходимые шаги вручную на основе извлеченной вами метаинформации. Я сделал это для наших собственных проектов, но я бы не рекомендовал это, если вам ДЕЙСТВИТЕЛЬНО не нужно! Мы сделали :-D
Thorbjørn Ravn Andersen
@ Thorbjørn Ravn Andersen: спасибо за отзыв. Вы также можете опубликовать ответ в этой теме, иллюстрирующий вид «смазки для локтей», о которой здесь
говорится
Что ж, то, что я собрал вместе на основе ant4eclipse - для которого требуется файл projectSet.psf - для имитации функциональности «экспорт исполняемого jar-файла», не очень хорошо, поэтому ответа нет. Кроме того, он не запускает Eclipse, а эмулирует Eclipse с помощью ant: D
Thorbjørn Ravn Andersen
Наткнулся на этот старый ответ: мы обнаружили, что «эмуляция сборки Eclipse с использованием файлов конфигурации Eclipse» в конечном итоге слишком хрупкая, и я настоятельно рекомендую другим не поступать таким образом. Вместо этого используйте проекты Maven.
Thorbjørn Ravn Andersen
1
@JeffPuckettII Спасибо. Я восстановил ссылку.
VonC
8

Спустя 27 лет мне тоже неудобно разрабатывать IDE. Я попробовал эти предложения (см. Выше) - и, вероятно, просто не все сделал правильно - поэтому я провел веб-поиск и нашел то, что у меня сработало, на http://incise.org/android-development-on-the- командная строка.html '.

Ответ, похоже, представлял собой комбинацию всех приведенных выше ответов (пожалуйста, скажите мне, если я ошибаюсь, и примите мои извинения, если это так).

Как упоминалось выше, eclipse / adt не создает необходимых файлов ant. Чтобы скомпилировать без Eclipse IDE (и без создания скриптов ant):

1) Создайте build.xml в каталоге верхнего уровня:

android list targets  (to get target id used below)

android update project --target target_id --name project_name  --path top_level_directory

   ** my sample project had a target_id of 1 and a project name of 't1', and 
   I am building from the top level directory of project
   my command line looks like android update project --target 1 --name t1 --path `pwd`

2) Далее компилирую проект. Меня немного смутила просьба не использовать слово «муравей». Будем надеяться, что запрашивающий имел в виду, что он не хотел писать сценарии для муравьев. Я говорю это, потому что следующим шагом будет компиляция приложения с помощью ant

 ant target

    this confused me a little bit, because i thought they were talking about the
    android device, but they're not.  It's the mode  (debug/release)
    my command line looks like  ant debug

3) Чтобы установить apk на устройство, мне снова пришлось использовать ant:

 ant target install

    ** my command line looked like  ant debug install

4) Для запуска проекта на моем телефоне с Android я использую adb.

 adb shell 'am start -n your.project.name/.activity'

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb shell 'am start -n com.example.t1/.MainActivity'
    I also found that if you type 'adb shell' you get put to a cli shell interface
    where you can do just about anything from there.

3A) Примечание: для просмотра журнала с устройства используйте:

 adb logcat

3B) Второе примечание: ссылка, упомянутая выше, также включает инструкции по созданию всего проекта из команды.

Надеюсь, это поможет с вопросом. Я знаю, что был очень счастлив найти здесь что-нибудь по этой теме.

Чарльз Томас
источник
1
если проект уже построен (например, в режиме отладки), вы можете использовать его ant installdдля установки без сборки
serv-inc
4

Обычный подход работает наоборот: вы создаете свою сборку на основе maven или ant, а затем используете интеграции для своей выбранной IDE, чтобы вы были независимы от нее, что особенно важно. Это важно, когда вы пытаетесь ускорить работу новых членов команды или используете конфликтный сервер интеграции для автоматизированных сборок. Я рекомендую использовать maven, и пусть он сделает всю тяжелую работу за вас. Создайте файл pom и сгенерируйте проект eclipse через mvn eclipse: eclipse. НТН

Андре
источник
4
Часто гораздо лучше подражать текущему рабочему процессу, чем предлагать каждому разработчику изменить свое поведение. Особенно, когда Eclipse намного быстрее муравья.
Thorbjørn Ravn Andersen
2

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

JesperE
источник
1

Просто хотел добавить к этому свои два цента. Я попытался сделать так, как @Kieveli предложил для не win32 (повторяется ниже), но у меня это не сработало (в CentOS с Eclipse: Luna):

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

В моей конкретной настройке на CentOS с использованием Eclipse (Luna) это сработало:

$ECLIPSE_HOME/eclipse -nosplash -application org.eclipse.jdt.apt.core.aptBuild  startup.jar -data ~/workspace

Результат должен выглядеть примерно так:

Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Cleaning output folder for test
Build done
Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Preparing to build test
Cleaning output folder for test
Copying resources to the output folder
Analyzing sources
Compiling test/src/com/company/test/tool
Build done

Не совсем уверен, почему он, по-видимому, сделал это дважды, но, похоже, это сработало.

jkwinn26
источник
0

Привет Просто дополнение к комментариям VonC. Я использую компилятор ecj для компиляции своего проекта. бросалось в глаза, что некоторые классы не найдены. Но проект отлично справлялся с компилятором javac.

Итак, я просто добавил классы в путь к классам (который мы должны передать в качестве аргумента), и теперь он работает нормально ... :)

Кульбир Сингх


источник
-3

Короткий ответ. Нет. Eclipse не имеет переключателя командной строки, такого как Visual Studio, для создания проекта.

pdeva
источник
5
Короткий ответ: да. Eclipse вроде как делает. За исключением того, что вы должны сообщать всю информацию, содержащуюся в .project и .classpath, в различных параметрах командной строки
VonC,
Для этого обычно используются внешние (для Eclipse) решения для сборки, такие как ant или maven, как отмечено в других ответах.
JR Lawhorne,