Каковы лучшие практики для именования целей муравья? - PullRequest
7 голосов
/ 05 декабря 2008

Каковы лучшие практики для именования целей муравья?

Например, что вы ожидаете от запуска целевого «теста»? Все юнит-тесты? Все функциональные тесты? И

Какие стандартные имена используются для запуска различных типов тестов (единичные / функциональные / все)? Существуют ли стандарты для целевых имен для развертывания программного обеспечения в J2SE? в J2EE?

Мой проект использует ant для проекта java с приложениями junit, Swing и J2EE.

Ответы [ 7 ]

13 голосов
/ 23 сентября 2011

См. "Условные обозначения" раздел на этой странице: Элементы стиля муравья

Следующие цели являются общими для многих сборок. Всегда избегайте изменений поведение известного целевого имени. Вам не нужно реализовывать все это в одном проекте.

all               Build and test everything; create a distribution, optionally install. 
clean             Delete all generated files and directories. 
deploy            Deploy the code, usually to a remote server. 
dist              Produce the distributables. 
distclean         Clean up the distribution files only. 
docs              Generate all documentation. 
init              Initialize the build: create directories, call <tstamp> and other common actions. 
install           Perform a local installation. 
javadocs          Generate the Javadoc pages. 
printerdocs       Generate printable documents. 
test              Run the unit tests. 
uninstall         Remove a local installation. 

Эта страница также содержит другие хорошие рекомендации.

6 голосов
/ 09 мая 2009

Для моих Java-проектов в качестве основы я использую имена, определенные в жизненном цикле maven по умолчанию . Для других проектов я также использовал стандартные цели GNU autoconf .

3 голосов
/ 05 декабря 2008

Существует достаточно широко используемый стандарт. Любое имя цели, начинающееся с символа -, не может быть вызвано из командной строки, и поэтому оно, безусловно, должно быть тем, которое не предназначено для непосредственного выполнения. Иногда это называется скрытой целью .

2 голосов
/ 05 декабря 2008

Мы получили хороший опыт работы с короткими и краткими именами целей, которые используют зависимость от других отдельных задач. AFAIK общий стандартный набор

  • INIT
  • чистый
  • компилировать
  • 1010 * расстояние *
  • тест
  • Сообщение

(хотя не могу найти ссылку)

, который очень хорошо работает для нас.

Когда нам приходилось различать типы тестов, мы называли их «test.data» и «test.nondata», чтобы разделить типы тестов, каждый из которых принимался в зависимости от задачи «test». Возможно, вам следует использовать «соглашение об именах методов java», как предложил другой пользователь, но имхо, это не имеет значения.

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

ant dist
ant test report

вместо

ant compile create.distribution
ant test.data test.nondata report.junit.generate report .....
2 голосов
/ 05 декабря 2008

До тех пор, пока они понятны и непротиворечивы во всех ваших проектах, то, что вы их называете, зависит от вас. Простые короткие глаголы обычно являются нормой, и цели следует разбивать логически.

Вы можете пойти по маршруту, предложенному Мэттом Б, назвав свои тестовые цели по типу:

  • тест-блок
  • тест-функциональный
  • тест-все

Или вы можете назвать по инструменту, если, например, у вас есть функциональные тесты Junit, Selenium и Webtest:

  • тест-JUnit
  • тест-Селен
  • тест-WebTest
  • тест-все

Если вы используете атрибут description для целей, которые вы хотите показать любому, кто строит проект, пользователи могут выполнить ant -p, чтобы вывести список доступных целей и выбрать ту, которая им нужна. Полезные описания здесь, вероятно, более важны и более ценны для пользователей, чем то, что фактически названы целями.

Из Руководства по муравьям :

Необязательный атрибут description может использоваться для обеспечения одной линии описание этой цели, которая напечатано с помощью -projecthelp опция командной строки. Цели без такое описание считается внутренним и не будут перечислены, если либо используется опция -verbose или -debug.

1 голос
/ 05 декабря 2008

Соглашение об именах для целей ant должно быть очень похоже на соглашение об именах для методов Java: а именно, простое и описательное, что делает цель.

Вот выдержка из стандарта Sun для именования методов :

Наименование метода

Хотя имя метода может быть любой юридический идентификатор, код соглашения ограничивают имена методов. От соглашение, имена методов должны быть глагол в нижнем регистре или имя из нескольких слов который начинается с глагола в нижнем регистре, следуют прилагательные, существительные и т. д. имена из нескольких слов, первая буква каждое из вторых и следующих слов должен быть написан с большой буквы. Вот некоторые Примеры:

run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty

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

Например, следующие цели кажутся мне подходящими:

  • run-all-tests
  • build
  • clean
  • test-and-release
  • deploy
  • run-code-coverage-metrics

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

Для более подробной информации по теме, ознакомьтесь с Элементы стиля муравья в вики Ant.

1 голос
/ 05 декабря 2008

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

  • test - для модульных испытаний
  • test-integration - для интеграционных испытаний
  • dbtest - для тестов базы данных (если они включены в вышеуказанный пункт)
  • test-all для запуска всего вышеперечисленного

Кроме того, я агностик по поводу использования test или формы множественного числа tests, я, вероятно, сделал оба в разных проектах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...