Ant Ivy makepom将所有依赖项标记为可选的,尽管存在映射

Ant Ivy makepom将所有依赖项标记为可选的,尽管存在映射,ant,ivy,Ant,Ivy,鉴于: 并且没有配置,以下是ant代码段: <dependency org="foo" name="bar" /> ${ivy.configuration} 生成对foo.bar具有可选依赖项的pom,并打印“default”。 如果我将映射更改为conf=“*”,那么它可以工作,但显然是次优的 是否可以映射未指定的默认配置,或者是否需要在ivy.xml中的所有依赖项上设置conf=“default”?映射“*”似乎是无害的。任何其他特定映射仍将优先。可选的依赖关系映射似乎是

鉴于:


并且没有配置,以下是ant代码段:

<dependency org="foo" name="bar" />
${ivy.configuration}
生成对foo.bar具有可选依赖项的pom,并打印“default”。 如果我将映射更改为
conf=“*”
,那么它可以工作,但显然是次优的


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

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

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

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

最安全的做法是在Maven中提供每个常春藤配置到匹配范围的显式映射。实际上,我建议创建一个ivy配置来模拟每个Maven范围(无论是否使用)


注:

  • 你忽略了常春藤的任务。必须确保解决常春藤动态修订,并且常春藤模块的修订标签设置为预期发布的修订号。(与Maven不同,您不需要编辑常春藤文件来增加模块版本)

正如我后来发现的,只映射“*”是安全的。
<echo>${ivy.configuration}</echo>
<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom">
  <mapping conf="default" scope="compile" />
</ivy:makepom>
   <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>