Замена знатока?

Кажется, что и Car, и Computer имеют метод getColor(). Поэтому имеет смысл перенести это в интерфейс:

interface Colored {
    Color getColor();
}

и заставить Car и Computer реализовать Colored. Тогда вы можете написать свой единственный метод как

private <T extends Colored> List<T> removeSameColor(List<T> list) {
        Set<String> colorSet = new HashSet<>();
        Iterator<T> iterator = list.iterator();
        while (iterator.hasNext()) {
            if(!colorSet .isEmpty() && colorSet .contains(iterator.next().getColor())) {
                iterator.remove();
            }
            else{
                colorSet.add(iterator.next().getColor());
            }
        }
        return list;
    }
5
задан Rich Seller 30 July 2009 в 20:54
поделиться

7 ответов

В то время как мне нравится идея Знатока, я всегда борюсь с нею за что-либо кроме самых простых конфигураций. Его архитектура основана на плагине, и качество плагинов значительно различается. Документация является поверхностной в лучшем случае; половина времени, которое я не могу выяснить, читаю ли документ я, для Знатока 1 или 2. И как часто необходимо было обратиться к использованию maven-ant-plugin сделать что-то основное?

Я использовал Плющ Apache приблизительно в течение года теперь, и я довольно доволен им. Существует определенная кривая обучения все же. Но существует активный список рассылки, и автор является очень быстро реагирующим.

То, что я закончил тем, что делал, писало "библиотеку" нескольких простых целевых объектов Ant, таких как "твердость", "скомпилируйте", "установите", и т.д. которые ожидают вещи быть в стандартных местах Знатока (такой как src/main/java) и затем <import> цели в мои различные проекты. Таким образом, Вы получаете лучший из обоих миров - конфигурация стиля Знатока и все питание Муравья.

5
ответ дан 18 December 2019 в 07:32
поделиться

Я люблю использование Муравья с Плющом. Плющ использует репозитории Знатока для выборки зависимостей библиотеки, не вынуждая Вас изменить Вашу всю систему сборки для удовлетворения Знатоку.

4
ответ дан 18 December 2019 в 07:32
поделиться

Я использовал buildr для некоторых моих проектов. Очень краткие и читаемые сценарии сборки (никакой xml) и это использует знатока repos (с тривиальным усилием, знаток 1 и знаток 2).

Я искал что-то, post-maven1, чтобы продолжить работать для некоторых проектов и m2 не был всем тем обращением. Знаток уже бросил всех m1 пользователей с потребностью восстановить все их системы сборки (и некоторых моих нельзя выразить в m2 насколько я могу сказать).

3
ответ дан 18 December 2019 в 07:32
поделиться

Мне действительно нравится использовать ant4eclipse - Вы настраиваете свои зависимости проекта в затмении как нормальные, и можно записать единственный скрипт Ant, это разработает все проекты в правильном порядке.

Поскольку третье лицо освобождает, можно или настроить единственный проект затмения, содержащий (и экспортирующий) все банки [я не РЕКОМЕНДУЮ ЭТО], или отдельный проект для каждого стороннего lib, экспортируя банку. [Я рекомендую последний b/c, можно отследить проект-> сторонний deps и обновлять части при необходимости.]

1
ответ дан 18 December 2019 в 07:32
поделиться

Я пошел бы с buildr, если я ожидаю сложные цели сборки в своей сборке. Преимущество, Вы не зависите ни от какой конкретной библиотеки вообще. У Вас есть все API от Ruby, чтобы сделать независимо от того, что Вы хотите; в отличие от Ivy, в этом случае Вы все еще связываетесь до МУРАВЬЯ. Усилие по миграции Ivy стоит, если Вы хотите представить зависимость библиотеки уже установленному основанному на муравье механизму сборки, который делает все операции, которые Вы хотите сделать.

0
ответ дан 18 December 2019 в 07:32
поделиться

Это зависит от того, что Вы используете так или иначе. Знаток 1? Знаток 2? Я нахожу Знатока 2 прилично зарегистрированным и довольно мощным при использовании в сочетании с задачами Ant и некоторыми домашними испеченными плагинами Java.

Существуют задачи Ant для использования функций Maven от Муравья: http://maven.apache.org/ant-tasks/index.html. Таким образом, Вы не должны действительно писать свою собственную "библиотеку".

И можно назвать Муравья от Знатока: http://maven.apache.org/plugins/maven-antrun-plugin/.

Можно также написать сценарий вещей с помощью Groovy, например: http://groovy.codehaus.org/GMaven+-+Executing+Groovy+Code.

Или просто напишите код Java для пользовательских битов, в которых Вы нуждаетесь: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html.

Нет никакой причины не к смешиванию и подгонке, когда можно сделать это ;)

8
ответ дан 18 December 2019 в 07:32
поделиться

Существует по крайней мере три различных частей Знатока: репозиторий, реализация независимый lifecyle и конвенции для проекта по умолчанию. Используя Плющ обеспечивает только репозиторий.

Я не использовал его, но я думаю, что easyant разработан, чтобы быть более полной заменой Знатоку. Это использует Ivy в качестве репозитория, но затем добавляет конвенции и стандартные модули.

0
ответ дан 18 December 2019 в 07:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: