Hello,

I'm relatively new to IVY and have been playing with it successfully the
past 2 months.
Few days ago I had the need of using configurations and statuses in my ivy
files.

I've expected a weird behavior, or probably haven't set up the things the
right way.
To make it fast, it seems that IVY will only be able to find artifacts for
the last status of the statuses.
It doesn't matter if I use custom ones or the default ones.

For instance for the default ones, it will find artifact witht the
integration status but not the milestone or release ones.


Now the details (copied from stackoverflow where I've asked the question
also)
http://stackoverflow.com/questions/8336843/using-status-in-ivy-works-for-the-less-stable-one-ie-integration-not-for-t


I am trying desperately to have this working. I've spent the whole day on
it and can't find what's wrong.

What I want to achieve is using different artifact depending on the
configuration used. The configuration are build-release, build-milestone
and build-devs.

Here is my ivysettings.xml file

<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
    <property name="upload.url" value="http://domain.com"; />

    <credentials
        host="domain.com"
        realm="Sonatype Nexus Repository Manager"
        username="deployment"
        passwd="deployment"
    />

    <settings defaultResolver="main" />

    <resolvers>
        <chain name="main" returnFirst="false" >
            <filesystem
                name="local"
                checkmodified="true">
                <artifact
pattern="${repository.dir}/[organisation]/[module]/[revision]/[artifact].[ext]"
/>
            </filesystem>
            <ibiblio name="public" m2compatible="true" root="
http://as-artifacts.org/content/groups/public-actionscript"; />
            <ibiblio
                name="sonar6"
                m2compatible="true"
                root="http://domain.com";

pattern="[organisation]/[module]/[revision]/[artifact].[ext]" />
        </chain>
        <url name="publishing" m2compatible="true">
            <artifact
pattern="${upload.url}/[organisation]/[module]/[revision]/[artifact].[ext]"
/>
        </url>
    </resolvers>
</ivysettings>

and here is my ivy.xml file

<ivy-module
    version="2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd
"
>

    <info
        organisation="com.org"
        module="amodule"
        status="integration"
    />

    <configurations>
        <conf name="build-release" description="Dependencies used for
release (remote dependencies, status release)"/>
        <conf name="build-milestone" description="Dependencies used for
test (remote dependencies, status milestone)" />
        <conf name="build-devs" description="Dependencies used for
development (local/remote dependencies, status integration)" />
    </configurations>

    <publications>
        <artifact type="swf" ext="swf" />
        <artifact type="src" ext="src.zip" />
    </publications>

    <dependencies>
<!-- Default dependencies -->
    <!-- Tink flex spark update, stored on google code-->
        <dependency org="ws.tink" name="flex4_spark" rev="1">
           <artifact name="tweenlite" type="swc" ext="swc" url="
http://tink.googlecode.com/files/tink_flex4_spark.swc"/>
        </dependency>

    <!-- Tweenlite -->
        <dependency org="com.greensock.as3" name="tweenlite" rev="11.691">
           <artifact name="tweenlite" type="swc" ext="swc" />
           <artifact name="tweenlite" type="src" ext="src.zip" />
        </dependency>

<!-- Specific dependencies depending on build (integration, milestone or
release -->
<!-- DEVELOPMENT -->
    <!-- moduleB -->
        <dependency org="com.org" name="moduleB" rev="latest.integration"
changing="true" conf="build-devs->default">
            <artifact name="shared" type="swc" ext="swc" />
            <artifact name="shared" type="src" ext="src.zip" />
        </dependency>


<!-- INTEGRATION (IE TESTING)-->
    <!-- moduleB -->
        <dependency org="com.org" name="moduleB" rev="latest.milestone"
changing="true" conf="build-milestone->default">
            <artifact name="shared" type="swc" ext="swc" />
            <artifact name="shared" type="src" ext="src.zip" />
        </dependency>

<!-- RELEASE -->
    <!-- moduleB -->
        <dependency org="com.org" name="moduleB" rev="latest.release"
conf="build-release->default">
            <artifact name="shared" type="swc" ext="swc" />
            <artifact name="shared" type="src" ext="src.zip" />
        </dependency>
    </dependencies>
</ivy-module>

So as you can see depending on the configuration used, different version of
the moduleB will be used. This is because the build script is run by: -
developers - autobuild (for testing) - autobuild (for release) A flag is
set in ant to tell which conf to use.

Now, if the conf used is build-devs, meaning using the latest.integration
revision for moduleB it will work and download it. If the conf
build-milestone is used so get the moduleB using latest.milestone revision,
the artifact won't be found, although listed

:: problems summary ::
:::: WARNINGS
        module not found: com.org#moduleB;latest.milestone

    ==== local: tried

      -- artifact com.org#moduleB;latest.milestone!moduleB.src.zip(src):

      C:/repository/com.org/moduleB/revision]/moduleB.src.zip

      [0.0.5.0 (MD)] <-- this is the milestone release

      -- artifact com.org#moduleB;latest.milestone!moduleB.swc:

      C:/repository/com.org/moduleB/[revision]/moduleB.swc

      [0.0.5.0 (MD)]

    ==== public: tried


