Le 15 mai 2012 à 19:40, Matt Hurne a écrit :

>> Ok, that makes some sense.  After adding resolveMode="dynamic" to my
>> <settings>, I do see that the <dependency> elements of the delivered
>> ivy files include a resolved rev attribute as well as a revConstraint
>> attribute, such as:
>> 
>> <dependency org="com.acme" name="thingamajig" rev="20120515131106"
>> revConstraint="latest.integration" conf="default->default"/>
> 
> Not that it helps me much, but I should clarify that the <dependency>
> elements in the delivered Ivy files look the same regardless of the
> resolve mode configured; the revConstraint is included with a value of
> "latest.integration" either way.  So it's my understanding that the
> resolve mode doesn't have a direct effect on the delivered Ivy files,
> but rather which of the revision-related attributes in those delivered
> Ivy files is used in future resolves.

exactly.

Nicolas


> 
> Matt Hurne
> 
> 
> On Tue, May 15, 2012 at 1:26 PM, Matt Hurne <m...@thehurnes.com> wrote:
>>> Have you tried to set it on the "settings" element in the ivysettings ?
>> 
>> I hadn't before, but just did:
>> 
>> <settings defaultResolver="default-chain" defaultResolveMode="dynamic"
>> defaultConflictManager="latest-revision"
>> circularDependencyStrategy="error" />
>> 
>> Unfortunately this did not solve the problem for me.  IvyDE was able
>> to resolve projects in the workspace prior to any of them being built
>> and published to the local repository, but after they were built and
>> published and I did a "resolve all" in Eclipse, the project references
>> were replaced with the published artifacts.  So this worked better
>> than when I added a <modules> section to my ivysettings to set the
>> resolve mode, but no better than if I just left the resolve mode as
>> the default across the board.
>> 
>> 
>>> When you publish your artifacts into your local repository, Ivy does a 
>>> "deliver" of the ivy.xml of your project. If there is any range version in 
>>> your dependencies, Ivy fix them as the one resolved during the build. So 
>>> the next time a resolve happens and that module is found in you repository, 
>>> Ivy will resolved the previously-resolved revision, the fixed one, not the 
>>> original range version. Setting the resolve mode to dynamic change this 
>>> behavior; it will use the range rather than the resolved version. Look at 
>>> your ivy.xml in the local repository, you'll see some extra attributes in 
>>> your dependency, if you have any range version.
>> 
>> Ok, that makes some sense.  After adding resolveMode="dynamic" to my
>> <settings>, I do see that the <dependency> elements of the delivered
>> ivy files include a resolved rev attribute as well as a revConstraint
>> attribute, such as:
>> 
>> <dependency org="com.acme" name="thingamajig" rev="20120515131106"
>> revConstraint="latest.integration" conf="default->default"/>
>> 
>> Note that we are not specifying revisions in our modules' ivy files at
>> the moment, so Ivy appears to set the revision to the publication data
>> and time when delivering each Ivy file.  For example:
>> 
>> <info organisation="com.acme" module="thingy"
>> revision="20120515131237" status="integration"
>> publication="20120515131237">
>> 
>> Not sure where to go from here.  Do you have any additional thoughts?
>> Thanks for your time thus far!
>> 
>> Matt H
>> 
>> 
>> On Tue, May 15, 2012 at 5:01 AM, Nicolas Lalevée
>> <nicolas.lale...@hibnet.org> wrote:
>>> 
>>> Le 14 mai 2012 à 22:38, Matt Hurne a écrit :
>>> 
>>>>> Maybe there are some transitive dependency which confuse the Workspace 
>>>>> resolver. See at the end of the doc:
>>>>> http://ant.apache.org/ivy/ivyde/history/latest-milestone/cpc/workspace.html
>>>>> 
>>>>>> In some setup, if you want to mix some resolver of your own and the 
>>>>>> workspace resolver, and still want the transitive dependencies work 
>>>>>> nicely between them, you may want to turn the resolve mode to dynamic:
>>>>>>       • see the defaultResolveMode attribute of settings in the 
>>>>>> ivysettings.
>>>>>>       • see the resolveMode attribute of module in the ivysettings.
>>>> 
>>>> Yes, I had seen that before sending my original note to the list since
>>>> it did seem relevant.  I added a <modules> element to the
>>>> ivysettings.xml like:
>>>> 
>>>> <modules>
>>>>    <module organisation="com.company" name="*" resolveMode="dynamic"/>
>>>> </modules>
>>>> 
>>>> After doing so, IvyDE seemed unable to resolve a given project's
>>>> dependencies at all, including projects in the workspace, even with an
>>>> empty local repository.  I'm not sure what to make of that;
>>> 
>>> I don't either. Have you tried to set it on the "settings" element in the 
>>> ivysettings ?
>>> 
>>>> to be
>>>> honest, I don't really understand what difference it should have made.
>>>> Any chance you can elaborate?
>>> 
>>> When you publish your artifacts into your local repository, Ivy does a 
>>> "deliver" of the ivy.xml of your project. If there is any range version in 
>>> your dependencies, Ivy fix them as the one resolved during the build. So 
>>> the next time a resolve happens and that module is found in you repository, 
>>> Ivy will resolved the previously-resolved revision, the fixed one, not the 
>>> original range version. Setting the resolve mode to dynamic change this 
>>> behavior; it will use the range rather than the resolved version. Look at 
>>> your ivy.xml in the local repository, you'll see some extra attributes in 
>>> your dependency, if you have any range version.
>>> 
>>> Nicolas
>>> 
>>>> 
>>>> Thanks,
>>>> Matt Hurne
>>>> 
>>>> 
>>>> On Mon, May 14, 2012 at 4:28 PM, Nicolas Lalevée
>>>> <nicolas.lale...@hibnet.org> wrote:
>>>>> Maybe there are some transitive dependency which confuse the Workspace 
>>>>> resolver. See at the end of the doc:
>>>>> http://ant.apache.org/ivy/ivyde/history/latest-milestone/cpc/workspace.html
>>>>> 
>>>>>> In some setup, if you want to mix some resolver of your own and the 
>>>>>> workspace resolver, and still want the transitive dependencies work 
>>>>>> nicely between them, you may want to turn the resolve mode to dynamic:
>>>>>>       • see the defaultResolveMode attribute of settings in the 
>>>>>> ivysettings.
>>>>>>       • see the resolveMode attribute of module in the ivysettings.
>>>>> 
>>>>> Nicolas
>>>>> 
>>>>> Le 14 mai 2012 à 20:36, Matt Hurne a écrit :
>>>>> 
>>>>>> On Mon, May 14, 2012 at 2:31 PM, Matt Hurne <m...@thehurnes.com> wrote:
>>>>>>> We are using Ivy to manage the dependencies of our projects on each
>>>>>>> other, and we're planning to use IvyDE as well.  One of the resolvers
>>>>>>> we have in our Ivy configuration is used to publish our build
>>>>>>> artifacts to a local repository (with status "integration") so that
>>>>>>> they are available when building the projects that depend on them.  In
>>>>>>> a clean environment, this repository is initially empty.  If the local
>>>>>>> repository is empty and we configure IvyDE to resolve dependencies in
>>>>>>> the workspace, the projects do end up in the Ivy classpath containers
>>>>>>> of the projects that depend on them as expected.  However, if we then
>>>>>>> build and publish the projects to the local repository and then
>>>>>>> perform a new resolve-all in Eclipse/IvyDE, the projects are removed
>>>>>>> from the Ivy classpath containers and the artifacts in the local
>>>>>>> repository take their places.
>>>>>>> 
>>>>>>> Is this behavior expected/correct?  Is there a way to ensure that
>>>>>>> IvyDE will always put workspace projects in the classpath container
>>>>>>> rather than artifacts with identical module revision IDs that exist in
>>>>>>> one of our configured repositories?
>>>>>>> 
>>>>>>> If I were dealing with this type of scenario outside of Eclipse/IvyDE,
>>>>>>> I would look at putting the resolvers into a chain and using the
>>>>>>> "returnFirst" attribute to enforce a specific order.  That's
>>>>>>> effectively what I'm looking to do with the workspace resolver.  Is
>>>>>>> that possible?
>>>>>> 
>>>>>> 
>>>>>> I should have mentioned the following details about our environment:
>>>>>> 
>>>>>> Windows XP 32bit
>>>>>> Eclipse 3.7 Indigo
>>>>>> IvyDE 2.2.0.beta1 with Ivy 2.2.0 (we had some other show-stopping
>>>>>> issues when using IvyDE with Ivy 2.3.0, so we installed Ivy 2.2.0
>>>>>> explicitly)
>>>>>> 
>>>>>> In addition, when building projects using Ant we're using Ivy 2.2.0.
>>>>>> 
>>>>>> Thanks,
>>>>>> Matt Hurne
>>>>> 
>>> 

Reply via email to