我有一个项目取决于我们生产的两个罐子。我把这两个罐放在我们的存储库中,Ivy下载它们,编译和构建初始jar一切都很好。
但是,我们还有另一个jar,它是我们需要针对这个jar运行的混淆器。这也在我们的存储库中,但编译时不需要它。相反,我只是将它作为一个针对新建jar的程序运行。
我应该如何对这个混淆jar的配置进行分类?我不能说它是编译,因为它不需要编译。而且,它也不应该在运行时配置中。这样我们就可以使用提供,_ optional,_master或 test 。
我可以为构建软件所需的Jars创建一个特殊配置,但在类路径中不需要,但我不想破坏我们的标准并创建超过基本configurations。
处理此问题的最佳方法是什么?
答案 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>