Как я должен знать, какие конфигурации доступны в зависимости Ivy? - PullRequest
3 голосов
/ 01 февраля 2012

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

Я понимаю, что это общие конфигурации: стандартные, основные, компилируемые, предоставляемые, тестовые, системные, исходные, javadoc, необязательные, исполняемые1003 *

Но некоторые зависимости не имеют всех этих определенных, а другие определяют другие пользовательские конфигурации.Я не вижу никаких упоминаний о доступных конфигурациях в springsource или maven repo.

Ниже мой смущенно взломанный ivy.xml.Обратите внимание, что я определяю org.springframework.spring-library conf как "время выполнения".Это не удается, потому что org.springframework.spring-library не имеет conf "времени выполнения".

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info organisation="com.myapp" module="MyAppName" revision="1.0"/>
    <configurations>
        <conf name="compile" visibility="public" description="Dependencies needed for compile"/>
        <conf name="runtime" visibility="public" extends="compile" description="Dependencies needed for runtime"/>
        <conf name="test" visibility="private" description="Test dependencies"/>
    </configurations>
    <dependencies>
        <dependency org="org.springframework" name="org.springframework.spring-library" rev="3.1.0.RELEASE" conf="runtime"/>
        <dependency org="org.springframework.security" name="spring-security-web" rev="3.1.0.RELEASE" transitive="false" conf="*"/>
        <dependency org="org.springframework.security" name="spring-security-config" rev="3.1.0.RELEASE" transitive="false" conf="*"/>
        <dependency org="org.springframework.security" name="spring-security-core" rev="3.1.0.RELEASE" transitive="false" conf="*"/>
        <dependency org="org.codehaus.jackson" name="com.springsource.org.codehaus.jackson" rev="1.4.3" conf="runtime->*"/>
        <dependency org="org.codehaus.jackson" name="com.springsource.org.codehaus.jackson.mapper" rev="1.4.3" conf="runtime->*"/>
        <dependency org="org.apache.httpcomponents" name="com.springsource.org.apache.httpcomponents.httpclient" rev="4.1.1" conf="runtime->*" />
        <dependency org="org.aspectj" name="org.aspectj-library" rev="1.6.5.RELEASE" conf="runtime,compile->runtime(default)"/>
        <dependency org="net.sourceforge.cglib" name="com.springsource.net.sf.cglib" rev="2.2.0" conf="compile->*"/>
        <dependency org="log4j" name="log4j" rev="1.2.14" conf="runtime->*"/>
        <dependency org="joda-time" name="joda-time" rev="2.0" conf="runtime,compile->runtime(default)"/>
        <exclude type="license" ext="txt"/>
        <exclude type="notice" ext="txt"/>
        <exclude org="javax.servlet" conf="runtime"/>
        <exclude org="javax.el" conf="runtime"/>
        <exclude org="javax.faces" conf="runtime"/>
        <exclude org="javax.portlet" conf="runtime"/>
        <exclude org="javax.xml.rpc" conf="runtime"/>
        <exclude org="javax.xml.soap" conf="runtime"/>
        <exclude org="javax.xml.ws" conf="runtime"/>
        <exclude org="commons-logging" conf="runtime"/>
    </dependencies>
</ivy-module>    

1 Ответ

2 голосов
/ 02 февраля 2012

org.springframework.spring-library имеет конфигурацию runtime. Конкретно конфигурации для библиотеки Spring:

<configurations>
    <conf name="compile" visibility="public" extends="aspects" description="Maven compile dependencies"/>
    <conf name="optional" visibility="public" extends="compile" description="Maven optional dependencies"/>
    <conf name="provided" visibility="public" description="Maven provided dependencies"/>
    <conf name="dm-server-provided" visibility="public" description="Maven provided dependencies that already exist in the platform"/>
    <conf name="runtime" visibility="public" extends="compile" description="Runtime dependencies"/>
    <conf name="test" visibility="private" description="Test dependencies"/>
    <conf name="aspects" visibility="private" description="Aspects to be woven"/>
    <conf name="external" visibility="private" description="External candidates to be woven"/>
    <conf name="additional" visibility="private" description="Additional candidates to be included in the PAR"/>
</configurations>

Чтобы получить этот список, я добавил следующую зависимость и выполнил разрешение (примечание: нет conf указан)

<dependency org="org.springframework" name="org.springframework.spring-library" rev="3.1.0.RELEASE"/>

Затем я посмотрел файл ivy для org.springframework.spring-library в моем кэше (обычно находится в ${user.home}/.ivy2/cache/org.springframework/org.springframework.spring-library/ivy-3.1.0.RELEASE.xml).

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

Поскольку SpringSource EBR предоставляет файлы плюща, вы можете получить конфигурации непосредственно из http://repository.springsource.com/ivy/libraries/release/org.springframework/org.springframework.spring-library/3.1.0.RELEASE/ivy-3.1.0.RELEASE.xml, но IMO для определения правильного URL требует больше усилий, чем методика, использованная выше.

...