Сборка проекта Eclipse Java из командной строки - PullRequest
115 голосов
/ 16 октября 2008

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

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

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


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

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

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"

Ответы [ 8 ]

58 голосов
/ 16 сентября 2009

Вы можете построить проект 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

На затмении Марса (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 указывает местоположение вашего рабочего пространства.

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

22 голосов
/ 16 октября 2008

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

      <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.

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

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. Он упакован в плагины / org.eclipse.jdt.core_3.4.0..jar. Начиная с версии 3.2 он также доступен для отдельной загрузки. Имя файла - ecj.jar.
Начиная с версии 3.3 этот jar-файл также содержит поддержку jsr199 (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 в различных параметрах командной строки, чтобы получить тот же результат компиляции.

Итак, короткий ответ: «Да,« Затмение »делает это». ;)

8 голосов
/ 30 сентября 2013

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

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

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

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) Примечание второй стороны: ссылка, упомянутая выше, также содержит инструкции по сборке всего проекта из команды.

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

4 голосов
/ 16 октября 2008

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

2 голосов
/ 16 октября 2008

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

1 голос
/ 04 июня 2015

Просто хотел добавить к этому два моих цента. Я попытался сделать, как @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

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

0 голосов
/ 02 декабря 2008

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

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

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

0 голосов
/ 16 октября 2008

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

...