Побудувати проект Eclipse Java з командного рядка


118

Чи є спосіб скласти проект Java на основі Eclipse з командного рядка?

Я намагаюся автоматизувати свою збірку (використовуючи FinalBuilder не мурашник), і я не є експертом з Java або Eclipse. Я, певно, можу зрозуміти, як це зробити за допомогою прямого варіанту командного рядка Java, але тоді проект Eclipse відчуває себе як багато витрачених зусиль.

У випадку, якщо немає можливості скласти проект Eclipse через командний рядок, чи існує спосіб генерувати необхідний командний рядок java зсередини Eclipse? Або є якісь файли, над якими я можу розібратися, щоб знайти кроки компіляції, які вона робить за кадром?


Хлопці, я шукаю відповідь, яка НЕ включає мурашок. Дозвольте мені повторно повторити початкове запитання ....... Чи існує спосіб побудувати проект Eclipse з командного рядка?

Я не думаю, що це необгрунтоване питання, враховуючи, що я можу зробити щось подібне для візуальної студії:

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

3
Як для цього немає плагіна / банку !!
Kieveli

1
Гаразд ... Я додав нову правильну відповідь.
Kieveli

Відповіді:


61

Ви можете побудувати проект затемнення через робочу область з командного рядка:

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

Оновлення

Кілька років тому затемнення замінили 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Параметр визначає місце розташування вашого робочого простору.

Номер версії для запуску рівнодення буде залежати від версії затемнення у вас.


4
Хоча я давно перейшов від цього проекту і не можу перевірити, чи справді ця відповідь працює, чи ні, я змінюю прийняту відповідь на цю. Тому що це вказує, що Eclipse дійсно має комутатор командного рядка.
Кіт Г

3
Лише одна думка - здається, що це працює лише для попередніх робочих просторів. Я думаю, що це ускладнює, наприклад, перевірити проект з контролю джерел і створити його таким чином.
Джон

Я вважаю, що моя робоча область була присвячена сховищу svn. Він або мав відносні шляхи, або відповідні структури каталогів.
Кивелі

2
Як ви бачите результати збірки? Я спробував це, і отримав вихід: "Створення робочої області", але мені не вдалося вказати на те, чи вдала збірка вдалася чи не вдалася.
Дікла

Ви також можете створити свою робочу область за допомогою сценарію мурашки командного рядка. Дивіться help.eclipse.org/indigo/…
репрограміст

22

Щоб завершити відповідь Андре, рішення мурашок може бути таким, як описано в 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 (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 робить". ;)


2
Можна скомпілювати робочу область з проектом Eclipse за допомогою проекту ant4eclipse, але для цього потрібно багато жиру в ліктях, оскільки потрібно зробити всі необхідні кроки вручну на основі вилученої мета інформації. Я зробив це для наших внутрішніх проектів, але я б не рекомендував цього, якщо вам НЕ СПОСІБНО! Ми зробили :-D
Thorbjørn Ravn Andersen

@ Thorbjørn Равн Андерсен: дякую за цей відгук. Ви також можете опублікувати відповідь у цій темі, що ілюструє вид "ліктьової жиру", що тут стосується;)
VonC

ну, те, що я взломав разом на основі ant4eclipse - для якого потрібен файл projectSet.psf - для імітації функціоналу "експорт, який можна виконати", не дуже, отже, немає відповіді. Крім того, це не запуск Eclipse, а емуляція Eclipse за допомогою мурашки: D
Thorbjørn Ravn Andersen

Натрапив на цю стару відповідь: Ми виявили, що "збірка Eclipse зборки за допомогою файлів конфігурації Eclipse" є занадто крихкою в перспективі, і я настійно раджу іншим не йти цим шляхом. Використовуйте натомість проекти Maven.
Thorbjørn Ravn Andersen

1
@JeffPuckettII Дякую Я відновив посилання.
VonC

8

Після 27 років мені теж незручно розвиватися в ІДЕ. Я спробував ці пропозиції (вище) - і, ймовірно, просто не дотримувався всього правильно - тому я здійснив пошук в Інтернеті і виявив те, що працювало для мене на веб-сторінці " http://incise.org/android-development-on-the- command-line.html '.

Відповідь здавалася поєднанням усіх відповідей вище (будь ласка, скажіть, якщо я помиляюся, і прийміть свої вибачення, якщо так).

Як було сказано вище, eclipse / adt не створює необхідних файлів мурашок. Для того, щоб компілювати без затемнення 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 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
якщо проект вже побудований (у режимі налагодження f.ex.), ви можете використовувати його ant installdдля установки без будівництва
serv-inc

4

Звичайний підхід працює навпаки: ви створюєте свою конструкцію на основі maven або ant, а потім використовуєте інтеграції для свого IDE вибору, щоб ви були незалежними від неї, що є esp. Важливо, коли ви намагаєтеся привести нових членів команди до швидкості або використовувати спірний інтеграційний сервер для автоматизованих збірок. Я рекомендую використовувати maven і нехай це робить важкий підйом для вас. Створіть файл pom та створіть проект eclipse через mvn eclipse: eclipse. HTH


4
Часто набагато приємніше наслідувати поточний робочий процес, а не казати кожному розробнику змінити свою поведінку. Особливо, коли затемнення набагато швидше, ніж мураха.
Thorbjørn Ravn Andersen

2

Це запитання містить кілька корисних посилань на безголові складання, але вони здебільшого спрямовані на створення плагінів. Я не впевнений, скільки цього можна застосувати до чистих проектів Java.


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

Не зовсім впевнений, чому це, мабуть, робилося двічі, але, здається, працює.


0

Привіт Просто додаток до коментарів VonC. Я використовую компілятор ecj для складання свого проекту. це було кидання експсеції, що деякі класи не знайдені. Але проект був непоганий за допомогою компілятора javac.

Так що я просто додав класи до classpath (який ми маємо передати як аргумент) і тепер він працює добре ... :)

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


-3

Коротка відповідь. Ні. Eclipse не має комутатора командного рядка, як Visual Studio для створення проекту.


5
Коротка відповідь: так. Затемнення роблять. За винятком того, що ви повинні повідомити всю інформацію, що міститься у .project та .classpath в різних параметрах командного рядка
VonC

Для цього зазвичай використовують зовнішні (для Eclipse) розчини для будівництва, такі як мураха чи мавен, як зазначено в інших відповідях.
JR Lawhorne
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.