Игнорировать источники в Ivy retrieve

Я хотел бы получить ТОЛЬКО библиотеку jar, когда я использую запись зависимости в моем ivy.xml для Red5 (или любой проект, если на то пошло). Независимо от того, как я его настроил, я все равно получаю "источники" банок для зависимостей. Я просмотрел документы и google и еще не нашел решение, которое работает с использованием Ivy 2.2.0.

Этот набор узлов в моем ivy.xml, кажется, работает лучше всего для большинства библиотек, но Spring игнорирует их.

    <exclude ext="txt" />
    <exclude type="src" />
    <exclude artifact="!sources" />

Если у кого есть какие-либо советы, которые будут работать, давайте их услышим!!

Ссылки на исходные XML файлы

http://red5.googlecode.com/svn/java/server/trunk/ivy.xml

http://red5.googlecode.com/svn/java/server/trunk/ivysettings.xml

http://red5.googlecode.com/svn/java/server/trunk/build.xml

Примечание

Не говорите, что это дубликат, их ответы НЕ работают:

ivy: предотвратить загрузку источников и .txt файлов

заставить плющ не загружать источники и файлы лицензий

Обновление 1

<dependency org="org.springframework" name="org.springframework.core" rev="3.0.5.RELEASE" transitive="false" />

Производит эти два файла в моем каталоге lib:

org.springframework.core-3.0.5.RELEASE.jar
org.springframework.core-sources-3.0.5.RELEASE.jar

Обновление 2 Для щедрости я ожидаю, что ваше решение будет работать с Red5 trunk, доступным для всех как с открытым исходным кодом. Источники банки просто раздражают меня и хорошо стоят пунктов награды.

Ответ 1

Я пересмотрел ваши файлы ivy.xml и ivysettings.xml.

Чтобы подавить исходные файлы, я использовал сопоставление конфигурации по умолчанию, чтобы избежать необходимости добавлять атрибут "conf" для каждой зависимости.

    <configurations defaultconfmapping="default">
    ..
    ..

Spring теперь выпускают свое программное обеспечение через центральный центр Maven, поэтому я пересмотрел файл настроек плюща, чтобы использовать их вместо старых репозиториев пакетов плюща.

Пересмотренный ivy.xml

<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="red5" module="server" />

    <configurations defaultconfmapping="default">
        <conf name="default"/>
        <conf name="java6" extends="default" description="Java 6 dependencies"/>
        <conf name="eclipse" description="Special dependencies in Eclipse"/>
        <conf name="utest" extends="eclipse" description="Unit testing dependencies"/>
    </configurations>

    <dependencies>
        <dependency org="javax" name="javaee-api" rev="5.1.2" />

        <!-- Spring --> 
        <dependency org="org.springframework" name="spring-asm" rev="3.0.5.RELEASE"/>
        <dependency org="org.springframework" name="spring-beans" rev="3.0.5.RELEASE" />
        <dependency org="org.springframework" name="spring-context" rev="3.0.5.RELEASE" />
        <dependency org="org.springframework" name="spring-core" rev="3.0.5.RELEASE" />
        <dependency org="org.springframework" name="spring-expression" rev="3.0.5.RELEASE" />
        <dependency org="org.springframework" name="spring-web" rev="3.0.5.RELEASE" />

        <!-- Logging --> 
        <dependency org="org.slf4j" name="com.springsource.slf4j.api" rev="1.6.1" transitive="false" />
        <dependency org="org.slf4j" name="com.springsource.slf4j.bridge" rev="1.6.1" transitive="false" />

        <dependency name="jul-to-slf4j" rev="1.6.1" />
        <dependency name="log4j-over-slf4j" rev="1.6.1" />
        <dependency name="jcl-over-slf4j" rev="1.6.1" />    
        <dependency name="logback-classic" rev="0.9.28" />
        <dependency name="logback-core" rev="0.9.28" />

        <!-- General --> 
        <dependency org="commons" name="commons-beanutils" rev="1.8.2" />
        <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.codec" rev="1.4.0" transitive="false" />
        <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.collections" rev="3.2.1" transitive="false" />

        <dependency org="commons" name="httpcore" rev="4.1.3" />
        <dependency org="commons" name="httpclient" rev="4.1.2" />

        <dependency org="commons" name="commons-lang3" rev="3.0-beta" />
        <dependency org="org.apache.commons" name="com.springsource.org.apache.commons.modeler" rev="2.0.1" transitive="false" />

        <dependency org="commons" name="commons-pool" rev="1.5.6" />
        <dependency name="quartz" rev="1.8.5" />
        <dependency name="ehcache" rev="2.2.0" />

        <!-- XML -->
        <dependency org="org.apache.xerces" name="com.springsource.org.apache.xerces" rev="2.9.1" transitive="false" />
        <dependency name="xmlrpc" rev="2.0.1" />

        <!-- Mina -->   
        <dependency org="mina" name="mina-integration-beans" rev="2.0.4" />
        <dependency org="mina" name="mina-integration-jmx" rev="2.0.4" />
        <dependency org="mina" name="mina-core" rev="2.0.4" />

        <!-- Scripting -->
        <dependency org="org.objectweb.asm" name="com.springsource.org.objectweb.asm" rev="3.2.0" transitive="false" />
        <dependency org="org.objectweb.asm" name="com.springsource.org.objectweb.asm.commons" rev="3.2.0" transitive="false" />
        <dependency org="org.antlr" name="com.springsource.org.antlr" rev="3.1.3" transitive="false" />
        <dependency org="org.codehaus.groovy" name="com.springsource.org.codehaus.groovy" rev="1.7.0" transitive="false" />
        <dependency name="jruby-complete" rev="1.1.6" />
        <dependency name="jython" rev="2.5" /> 
        <dependency org="org.mozilla.javascript" name="com.springsource.org.mozilla.javascript" rev="1.7.0.R2" transitive="false" />
        <dependency org="javax.xml.stream" name="com.springsource.javax.xml.stream" rev="1.0.1" transitive="false" />
        <dependency org="org.springframework" name="spring-context-support" rev="3.0.5.RELEASE" />

        <!-- Crypto -->
        <dependency name="bcprov-jdk16" rev="145" conf="java6->*" /> 

        <!-- MP3 -->
        <dependency name="jaudiotagger" rev="2.0.4-SNAPSHOT" />           

        <!-- Testing support -->
        <!-- until Eclipse updates their junit version, we have to use this -->
        <dependency org="org.junit" name="com.springsource.org.junit" rev="4.8.1" conf="eclipse->*" transitive="false" />
        <dependency name="GroboUtils" rev="5-core" conf="eclipse->*" />
        <dependency org="org.springframework" name="org.springframework.test" rev="3.0.5.RELEASE" conf="eclipse->*" transitive="false" />
        <dependency org="org.springframework" name="org.springframework.transaction" rev="3.0.5.RELEASE" conf="eclipse->*" transitive="false" />
    </dependencies>
