【问题标题】:Ivy: Jar Required for Processing, but not Compiling常春藤:处理需要Jar,但不需要编译
【发布时间】:2012-07-24 19:39:33
【问题描述】:

我有一个项目,它依赖于我们生产的两个罐子。我已将这两个 jar 放在我们的存储库中,Ivy 下载它们,编译和构建初始 jar 一切正常。

但是,我们有另一个 jar 是我们需要针对这个 jar 运行的混淆器。这也在我们的存储库中,但编译不需要它。相反,我只是将它作为一个针对新构建的 jar 的程序运行。

我应该如何对这个混淆 jar 的配置进行分类?我不能说它是 compile 因为编译不需要它。而且,它也不应该在 runtime 配置中。这给我们留下了 provided、_optional、_master 或 test。

我可以为构建软件所需但在类路径中不需要的 Jars 创建一个特殊配置,但我不想打破我们的标准并创建比基本 configurations 更多的配置。

处理这个问题的最佳方法是什么?

【问题讨论】:

    标签: ant ivy


    【解决方案1】:

    Ivy 配置设计灵活。当然,对 Maven 范围进行标准化是非常有意义的(尤其是从 Maven 存储库中提取时),但我认为没有理由限制您的构建,尤其是对于仅由您的构建使用的依赖项。

    我通常会创建一个名为“build”的额外配置,专门用于下拉诸如 ANT 任务 jar 之类的项目:

    <configurations>
       <conf name="compile"  description="Compile dependencies"/>
       <conf name="runtime"  description="Runtime dependencies" extends="compile"/>
       <conf name="test"     description="Test dependencies" extends="runtime"/>
       <conf name="provided" description="Dependencies provided by target platform"/>
       <conf name="build"    description="Dependencies used by ANT build process"/>
    </configurations>
    

    【讨论】:

    • 考虑为内部内容添加属性visibility="private"。模块外的任何人都不需要test 和build。 provided ...我不知道。
    • @A.H.真是的。我认为这是可见性属性的目的。就我个人而言,我从来没有觉得需要隐藏配置。
    • 是的,这就是我决定要走的路……这个过程实际上有两个依赖项。这是Allatori Obfuscater。我需要他们的 jar 来运行混淆器,但随后需要第二个 jar 来进行混淆。它实际上最终成为两个独立的类路径。一个是用于 Allatori jar 以运行该作业。但是你需要在 Allatori 运行时包含另一个 jar,但它不在 Java 类路径中。
    【解决方案2】:

    如果您只在构建过程中需要这个 jar,inline retrieve 就可以完成这项工作!它将帮助您在不需要常春藤文件的情况下检索工件。
    这对于任务所需的 jar 非常有用,您可以执行但与工件本身无关(findbug 等)。

    <ivy:retrieve organisation="foo" module="bar" inline="true" pattern="${my.install.dir}/[artifact].[ext]"/>
    

    另一种选择是inline ivy cachepath,其中 jar 直接从缓存中获取,而不是检索到您的项目中。

    <ivy:cachepath
      organisation="org" module="module" 
      revision="latest.integration" 
      inline="true" pathid="project.compile.sourceprocessing.classpath"/>  
    

    【讨论】:

    • 有趣的想法。我可能还会试一试
    猜你喜欢
    • 2011-04-12
    • 2012-06-04
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多