Будь-який спосіб автоматично створити файл ant build.xml з Eclipse?


76

З Eclipse я виявив, що можу легко експортувати файл збірки Ant для свого проекту . Він містить посилання на сторонні бібліотеки та деякі базові цілі. Я використовую його зі свого глобального файлу збірки. Єдине, що мене турбує з цього приводу, це те, що якщо щось змінено в структурі проекту (наприклад, додавання нової сторонньої бібліотеки), ми повинні подумати (так, що іноді може бути важко!) Щодо регенерації цього файлу build.xml. Цікаво, чи хтось тут знає спосіб автоматичного оновлення. Під "автоматично" я маю на увазі, що не потрібно буде явно просити Eclipse регенерувати його кожного разу, коли це буде потрібно. Я не знаю, що може бути тригером, хоча ...

Будь-які думки чи знання з цього приводу?

Дякую!

MJ


1
Ви пробували розглянути додавання спеціального кроку конструктора?
Kelly S. French

Я не впевнений, як саме я міг би це зробити. Я розглядав розробників проектів. Я думаю, що там щось може бути ... Я, напевно, можу додати конструктор, який генеруватиме файл build.xml, як тільки буде виконано основний "Java Builder". Це те, що ви називаєте будівельним кроком? Я міг би спробувати це, якби мав уявлення про те, як програмно викликати дію експорту мультиплікаційного файлу на проекті. Сумніваюся, що це навіть можливо.
Джоаніс,

Привіт М. Джоаніс, яке рішення Ви нарешті знайшли? Я намагаюся досягти того самого, тому було б непогано, якби ви могли поділитися своїми результатами.
theDmi

Привіт, DMM, мені ще не потрібно було оновлювати цей файл. Отже, я довше не втомився над пошуком способу автоматичного оновлення. Враховуючи простоту структури файлів, я б, мабуть, написав сценарій, що генерує її (одночасно не зв’язуючи IDE та процес створення). У мене багато цілей, які автоматично генеруються, але більшість із них не мають значення в IDE, тому я переходжу до 3-4 основних додатків. Залежить від ваших конкретних потреб ...
Джоаніс

Відповіді:


69

Клацніть правою кнопкою миші проект Eclipse, потім "Експорт", потім "Загальне", а потім "Файли побудови мурашок". Я не думаю, що можливо налаштувати вихідний формат.


На жаль, я додав примітку про "автоматично". Як я вже сказав, я знаю, що можу легко створити та експортувати такий файл. Мене турбує те, що потрібно говорити Eclipse, щоб він регенерував його щоразу, коли це потрібно робити. Мене зацікавив би спосіб автоматичного запуску цієї дії "експортувати файл побудови файлу" на мої проекти. Я не бачу проблем (поки що) з вихідним форматом.
Джоаніс

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

1
Здається, це генерує build.xml для веб-проектів, але не для вух. Чи можу я автоматично створити build.xml для вушного файлу?
Mark W

На даний момент ця функція присутня в плагіні Eclipse Java. Вам потрібен плагін Web Tools Platform та його перспектива J2EE.
Гійом

5

Я намагався зробити те саме сам. Я виявив, що "Експортувати файл побудови мурашок" запускається у файлі org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java. Це знаходиться в плагіні org.eclipse.ant.ui.

Щоб переглянути джерело, скористайтеся перспективою розробки плагінів і відкрийте подання плагінів. Потім клацніть правою кнопкою миші на плагіні org.eclipse.ant.ui та виберіть імпорт як> вихідний проект.

Мій план - створити програму Java, щоб програмно розпочати генерацію файлу ant build і викликати це у файлі Ant кожного разу, коли я будую, додаючи файл ant до конструкторів моїх проектів (клацніть правою кнопкою миші налаштування на проекті під конструкторами вкладка).


2
Виглядає дуже перспективним шляхом. Здається, ви добре розумієтесь на архітектурі плагіна Eclipse. Було б приємно поінформувати нас про будь-який ваш прогрес. Дякую!
Joanis

Оновлення: На жаль, моя робота не дала мені достатньо часу для її реалізації. Натомість командним ритуалом стало те, що кожного разу, коли ми додавали нову залежність, команда реекспортувала файли збірки. Це не ідеально, але воно самозастосовується, тому що якщо хтось намагався виконати збірку на сервері, не експортуючи файли збірки, вона зазвичай зламалася.
Трістан Ратчфорд,

