Конфигурации Apache Ivy - PullRequest
       15

Конфигурации Apache Ivy

1 голос
/ 16 августа 2011

Я медленно начинаю понимать важность конфигураций модулей во вселенной Ivy.Однако мне все еще трудно ясно видеть, как один и тот же кусок кода может иметь разные конфигурации, которые имеют разные требования к зависимостям (единственное исключение - в случае test конфигов, которые требуют JUnit поверх обычногозависимости - я на самом деле понимаю, что 100%!)

Например, возьмите следующий код:

package org.myorg.myprogram.core;

// Import an object from a dependency
import org.someElse.theirJAR.Widget;

public class MyCode
{
    public MyCode()
    {
        if(Widget.SOME_STATIC == 3)
            System.out.println("Fizz");
        else
            System.out.println("Buzz");
    }
}

Теперь, кроме того факта, что это ужасный кодЯ просто не вижу, как моя программа (которая, давайте представим, что JARred в MyProgram.jar) может быть настроена на несколько «конфигураций»;некоторым из них может потребоваться theirJAR и его класс Widget, а другим - нет. Мне, если мы не сможем предоставить MyCode Widget, он умрет во время выполнения, всегда.

Опять же, я понимаю необходимость тестовых конфигураций;просто больше ничего (я также задавал вопросы о зависимостях компиляции и времени выполнения, и, наверное, я тоже вижу необходимость в них).Но помимо тестовых конфигов, конфигов во время компиляции и конфигов во время выполнения, какие другие конфигурации модулей вам могут понадобиться?Как MyCode понадобился бы виджет в некоторых случаях, а не в других случаях, и все же он без проблем работал бы без виджета?

Я очень признателен за любую помощь, которая поможет мне обернуть это!

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

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

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

1 голос
/ 16 августа 2011

Вы также можете использовать конфигурации для управления содержимым различных дистрибутивов.Например, вы можете захотеть освободить jar самостоятельно (конфигурация «master» на языке Maven) и дополнительно собрать пакет tar, содержащий все зависимости времени выполнения, с (или без) исходным кодом.

Другое использование для конфигурацийкогда вы нацелены на несколько платформ.Я часто выпускаю скрипты Groovy, упакованные для работы в качестве автономных jar-файлов или веб-приложений tomcat

1 голос
/ 16 августа 2011

Чтобы добавить ответ SteveD, помните, что зависимости могут быть больше, чем просто файлы .jar.Некоторые зависимости поставляются с исходными файлами и файлами javadoc, примечаниями к выпуску, файлами лицензий и т. Д. Несколько конфигураций зависимости могут позволить вам выбрать подмножество файлов, которые вы хотите разрешить.

...