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).

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



Thanks,
Rüdiger Schobbert

--
emesit GmbH & Co. KG
  Henkestr. 91
  91052 Erlangen
Handelsregister:
  HRA 8321, Fürth/Bayern
Komplementär:
  emesit Beteiligungs-GmbH
  HRB 10201, Fürth/Bayern
Geschäftsführer:
  Ralph Mayr, Rüdiger Schobbert

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

   http://xircles.codehaus.org/manage_email


Reply via email to