Details
Description
There is an inconsistency in the handling of URLResource "file:" URLs. If the url is "file:d:mydir/", it will discover the artifacts at that address, but the output contains a NullPointerException warning due to URLRepository.list(String) line: 119 (in 2.2.0). Changing it to "file://d:mydir/" gets rid of the NullPointerException. This is because of new URI(parent).getPath() returns null for file: but not file://. new URL(parent).getFile() works with both as an alternative.
Also repros with 2.2.1.alpha_20120313100444
Ivy output:
[ivy:resolve] problem while listing resources in file:o:/build/ivyup/deliverables//com.expedia.cc.container.core with Local:
[ivy:resolve] java.lang.NullPointerException null
The full stack at the time of the exception:
Thread [main] (Suspended (breakpoint at line 36 in NullPointerException))
NullPointerException.<init>() line: 36 [local variables unavailable]
File.<init>(String) line: 222
URLRepository.list(String) line: 119
ResolverHelper.listTokenValues(Repository, String, String) line: 64
ResolverHelper.findAll(Repository, ModuleRevisionId, String, Artifact) line: 146
URLResolver(RepositoryResolver).listResources(Repository, ModuleRevisionId, String, Artifact) line: 185
URLResolver(RepositoryResolver).findDynamicResourceUsingPattern(ResourceMDParser, ModuleRevisionId, String, Artifact, Date) line: 149
URLResolver(RepositoryResolver).findResourceUsingPattern(ModuleRevisionId, String, Artifact, ResourceMDParser, Date) line: 132
URLResolver(AbstractPatternsBasedResolver).findResourceUsingPatterns(ModuleRevisionId, List, Artifact, ResourceMDParser, Date) line: 93
URLResolver(AbstractPatternsBasedResolver).findArtifactRef(Artifact, Date) line: 81
URLResolver(BasicResolver).getArtifactRef(Artifact, Date) line: 928
URLResolver(BasicResolver).findFirstArtifactRef(ModuleDescriptor, DependencyDescriptor, ResolveData) line: 865
URLResolver(BasicResolver).getDependency(DependencyDescriptor, ResolveData) line: 236
ChainResolver.getDependency(DependencyDescriptor, ResolveData) line: 104
IvyNode.loadData(String, IvyNode, String, String, boolean, IvyNodeUsage) line: 169
VisitNode.loadData(String, boolean) line: 287
ResolveEngine.fetchDependencies(VisitNode, String, boolean) line: 696
ResolveEngine.doFetchDependencies(VisitNode, String) line: 781
ResolveEngine.fetchDependencies(VisitNode, String, boolean) line: 704
ResolveEngine.doFetchDependencies(VisitNode, String) line: 769
ResolveEngine.fetchDependencies(VisitNode, String, boolean) line: 704
ResolveEngine.doFetchDependencies(VisitNode, String) line: 781
ResolveEngine.fetchDependencies(VisitNode, String, boolean) line: 704
ResolveEngine.doFetchDependencies(VisitNode, String) line: 769
ResolveEngine.fetchDependencies(VisitNode, String, boolean) line: 704
ResolveEngine.doFetchDependencies(VisitNode, String) line: 769
ResolveEngine.fetchDependencies(VisitNode, String, boolean) line: 704
ResolveEngine.getDependencies(ModuleDescriptor, ResolveOptions, ResolveReport) line: 576
ResolveEngine.resolve(ModuleDescriptor, ResolveOptions) line: 237
ResolveEngine.resolve(URL, ResolveOptions) line: 195
Ivy.resolve(URL, ResolveOptions) line: 502
IvyResolve.doExecute() line: 244
IvyResolve(IvyTask).execute() line: 277
UnknownElement.execute() line: 291
GeneratedMethodAccessor4.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
DispatchUtils.execute(Object) line: 106
UnknownElement(Task).perform() line: 348
Target.execute() line: 390
Target.performTasks() line: 411
Project.executeSortedTargets(Vector) line: 1397
Project.executeTarget(String) line: 1366
DefaultExecutor.executeTargets(Project, String[]) line: 41
Project.executeTargets(Vector) line: 1249
Main.runBuild(ClassLoader) line: 801
Main.startAnt(String[], Properties, ClassLoader) line: 218
Launcher.run(String[]) line: 280
Launcher.main(String[]) line: 109