Hi all,

I am happily adding Ivy to all my existing Java projects. This is my first attempt at configuring Ivy, so my config files are a mix of cut-n-paste from the tutorials, and changes to get things working.
My apologies for the newbie question.

Here is an example ivy.xml files for one of my base packages:

<ivy-module version="1.0">
<info organisation="${project.owner}" module="${ant.project.name}" status="${project.status}">
   </info>
   <configurations>
       <conf name="build" visibility="private" />
       <conf name="default" />
   </configurations>
   <publications>
       <artifact name="${ant.project.name}" type="jar" conf="*" />
   </publications>

   <dependencies>
       <!--  testing is only a part of the build configuration -->
       <dependency org="apache" name="junit" rev="4.5" conf="build->*" />
   </dependencies>
</ivy-module>

and here is the publish Ant task:

<!-- publish the latest version of the project to the team repository --> <target name="publish" depends="clean, build, input-resolver" if="ivy.present" description="--> publish JAR(s) to a shared repo and remove any version lock" >

<!-- create the next revision of the specified version of the project --> <ivy:buildnumber resolver="${target.resolver}" organisation="${project.owner}" module="${ant.project.name}" revision="${project.version}" /> <!-- publish the artifacts --> <ivy:publish resolver="${target.resolver}" pubrevision="${ivy.new.revision}" update="true" /> <antcall target="unlock-version" />
   </target>

My questions relate to the conf="xyz" in the <artifact ...> element in the ivy.xml file.

I've found that if I set it to conf="build", then even though a JAR is published to the repository, other projects don't use it in their resolve process. Changing the value to conf="default" or conf="*" fixes this.

So, my *guess* is that my other projects are building a "default" config, and so ignore anything published to the "build" config only.

Q: Should I stick with conf="build" here, and then make my calling build use the "build" conf in their resolve? Q: Should I just stick with conf="default" in the <artifacts> element of the depended-on package? Q: Is it better (and more correct even) to use conf="*" in the <artifacts> element?
Q: Or should I enumerate the valid configs as in: conf="build, default"?

Any guidance, advice or suggestions would be greatly appreciated.

Cheers!
Nik

Reply via email to