>I'd put the versionConflictStrategy property on Configuration, rather than
DependenciesHandler. I think conflict strategy is a per-resolve decision
(just like transitive is, for example). Currently, Configuration is the
place for per-resolve settings.

That makes perfects sense. I'll make it a public method on configuration and
remove from dependencies. I thought that the shorthand method at the
dependencies {} block would be nice DSL-wise as that's the place where you
configure versions but I'm not picky about it :)

Any feedback on the DSL? Below is kind of wordy:

configurations.compile.versionConflictStrategy =
VersionConflictStrategy.LATEST

Cheers!

On Fri, Sep 30, 2011 at 6:16 AM, Adam Murdoch
<[email protected]>wrote:

>
> On 30/09/2011, at 10:33 AM, [email protected] wrote:
>
>  Branch: refs/heads/master
>  Home:   https://github.com/gradle/gradle
>
>  Commit: d5d625f13cd4144908358950eab27ec1c7f15547
>
> https://github.com/gradle/gradle/commit/d5d625f13cd4144908358950eab27ec1c7f15547
>  Author: Szczepan Faber <[email protected]>
>  Date:   2011-09-29 (Thu, 29 Sep 2011)
>
>  Changed paths:
>    M
> subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/IvyConfig.java
>  M
> subprojects/core/src/main/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfiguration.java
>  M
> subprojects/integ-test/src/integTest/groovy/org/gradle/integtests/resolve/VersionConflictResolutionIntegTest.groovy
>
>  Log Message:
>  -----------
>  On the way to be able to implement custom conflict resolution strategies.
> Enabled the integration test (it has some hacks for now). Now the conflict
> strategy is configurable, for now on selected configurations.
>
>
>  Commit: 7b9884158f28ce0126933588451c178fb869df31
>
> https://github.com/gradle/gradle/commit/7b9884158f28ce0126933588451c178fb869df31
>  Author: Szczepan Faber <[email protected]>
>  Date:   2011-09-29 (Thu, 29 Sep 2011)
>
>  Changed paths:
>    M
> subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/DefaultIvyDependencyResolver.java
>  M
> subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/IvyConfig.java
>  M
> subprojects/core/src/main/groovy/org/gradle/api/artifacts/dsl/DependencyHandler.java
>  M
> subprojects/core/src/main/groovy/org/gradle/api/internal/artifacts/configurations/ConfigurationInternal.java
>  M
> subprojects/core/src/main/groovy/org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyHandler.groovy
>  M
> subprojects/integ-test/src/integTest/groovy/org/gradle/integtests/resolve/VersionConflictResolutionIntegTest.groovy
>
>  Log Message:
>  -----------
>  First stab at custom conflict resolution strategies. Currently one can
> configure them in the dependencies section of the build.
>
>
> I'd put the versionConflictStrategy property on Configuration, rather than
> DependenciesHandler. I think conflict strategy is a per-resolve decision
> (just like transitive is, for example). Currently, Configuration is the
> place for per-resolve settings.
>
> I would get rid of the DependenciesHandler.setVersionConflictStrategy. If
> you want to use the same strategy for all resolution, use configurations.all
> { }.
>
> The longer term plan is:
> * Move the per-resolve settings from Configuration to
> ResolvableDependencies. (Configuration.getIncoming() currently returns the
> ResolvableDependencies for the Configuration).
> * Change DependenciesHandler into a NamedDomainObjectContainer of
> ResolvableDependencies. When you add a Configuration using the
> ConfigurationContainer, the Configuration's incoming ResolvableDependencies
> instance is also added to the DependenciesHandler. And probably vice-versa.
> * Deprecate using Configuration for incoming resolution.
> * After doing the same separation for outgoing artifacts, deprecate and
> remove Configuration.
>
> That is, all incoming dependencies and resolution settings will be
> available via the dependencies { } section.  You would also use it to do
> things like copy(from: dependencies.compile) instead of copy(from:
> configurations.compile).
>
>
> --
> Adam Murdoch
> Gradle Co-founder
> http://www.gradle.org
> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
> http://www.gradleware.com
>
>


-- 
Szczepan Faber
Principal engineer@gradleware
Lead@mockito

Reply via email to