4

У мене була та ж проблема, наше робоче середовище базується на проектах Eclipse Java, і нам потрібно було автоматично створити файл ANT, щоб ми могли використовувати сервер безперервної інтеграції (у нашому випадку Дженкінс).

Ми випустили наш власний інструмент Eclipse Java to Ant, який тепер доступний на GitHub:

ant-build-for-java

Щоб скористатися ним, зателефонуйте:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>]

Перший аргумент - це папка зі сховищами. Він буде шукати в папці рекурсивно будь-який .projectфайл. Інструмент створить build.xmlу вказаній папці.

За бажанням, другим аргументом може бути експортований файл .userlibraries з Eclipse, необхідний, коли будь-який з проектів використовує бібліотеки користувачів Eclipse. Інструмент був протестований лише в бібліотеках користувачів із використанням відносних шляхів, це те, як ми їх використовуємо в нашому репо. Це означає, що JAR та інші архіви, необхідні проектам, знаходяться всередині проекту Eclipse і на них посилаються звідти.

Інструмент підтримує лише залежності від інших проектів Eclipse та від бібліотек користувачів Eclipse.


2

Погляньте на файл .classpath у своєму проекті, який, ймовірно, містить більшість потрібної інформації. Найпростішим варіантом може бути згорнути власний "build.xml export", тобто переробити .classpath у новий build.xml під час самої збірки, а потім викликати його за допомогою підзадачі ant.

Розбір невеликого XML мені здається набагато простішим, ніж підключення до Eclipse JDT.


1
Я абсолютно згоден з тим, що синтаксичний аналіз XML-файлу набагато привабливіший, ніж написання плагіна Eclipse чи чогось подібного. Ваша пропозиція цікава, але хіба файл .classpath "трохи" лаконічний? Мій забезпечує 5 шляхів і все. Чудовим у експортованому файлі збірки Ant є те, що він не тільки забезпечує ціль для побудови цілого, але також забезпечує правильні цілі, що дозволяють запускати тести JUnit. Я буду це пам’ятати.
Джоаніс

Влучне зауваження. Я очікував би, що Eclipse також враховує "характер проекту", визначаючи, які цілі генерувати у файлах збірки. Ви можете перевірити, як Eclipse генерує build.xml, оскільки він сам використовує ant. Але це повертає вас до необхідності робити «науковий проект», щоб зрозуміти ці внутрішні елементи Eclipse. Можливо, кроки Builder дійсно є правильним варіантом.
Ян Шифер

2

Якщо вам потрібні лише записи про шлях до класу, я роблю щось на зразок наступного, щоб використовувати шлях побудови eclipse.

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" />

Потім встановіть це значення у шляху

<path id="eclipse.classpath">
    <pathelement path="${classpath.classpathentry.path}"/>
</path>


<target name="compile" depends="init">

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled">
        <classpath refid="eclipse.classpath"/>
    </javac>
</target>

2

Я той, хто подарував експортний фільтр Ant для Eclipse. Я додав функцію автоматичного експорту, але лише до мого особистого плагіна eclipse2ant , який я досі зберігаю для координації виправлень помилок.

На жаль, я не маю часу об’єднати його з офіційними збірками Eclipse.


0
  • У головному меню виберіть « Файл»> «Експорт » (або клацніть правою кнопкою миші на назві проекту та виберіть « Експорт»> «Експорт…» ).
  • У діалоговому вікні Експорт виберіть Загальне> Файли побудови мурашок таким чином: введіть тут опис зображення

  • Натисніть Далі . На екрані Generate Ant Buildfiless:

    • Перевірте проект у списку.
    • Зніміть прапорець біля пункту "Створити ціль для компіляції проекту за допомогою компілятора Eclipse" - оскільки ми хочемо створити файл збірки, який не залежить від Eclipse.
    • Залиште ім'я для файлу збірки Ant за замовчуванням: build.xml

введіть тут опис зображення

  • Клацніть Готово , Eclipse створить build.xmlфайл у каталозі проекту наступним чином:
    введіть тут опис зображення
  • Двічі клацніть на build.xmlфайлі, щоб відкрити його вміст у редакторі Ant: введіть тут опис зображення

джерело

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