Ivy:Jar需要处理,但不能编译

时间:2012-07-24 19:39:33

标签: ant ivy

我有一个项目取决于我们生产的两个罐子。我把这两个罐放在我们的存储库中,Ivy下载它们,编译和构建初始jar一切都很好。

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

我应该如何对这个混淆jar的配置进行分类?我不能说它是编译,因为它不需要编译。而且,它也不应该在运行时配置中。这样我们就可以使用提供,_ optional,_master或 test

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

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

2 个答案:

答案 0 :(得分:2)

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

<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"/>  

答案 1 :(得分:2)

常春藤配置设计灵活。当然,标准化Maven作用域是非常有意义的(特别是在从Maven repos中提取时),但我认为没有理由限制你的构建,特别是对于你的构建只使用的依赖项。

我通常创建一个名为“build”的额外配置,专门用于下拉ANT任务罐等项目:

<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>