Hi, I'm an Ivy newbie so please bear with me.  I've done the tutorials up 
through "multi-project".

I've been successful at getting Ivy to publish a library to a shared repository 
on our system.  But following the tutorial, it creates a new version every 
single time when the publish target is run. I'd like to be able to get Ivy to 
recognize that an artifact doesn't need to be published if it is that same as 
the last revision.  I've been struggling with trying to figure that out.

Here's what I have so far:

(in the config dir)

<ivysettings>
        <settings defaultResolver="my-artifacts" />
        <resolvers>
                <filesystem name="my-artifacts" checkmodified="true" >
                        <ivy 
pattern="${repos.root}/[organisation]/[module]/ivys/ivy-[revision].xml" />
                        <artifact 
pattern="${repos.root}/[organisation]/[module]/[type]/[revision]/[artifact].[ext]"
 />
                </filesystem>
        </resolvers>
        <modules>
                <module organisation="myorg" name="math_lib" 
resolver="my-artifacts" />
        </modules>
</ivysettings>
----------------------------------------
(in ivy.xml)

<ivy-module version="1.3">

    <info organisation="myorg" module="math_lib" status="integration" />
   
    <configurations defaultconfmapping="default">
                <conf name="master" description="the compiled artifact" />
                <conf name="default" extends="master" />
    </configurations>

    <publications>
        <artifact name="libMath" type="static" ext="a" conf="*" />
    </publications>

</ivy-module>

--------------------------------------------
(in the ant build.xml file)

        <!-- =================================
              target: publish (ivy)
            ================================= -->
        <target name="publish" depends="resolve,build" description="--> publish 
this project in the ivy repository">
                <delete file="${cpp.dir.src}/ivy.xml" />
                <ivy:buildnumber organisation="myorg" module="math_lib" 
revision="3.5.0"/>
                <property name="revision" value="${ivy.new.revision}"/>
                <ivy:publish artifactspattern="${cpp.dir.src}/[artifact].[ext]"
                                resolver="nap-artifacts"
                                pubrevision="${revision}" />
                <echo message="project ${ant.project.name} released with 
version ${revision}" />
        </target>
        
    <!-- =================================
          target: resolve
         ================================= -->
    <target name="resolve" description="--> retreive dependencies with ivy">
                <ivy:configure file="config/ivysettings.xml" />
        <ivy:resolve />
    </target>

This set up does the following whenever publish is run:

/ivyrep/myorg/math_lib/static/3.5.0.0/libMath.a
/ivyrep/myorg/math_lib/static/3.5.0.1/libMath.a
/ivyrep/myorg/math_lib/static/3.5.0.2/libMath.a
/ivyrep/myorg/math_lib/static/3.5.0.3/libMath.a

Where libMath.a ends up being the same executable in the ivy repos (confirmed 
by looking at value of each libMath.a.md5).  How can I get it so that a new 
revision is produced only if the .a file is different?

Any help is greatly appreciated.
-Allen Bagwell

Reply via email to