2

鉴于:

<dependency org="foo" name="bar" />

并且没有配置,遵循 ant 片段:

<echo>${ivy.configuration}</echo>
<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom">
  <mapping conf="default" scope="compile" />
</ivy:makepom>

生成对 foo.bar 具有可选依赖的 pom 并打印“默认”。如果我将映射更改为conf="*"然后它可以工作但这显然不是最理想的.

是否可以映射未​​指定的默认配置,或者我是否需要在 ivy.xml 中的所有依赖项上设置 conf="default" ?

4

2 回答 2

3

可选的依赖映射似乎是默认行为。

Ivy 不限于固定数量的范围。虽然 ivy 配置更加灵活,但您不能假设每个配置都用于填充标准项目类路径......

最安全的做法是提供每个 ivy 配置到 Maven 中匹配范围的显式映射。在实践中,我建议创建一个 ivy 配置来模拟每个 Maven 范围(不管它是否被使用)。

   <target name="generate-pom" depends="resolve" description="Generate Maven POM">
      <ivy:deliver deliverpattern="${build.dir}/ivy.xml" pubrevision="${project.version}"/>

      <ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom">
         <mapping conf="compile" scope="compile" />
         <mapping conf="runtime" scope="runtime" />
         <mapping conf="test"    scope="test" />
      </ivy:makepom>
   </target>

笔记:

  • 您省略了交付常春藤任务。必须确保解决 ivy 动态修订并且 ivy 模块具有设置为预期发布修订号的修订标签。(与 Maven 不同,您不需要编辑 ivy 文件来增加模块版本)。
于 2013-07-16T18:39:58.043 回答
0

似乎映射“*”是无害的。任何其他特定映射仍将优先。

于 2013-07-16T13:10:11.450 回答