On 05/07/2011, at 9:09 PM, Ruediger Schobbert wrote:

> Hi,
> 
> I have written a little plugin which adds common repositories. I use this 
> plugin for all my projects which saves me the repositories block in my 
> build.gradle files. I also add my standard Ivy upload repository. Now I added 
> the functionality to prevent uploading the same version twice. For querying 
> the Ivy repository I use this code block in my plugin:
> 
> <code>
> import org.apache.ivy.core.search.OrganisationEntry
> import org.apache.ivy.core.search.ModuleEntry
> import org.apache.ivy.core.search.RevisionEntry
> 
> ... more code ...
> 
> project.tasks.uploadArchives {
>    doFirst {
>        def uploadRepositoryName = 'myUploadRepo'
>        def uplRepo = project.uploadArchives.repositories[uploadRepositoryName]
> 
>        OrganisationEntry org = new OrganisationEntry(uplRepo, project.group);
>        ModuleEntry mod = new ModuleEntry(org, project.name);
>        RevisionEntry[] revs = uplRepo.listRevisions(mod)
> 
>        for (nextRev in revs) {
>            if (project.version == nextRev.revision) {
>                throw new GradleException('!!!This version was already 
> published!!!')
>            }
>        }
>    }
> }
> </code>
> 
> 
> If I add my (upload) repository to the project.respositories by adding a new 
> org.apache.ivy.plugins.resolver.SshResolver and add it to the 
> project.uploadArchives.repositories by referencing the one from the 
> project.respositories this works.
> 
> But actually I don't want my uploadRepo to be used for resolving 
> dependencies, therefore I removed it from the project.respositories and added 
> it directly to the project.uploadArchives.repositories but then a 
> NullPointerException is thrown:
> 
> * Exception is:
> org.gradle.api.tasks.TaskExecutionException: Execution failed for task 
> ':uploadArchives'.
>        at 
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:71)
>        at 
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:48)
>        at 
> org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:34)
>        at 
> org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:55)
>        at 
> org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
>        at 
> org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)
>        at 
> org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
>        at 
> org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52)
>        at 
> org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)
>        at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:237)
>        at 
> org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
>        at 
> org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
>        at 
> org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
>        at 
> org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113)
>        at 
> org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
>        at 
> org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)
>        at 
> org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
>        at 
> org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:80)
>        at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
>        at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
>        at 
> org.gradle.launcher.ExceptionReportingAction.execute(ExceptionReportingAction.java:32)
>        at 
> org.gradle.launcher.ExceptionReportingAction.execute(ExceptionReportingAction.java:21)
>        at 
> org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:219)
>        at 
> org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:203)
>        at org.gradle.launcher.Main.execute(Main.java:55)
>        at org.gradle.launcher.Main.main(Main.java:40)
>        at 
> org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
>        at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
>        at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
> Caused by: java.lang.NullPointerException
>        at 
> org.apache.ivy.plugins.resolver.AbstractPatternsBasedResolver.filterNames(AbstractPatternsBasedResolver.java:370)
>        at 
> org.apache.ivy.plugins.resolver.RepositoryResolver.findTokenValues(RepositoryResolver.java:298)
>        at 
> org.apache.ivy.plugins.resolver.AbstractPatternsBasedResolver.findIvyNames(AbstractPatternsBasedResolver.java:229)
>        at 
> org.apache.ivy.plugins.resolver.AbstractPatternsBasedResolver.findNames(AbstractPatternsBasedResolver.java:213)
>        at 
> org.apache.ivy.plugins.resolver.BasicResolver.listRevisions(BasicResolver.java:846)
>        at 
> org.apache.ivy.plugins.resolver.DependencyResolver$listRevisions.call(Unknown 
> Source)
>        at 
> de.emesit.gradle.emesitproject.EmesitProjectPlugin$_applyWithoutUploadRepository_closure4_closure11.doCall(EmesitProjectPlugin.groovy:113)
>        at 
> org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:443)
>        at 
> org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:431)
>        at 
> org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:63)
>        ... 28 more
> 
> 
> 
> If I look in the source code of the AbstractPatternsBasedResolver, this line:
> 
> getSettings().filterIgnore(names);
> 
> causes the NPE. Therefore I assume that gradle at some point sets the 
> settings if the resolver is added to the project.repositories (or the 
> settings get set by some method call like resolve() or similar).

Correct, this is done just before resolve/publish by the SettingsConverter.

> 
> Therefore my question:
> How can I make sure, the settings are set, or is there another way to query 
> existing versions in my uploadRepo?

You'll have to manually wire it in for now.

uplRepo.settings = 
project.services.get(org.gradle.api.internal.artifacts.IvyService).settingsConverer.ivySettings


Please raise an issue for this use case so we can come up with a better 
solution.

-- 
Luke Daley
Principal Engineer, Gradleware 
http://gradleware.com


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to