Кто-нибудь попробовал эту функцию и получил некоторую обратную связь? Или кто-нибудь знает некоторые полезные образцы для поиска?
Опыт работы с проектом Hudson - Building matrix
Ответ 1
Я пробовал эту функцию несколько месяцев назад, но я больше ее не использую (просто потому, что мне это не нужно, а не потому, что это не очень хорошая функция).
В принципе, вы определяете ось n, каждая ось является свойством с несколькими значениями.
Отпустим пример: вы определяете ось "JDK" с возможными значениями "1.4", "1.5", "1.6", и вы определяете другую базу данных свойств, где возможные значения - "оракул", MySQL".
Таким образом, Хадсон запустит вашу сборку 6 раз:
- с JDK 1.4, с базой данных свойств = oracle (т.е. JVM запускается с -Ddatabase = oracle)
- с JDK 1.5, с базой свойств = оракул
- с JDK 1.6, с базой свойств = оракул
- с JDK 1.4, с базой данных свойств = mysql
- с JDK 1.5, с базой данных свойств = mysql
- с JDK 1.6, с базой свойств = mysql
Затем, как только все будет закончено, вы сможете увидеть результаты для каждой итерации.
Эта функция может быть действительно полезна, когда вам нужно протестировать ваше приложение в нескольких средах (в моем примере с разными версиями JDK или базы данных).
Обратите внимание, что кроме оси JDK вы должны самостоятельно управлять свойством Хадсона. В моем примере приложение должно учитывать свойство "база данных". В конце концов, хорошей идеей является использование этого свойства для включения определенного профиля в конфигурацию Maven2, если вы проектируете mavenized (см. здесь для получения более подробной информации об этом).
Надеюсь, мои объяснения достаточно ясны:)
Ответ 2
Матричные сборки имеют ряд проблем:
- В целом несовместимые с плагинами - они становятся все лучше, но вам нужно быть в курсе последних событий.
- Артефакты - намного сложнее вырваться - URls немного сложнее, найти их на FS (чего вам следует избегать) - это теперь кошмар.
Какой позор, потому что концепция очень хорошая и очень удобная там, где она работает.
Изменить
- Невозможность запуска отдельных точек.
Наш обычный способ заключается в том, чтобы настроить параметризованные сборки, которые будут запускаться одновременно, - что связано с собственными проблемами, но сэкономит нам много заданий с тем же кодом и разными константами.