Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Ivy检索中忽略源jar_Java_Ant_Red5_Ivy - Fatal编程技术网

Java 在Ivy检索中忽略源jar

Java 在Ivy检索中忽略源jar,java,ant,red5,ivy,Java,Ant,Red5,Ivy,当我使用ivy.xml中的Red5依赖项(或任何相关项目)时,我只想检索库jar。无论我如何配置它,我仍然会得到依赖项的“源”jar。我已经搜索了文档和谷歌,还没有找到一个使用常春藤2.2.0的解决方案 myivy.xml中的这组节点似乎对大多数库最有效,但Spring忽略了它们 <exclude ext="txt" /> <exclude type="src" /> <exclude artifact="!sources" /> 更

当我使用ivy.xml中的Red5依赖项(或任何相关项目)时,我只想检索库jar。无论我如何配置它,我仍然会得到依赖项的“源”jar。我已经搜索了文档和谷歌,还没有找到一个使用常春藤2.2.0的解决方案

myivy.xml中的这组节点似乎对大多数库最有效,但Spring忽略了它们

    <exclude ext="txt" />
    <exclude type="src" />
    <exclude artifact="!sources" />
更新2
作为奖励,我希望您的解决方案能够与每个人都可以使用的开源Red5 trunk一起工作。这些罐子对我来说是个麻烦,值得奖励。

你可以试试这样的东西。它使用,这对排除标记有效。但不要将exclude放在依赖项中(这似乎有问题,请参阅我的评论):



在依赖关系中,只需通过使用工件节点调用来指定要检索的各个工件。尝试一下:

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

我建议不要在依赖项声明中使用“transitive”属性,而是尝试使用配置来解决问题

ivy中的配置在功能上与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>

对应于任何java项目都需要的3组依赖项

秘密在于如何将部门映射到配置。如果您只想要没有依赖项的jar,则按如下方式声明它:

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

映射到远程Maven模块主作用域的本地编译配置。Maven中的主作用域不包括任何可传递的依赖项

如果您希望工件包含其可传递的依赖项,则按如下方式声明配置映射:

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

正在工作的ivy.xml文件 这将下载一个jar

<?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存储库,它很可能是最新的。我不知道他们是否正确地维护了旧的常春藤存储库。

我在build.xml中使用它只检索jar

<ivy:retrieve type="jar"/>

我修改了你的ivy.xmlivysettings.xml文件

为了抑制源文件,我使用了默认的配置映射,以避免向每个依赖项添加“conf”属性

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

..
..
Spring现在通过Maven central发布了他们的软件,所以我修改了常春藤设置文件,以使用这些设置,而不是旧的常春藤捆绑存储库

修订的ivy.xml

修订的ivysettings.xml


从这里尝试我的答案:排除在依赖项下似乎不起作用。我以前也尝试过类似的方法,但也不起作用。您的答案将从库a中排除库B,即库a的依赖项,而不是库a的“sources jar”。sources.jar是否在存储库中标记为源类型?或者它只是一个普通的jar类型?我不同意你所引用的答案不起作用,因为它们属于我:-)马克,这是你的权利,但请随意获取项目并验证我的结果。我会尝试一下,但我相当肯定这不会起作用,因为源代码工件是一个带有“jar”扩展的jar当试图检索与Maven模块相关联的其他jar时,通常使用artifact标记,而不是主工件。请看下面的答案,我不同意。排除功能旨在抑制可传递依赖项,而不是与Maven模块关联的工件。如果它工作得很好,但我仍然认为最好的解决方案是使用常春藤配置映射。由于问题中给出的细节,我只是假设这些配置不起作用;working@MAGNUS未解决的依赖关系:org.springframework#org.springframework.asm;3.0.5.RELEASE:org.springframework#org.springframework.asm中未找到配置;3.0.5.发布:“主控”。它是从red5#服务器上需要的;working@MAGNUSJava6使用ibiblio破坏了本地和hudson上的构建,切换回url修复了它。常春藤在很多时候都是一个真正的可怜虫。你收到的错误信息是什么?你看起来比正常情况下更痛苦我没有打开verbose,但它们在控制台中显示为未解决。我下次再试试这个。配置的东西在我们的项目案例中肯定不起作用。@Mondain我决定用工作示例发布第二个答案。我认为配置不起作用的原因是因为您使用的是旧的Springsource常春藤存储库。在可能的情况下,您可以将ivy指向Maven存储库。Springsource现在发布
    <configurations defaultconfmapping="default">
    ..
    ..
<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>
    <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>