http://as-artifacts.org/content/groups/public-actionscript/com/org/moduleB/[revision]/moduleB-[revision].pom

      -- artifact com.org#moduleB;latest.milestone!moduleB.swc:


http://as-artifacts.org/content/groups/public-actionscript/com/org/moduleB/[revision]/moduleB-[revision].swc

      -- artifact com.org#moduleB;latest.milestone!moduleB.src.zip(src):


http://as-artifacts.org/content/groups/public-actionscript/com/org/moduleB/[revision]/moduleB-[revision].src.zip

    ==== domain.com: tried

      http://domain.com/com/org/moduleB/[revision]/moduleB.pom

      [0.0.1.0 (unreachable)]

      -- artifact com.org#moduleB;latest.milestone!moduleB.src.zip(src):

      http://domain.com/com/org/moduleB/[revision]/moduleB.src.zip

      [0.0.1.0 (MD)]

      -- artifact com.org#moduleB;latest.milestone!moduleB.swc:

      http://domain.com/com/org/moduleB/[revision]/moduleB.swc

      [0.0.1.0 (MD)]

This is the ivy.xml in my local repository
(C:\repository\com.sonar6.thor\shared\0.0.5.0)

<ivy-module version="2.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"; xsi:noNamespaceSchemaLocation="
http://ant.apache.org/ivy/schemas/ivy.xsd";>

    <info organisation="com.org" module="moduleB" revision="0.0.5.0"
status="milestone" publication="20111201174403"/>

    <configurations>
        <conf name="build-release" description="Dependencies used for
release (remote dependencies, status release)"/>
        <conf name="build-milestone" description="Dependencies used for
test (remote dependencies, status milestone)"/>
        <conf name="build-devs" description="Dependencies used for
development (local/remote dependencies, status integration)"/>
    </configurations>

    <publications>
        <artifact type="swc" ext="swc"/>
        <artifact type="src" ext="src.zip"/>
    </publications>

    <dependencies>
<!-- Default dependencies -->
    <!-- Flash Console -->
        <dependency org="com.junkbyte" name="Console" rev="2.51">
           <artifact name="Console" type="swc" ext="swc"/>
           <artifact name="Console" type="src" ext="src.zip"/>
        </dependency>

    <!-- Robotlegs -->
        <dependency org="org.robotlegs" name="robotlegs-framework"
rev="1.4.0">
            <artifact name="robotlegs-framework" type="swc" ext="swc"/>
            <artifact name="robotlegs-framework" type="src" ext="src.zip"/>
        </dependency>

    <!-- Signals -->
        <dependency org="org.osflash" name="as3-signals" rev="0.8">
            <artifact name="as3-signals" type="swc" ext="swc"/>
            <artifact name="as3-signals" type="src" ext="src.zip"/>
        </dependency>

    <!-- Signal extension for Robotleg -->
        <dependency org="org.robotlegs.plugins"
name="signals-extension-command" rev="0.5">
           <artifact name="signals-extension-command" type="swc" ext="swc"/>
           <artifact name="signals-extension-command" type="src"
ext="src.zip"/>
        </dependency>

    </dependencies>
</ivy-module>

Now the FUN PART! Before using the defaults statuses from IVY I used mine.
It had the exact same behavior (that's why I tried the defaults one then).
The fun bits is that if I had

<statuses default="status-dev">
    <status name="status-stable" integration="false"/>
    <status name="status-test" integration="false"/>
    <status name="status-dev" integration="true" />
</statuses>

The only latest.[status] working will be for status-dev. Now if I change
the status order to

<statuses default="status-dev">
    <status name="status-stable" integration="false"/>
    <status name="status-dev" integration="true" />
    <status name="status-test" integration="false"/>
</statuses>

The only one working will be status-test.

So I wonder if I'm hitting a bug in IVY, but I think I probably have done
something wrong.
I'm using ant 1.8.0 and IVY 2.2.0 with JDK 1.6.0

Thanks for any help you could provide :)

Xavier



----------------------------------------------------------------------
Xavier MARTIN aka zeflasher or xxlm
Visit my website if you love flash:
http://www.webbymx.net
http://dev.webbymx.net
----------------------------------------------------------------------

Reply via email to