Hey Gary,



This makes a lot of sense, however, when I re-run the build with --debug, there 
is no exception in the log. Is it still possible that there is an exception? If 
so, how would you detect it?
— 
Lóránt

On Tue, Sep 2, 2014 at 12:20 AM, Gary Hale <gary.h...@gradleware.com>
wrote:

> Lorant,
> I've not been able to reproduce this behavior.  One thing that jumps out at
> me is that the error is not what you would expect for a failure when it
> can't find a version.  If it checked all versions and did not find a match,
> you would see something like:
> Execution failed for task ':resolveConf'.
>> Could not resolve all dependencies for configuration ':conf'.
>    > *Could not find any version that matches org.utils:lib:1.+.*
> The fact that you're getting a "Could not resolve
> com.prezi.test.target:boxfish-test-target:1.+" error implies to me that you
> might be hitting an exception during selection/resolution that is stopping
> the resolution process in mid-stride (which is why you don't see the later
> versions).  What's the stack trace when this occurs?
> Gary
> On Mon, Sep 1, 2014 at 2:36 PM, Lóránt Pintér <lorant.pin...@prezi.com>
> wrote:
>> Hi,
>>
>> I’ve been testing ComponentSelection with 2.2-20140831220010+0000, and it
>> mostly works, except I don’t get all the candidates that I’d expect to get.
>>
>> I'd like to be able to select a version of a dependency that was built
>> from a specific branch. Following a suggestion from Adam, by using the new
>> ivy-publish plugin, I put some informationin the ivy.xml about the current
>> branch, and the list of other branches that were available during build:
>>
>>     <info organisation="com.prezi.test.target" module=
>> "boxfish-test-target" branch="master" revision="1.0-3-g1761154" status=
>> "integration" publication="20140901194902">
>>       <ns:branches xmlns:ns="http://prezi.com/gradle/boxfish";
>> >master,test-branch</ns:branches>
>>     </info>
>>
>> I set up a test project, and published a few versions of it from two
>> different branches, trying to simulate how things would work in real life.
>> Here are the versions in the order they were published:
>>
>>    - 1.0-8-gf0590b3 from test-branch
>>    - 1.0-3-g1761154 from master
>>    - 1.0-9-g14ae9b9 from test-branch
>>    - 1.0-4-g4b991e5 from master
>>    - 1.0-10-g5ee4b9a from test-branch
>>
>> I created another project that depends on version "1.+" of my test
>> project. To can track which versions are tried as candidates, I added this
>> to the build:
>>
>> configuration.getResolutionStrategy().getComponentSelection().all(new
>> RuleAction<ComponentSelection>() {
>> @Override
>>  public List<Class<?>> getInputTypes() {
>> return Arrays.<Class<?>> asList(IvyModuleDescriptor.class);
>>  }
>>
>> @Override
>>  public void execute(ComponentSelection subject, List<?> inputs) {
>> IvyModuleDescriptor ivyDescriptor = (IvyModuleDescriptor) inputs.get(0);
>> * logger.info <http://logger.info>("Branch is {}",
>> ivyDescriptor.getBranch());*
>> for (Map.Entry<QName, String> entry :
>> ivyDescriptor.getExtraInfo().asMap().entrySet()) {
>> * logger.info <http://logger.info>("{} = {}", entry.getKey(),
>> entry.getValue());*
>> }
>> * subject.reject("Because we can");*
>> }
>> });
>>
>> After running `gradle build` I expected to see all of the versions of my
>> test project printed, but I only got a few of them:
>>
>> Cached resource is up-to-date (lastModified: Mon Sep 01 19:54:25 CEST
>> 2014). [HTTP:
>> https://artifactory.prezi.com/prezi-client/com/prezi/test/target/boxfish-test-target/1.0-10-g5ee4b9a/ivy-1.0-10-g5ee4b9a.xml
>> ]
>>
>> Resource missing. [HTTP GET:
>> https://artifactory.prezi.com/external-libs/com/prezi/test/target/boxfish-test-target/maven-metadata.xml
>> ]
>>
>> Selected primary task 'build' from project :
>>
>> Branch is test-branch
>>
>> {http://prezi.com/gradle/boxfish}branches = master,test-branch
>>
>> Selection of 'com.prezi.test.target:boxfish-test-target:1.0-10-g5ee4b9a'
>> rejected by component selection rule: Because we can
>>
>> Branch is test-branch
>>
>> {http://prezi.com/gradle/boxfish}branches = master,test-branch
>>
>> Selection of 'com.prezi.test.target:boxfish-test-target:1.0-9-g14ae9b9'
>> rejected by component selection rule: Because we can
>>
>> Branch is test-branch
>>
>> {http://prezi.com/gradle/boxfish}branches = master,test-branch
>>
>> Selection of 'com.prezi.test.target:boxfish-test-target:1.0-8-gf0590b3'
>> rejected by component selection rule: Because we can
>>
>>
>> FAILURE: Build failed with an exception.
>>
>>
>> * What went wrong:
>>
>> Could not resolve all dependencies for configuration ':modules'.
>>
>> > Could not resolve com.prezi.test.target:boxfish-test-target:1.+.
>>
>>   Required by:
>>
>>       com.prezi.test.source:boxfish-test-source:0.0-SNAPSHOT
>>
>>    > This module has not been resolved.
>>
>>
>>
>> After this I published 1.0-13-g3b3374a from master, and now only that
>> single version is tried as candidate:
>>
>> Download
>> https://artifactory.prezi.com/prezi-client/com/prezi/test/target/boxfish-test-target/1.0-13-g3b3374a/ivy-1.0-13-g3b3374a.xml
>>
>> Resource missing. [HTTP GET:
>> https://artifactory.prezi.com/external-libs/com/prezi/test/target/boxfish-test-target/maven-metadata.xml
>> ]
>>
>> Selected primary task 'build' from project :
>>
>> Branch is master
>>
>> {http://prezi.com/gradle/boxfish}branches = master,test-branch
>>
>> Selection of 'com.prezi.test.target:boxfish-test-target:1.0-13-g3b3374a'
>> rejected by component selection rule: Because we can
>>
>>
>> FAILURE: Build failed with an exception.
>>
>>
>> * What went wrong:
>>
>> Could not resolve all dependencies for configuration ':modules'.
>>
>> > Could not resolve com.prezi.test.target:boxfish-test-target:1.+.
>>
>>   Required by:
>>
>>       com.prezi.test.source:boxfish-test-source:0.0-SNAPSHOT
>>
>>    > This module has not been resolved.
>>
>>
>>
>> How does Gradle decide which versions to offer as candidates for a certain
>> dependency?
>>
>> --
>>
>> *Pinter Lorant*
>> Developer at Prezi <http://prezi.com>
>>

Reply via email to