1

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

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

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

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

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

4

2 回答 2

2

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

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

另一种选择是内联常春藤缓存路径,其中 jar 直接从缓存中获取,而不是检索到您的项目中。

<ivy:cachepath
  organisation="org" module="module" 
  revision="latest.integration" 
  inline="true" pathid="project.compile.sourceprocessing.classpath"/>  
于 2012-07-24T19:46:10.973 回答
2

常春藤配置被设计为灵活。当然,对 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>
于 2012-07-24T22:28:46.493 回答