【问题标题】:Excluding jars in ivy using wild card pattern使用通配符模式排除常春藤中的罐子
【发布时间】:2015-03-06 01:50:29
【问题描述】:

使用 apache ivy 我想下载 jcs 1.3 jar 文件,但我不想要它附带的其他临时依赖项。无论如何我可以指定常春藤来排除这个特定依赖元素的所有临时依赖关系吗?或者至少在排除模式中使用通配符?

我查找了 Ivy 文档,但找不到任何关于如何使用匹配器进行 glob/regex 模式排除文件的示例。

以下是我的 ivy.xml 的 sn-p,我想避免一长串排除的名称/模块。

    <dependency org="jcs" name="jcs" rev="1.3" conf="*->*,!sources,!javadoc">
        <exclude name='ant-optional' />
        <exclude name='avalon-framework' />
        <exclude name='berkeleydb' />
        <exclude name='commons-beanutils' />
        <exclude name='commons-beanutils-core' />
        <exclude name='commons-codec' />
        <exclude name='commons-collections' />
        <exclude name='commons-configuration' />
        <exclude name='commons-dbcp' />
        <exclude name='commons-digester' />
        <exclude name='commons-jxpath' />
        <exclude name='commons-lang' />
        <exclude name='commons-logging' />
        <exclude name='commons-logging-api' />
        <exclude name='commons-pool' />
        <exclude name='concurrent' />
        <exclude name='hsqldb' />
        <exclude name='jdom' />
        <exclude name='junit' />
        <exclude name='jdbc-stdext' />
        <exclude name='jta' />          
        <exclude name='log4j' />
        <exclude name='logkit' />
        <exclude name='mysql-connector-java' />
        <exclude name='oro' />
        <exclude name='servlet-api' />
        <exclude name='tomcat-util' />
        <exclude name='velocity' />
        <exclude name='xerces' />
        <exclude name='xercesImpl' />
        <exclude name='xmlrpc' />
    </dependency>

【问题讨论】:

    标签: ant ivy


    【解决方案1】:

    使用配置映射实际上要简单得多。示例如下:

    <ivy-module version="2.0">
        <info organisation="com.myspotontheweb" module="demo"/>
    
        <configurations>
            <conf name="compile" description="Required to compile application"/>
            <conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
            <conf name="test"    description="Required for test only" extends="runtime"/>
        </configurations>
    
        <dependencies>
            <!-- compile dependencies -->
            <dependency org="jcs" name="jcs" rev="1.3" conf="compile->master"/>
    
        </dependencies>
    
    </ivy-module>
    

    魔术位是以下映射:

    compile->master
    

    以下答案更详细地解释了 ivy 如何解释 Maven 模块:

    How are maven scopes mapped to ivy configurations by ivy

    ma​​ster 只包含这个模块自己发布的工件,没有传递依赖

    附加

    使用配置是一项强大的功能。 cachepath 任务可用于填充 ANT 路径:

       <ivy:cachepath pathid="compile.path" conf="compile"/>
       <ivy:cachepath pathid="test.path"    conf="test"/>
    

    【讨论】:

    • 如何使用 conf="*->master" 依赖而不是任何其他更改?正如我在这里发现的那样解决了问题。
    • @Hemant 是的,也可以。正如解释的那样,远程“主”配置包含没有依赖关系的工件。 '*' 表示将其映射到所有本地配置。最后一点。在我的配置中,我使用“扩展”来表示“编译”上的内容也包含在“运行时”和“测试”中。这反映了我的类路径在我的构建文件中的工作方式。
    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 2013-05-28
    • 2011-11-14
    • 2015-12-16
    • 2016-02-15
    • 2018-07-07
    • 2011-04-12
    • 2010-11-12
    相关资源
    最近更新 更多