</ivy-module>

Пересмотренный ivysettings.xml

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name='central' m2compatible='true'/>
            <ibiblio name='springsource-external' m2compatible='true' root='http://repository.springsource.com/maven/bundles/external'/>
            <url name="googlecode">
                <artifact pattern="http://red5.googlecode.com/svn/repository/[artifact](-[revision]).[ext]" />
                <artifact pattern="http://red5.googlecode.com/svn/repository/[organisation]/[artifact](-[revision]).[ext]" />
            </url>
        </chain>
    </resolvers>
</ivysettings>

Ответ 2

Я использую это в build.xml, чтобы извлекать банки

<ivy:retrieve type="jar"/>

Ответ 3

Я бы посоветовал не использовать атрибут "transitive" в объявлении зависимости и вместо этого попытаться решить вашу проблему с помощью конфигураций.

Конфигурации в плющом функционально такие же, как и области в Maven, но гораздо более гибкие.

Я обычно объявляю по крайней мере следующие 3 конфигурации в моем коде

    <configurations>
        <conf name="compile" description="Compile time dependencies"/>
        <conf name="runtime" description="Compile time dependencies" extends="compile"/>
        <conf name="test"    description="Compile time dependencies" extends="runtime"/>
    </configurations>

Соответствует 3 группам зависимостей, которые мне понадобятся для любого проекта java.

Секрет заключается в том, как вы сопоставляете свои настройки с вашими конфигурациями. Если вы хотите использовать банку без зависимостей, объявите ее следующим образом:

<dependency org="org.springframework" name="org.springframework.core" rev="3.0.5.RELEASE" conf="compile->master"/>

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

Если вы хотите, чтобы артефакт включал его транзитивные зависимости, тогда объявите конфигурационное отображение следующим образом:

<dependency org="org.springframework" name="org.springframework.core" rev="3.0.5.RELEASE" conf="compile->default"/>

Рабочий файл ivy.xml

Это загрузит одну банку.

<?xml version="1.0" encoding="UTF-8"?>
<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="red5" module="server" />
    <configurations>
        <conf name="default"/>
        <conf name="java6" extends="default" description="Java 6 dependencies"/>
        <conf name="utest" extends="eclipse" description="Unit testing dependencies"/>
        <conf name="eclipse" description="Special dependencies in Eclipse"/>
    </configurations>
    <dependencies>
        <dependency org="org.springframework" name="org.springframework.core" rev="3.0.5.RELEASE" conf="default->master"/>
    </dependencies>
</ivy-module>

Измененный файл настроек

Я бы также рекомендовал использовать распознаватель ibiblio, который предназначен для понимания форматов репозитория Maven 1 и Maven 2:

<ivysettings>
    <settings defaultResolver="local"/>
    <resolvers>
        <chain name="local">
            <ibiblio name='springsource-releases' m2compatible='true' root='http://repository.springsource.com/maven/bundles/release'/>
             ..
             ..
        </chain>
    </resolvers>
</ivysettings>

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

Ответ 4

Вы можете попробовать что-то вроде этого. Он использует артефакт > , который действителен для exclude-tags. Но не помещайте исключение внутри зависимостей (кажется, это ошибка, см. Мой комментарий):

    <dependencies>
      <dependency org="org.springframework" name="org.springframework.core" rev="3.0.5.RELEASE"">
      </dependency>
      <exclude org="org.springframework" name="org.springframework.core" artifact="*sources*" matcher="glob"/>
</dependencies>

Ответ 5

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

<dependency org="org.springframework" name="org.springframework.core" rev="3.0.5.RELEASE" transitive="false">
    <artifact name="org.springframework.core" ext="jar" />
</dependency>