@@ -95,7 +95,7 @@ public override bool RunTask ()
9595 return ! Log . HasLoggedErrors ;
9696 }
9797
98- static bool TryResolveProject ( Artifact artifact , IPomResolver resolver , [ NotNullWhen ( true ) ] out ResolvedProject ? project )
98+ static bool TryResolveProject ( Artifact artifact , IProjectResolver resolver , [ NotNullWhen ( true ) ] out ResolvedProject ? project )
9999 {
100100 // ResolvedProject.FromArtifact will throw if a POM cannot be resolved, but our MSBuildLoggingPomResolver
101101 // has already logged the failure as an MSBuild error. We don't want to log it again as an unhandled exception.
@@ -135,7 +135,7 @@ public bool EnsureDependencySatisfied (ResolvedDependency dependency, MicrosoftN
135135 return true ;
136136
137137 var suggestion = packages . GetNuGetPackage ( $ "{ dependency . GroupId } :{ dependency . ArtifactId } ") ;
138- var artifact_spec = dependency . ToArtifactString ( dependency . Version . HasValue ( ) ) ;
138+ var artifact_spec = dependency . Version . HasValue ( ) ? dependency . VersionedArtifactString : dependency . ArtifactString ;
139139
140140 if ( suggestion is string nuget )
141141 log . LogCodedError ( "XA4242" , Properties . Resources . XA4242 , artifact_spec , nuget ) ;
@@ -157,7 +157,7 @@ public void AddAndroidLibraries (ITaskItem []? tasks)
157157
158158 if ( version != null && MavenExtensions . TryParseArtifactWithVersion ( id , version , log , out var art ) ) {
159159 log . LogMessage ( "Found Java dependency '{0}:{1}' version '{2}' from AndroidLibrary '{3}'" , art . GroupId , art . Id , art . Version , task . ItemSpec ) ;
160- artifacts . Add ( art . ToGroupAndArtifactId ( ) , art ) ;
160+ artifacts . Add ( art . ArtifactString , art ) ;
161161 }
162162 }
163163 }
@@ -168,7 +168,7 @@ public void AddPackageReferences (ITaskItem []? tasks)
168168
169169 // See if JavaArtifact/JavaVersion overrides were used
170170 if ( task . TryParseJavaArtifactAndJavaVersion ( "PackageReference" , log , out var explicit_artifact , out var attributes_specified ) ) {
171- artifacts . Add ( explicit_artifact . ToGroupAndArtifactId ( ) , explicit_artifact ) ;
171+ artifacts . Add ( explicit_artifact . ArtifactString , explicit_artifact ) ;
172172 continue ;
173173 }
174174
@@ -181,7 +181,7 @@ public void AddPackageReferences (ITaskItem []? tasks)
181181
182182 if ( artifact != null ) {
183183 log . LogMessage ( "Found Java dependency '{0}:{1}' version '{2}' from PackageReference '{3}'" , artifact . GroupId , artifact . Id , artifact . Version , task . ItemSpec ) ;
184- artifacts . Add ( artifact . ToGroupAndArtifactId ( ) , artifact ) ;
184+ artifacts . Add ( artifact . ArtifactString , artifact ) ;
185185
186186 continue ;
187187 }
@@ -195,7 +195,7 @@ public void AddProjectReferences (ITaskItem []? tasks)
195195 foreach ( var task in tasks . OrEmpty ( ) ) {
196196 // See if JavaArtifact/JavaVersion overrides were used
197197 if ( task . TryParseJavaArtifactAndJavaVersion ( "ProjectReference" , log , out var explicit_artifact , out var attributes_specified ) ) {
198- artifacts . Add ( explicit_artifact . ToGroupAndArtifactId ( ) , explicit_artifact ) ;
198+ artifacts . Add ( explicit_artifact . ArtifactString , explicit_artifact ) ;
199199 continue ;
200200 }
201201
@@ -219,26 +219,26 @@ public void AddIgnoredDependencies (ITaskItem []? tasks)
219219
220220 if ( version != null && MavenExtensions . TryParseArtifactWithVersion ( id , version , log , out var art ) ) {
221221 log . LogMessage ( "Ignoring Java dependency '{0}:{1}' version '{2}'" , art . GroupId , art . Id , art . Version ) ;
222- artifacts . Add ( art . ToGroupAndArtifactId ( ) , art ) ;
222+ artifacts . Add ( art . ArtifactString , art ) ;
223223 }
224224 }
225225 }
226226
227227 bool TrySatisfyDependency ( ResolvedDependency dependency )
228228 {
229229 if ( ! dependency . Version . HasValue ( ) )
230- return artifacts . ContainsKey ( dependency . ToGroupAndArtifactId ( ) ) ;
230+ return artifacts . ContainsKey ( dependency . ArtifactString ) ;
231231
232232 var dep_versions = MavenVersionRange . Parse ( dependency . Version ) ;
233233
234- if ( artifacts . TryGetValue ( dependency . ToGroupAndArtifactId ( ) , out var artifact ) )
234+ if ( artifacts . TryGetValue ( dependency . ArtifactString , out var artifact ) )
235235 return dep_versions . Any ( r => r . ContainsVersion ( MavenVersion . Parse ( artifact . Version ) ) ) ;
236236
237237 return false ;
238238 }
239239}
240240
241- class MSBuildLoggingPomResolver : IPomResolver
241+ class MSBuildLoggingPomResolver : IProjectResolver
242242{
243243 readonly TaskLoggingHelper logger ;
244244 readonly Dictionary < string , Project > poms = new ( ) ;
@@ -272,8 +272,8 @@ public MSBuildLoggingPomResolver (TaskLoggingHelper logger)
272272
273273 try {
274274 using ( var file = File . OpenRead ( filename ) ) {
275- var project = Project . Parse ( file ) ;
276- var registered_artifact = Artifact . Parse ( project . ToString ( ) ) ;
275+ var project = Project . Load ( file ) ;
276+ var registered_artifact = Artifact . Parse ( project . VersionedArtifactString ) ;
277277
278278 // Return the registered artifact, preferring any overrides specified in the task item
279279 var final_artifact = new Artifact (
@@ -283,7 +283,7 @@ public MSBuildLoggingPomResolver (TaskLoggingHelper logger)
283283 ) ;
284284
285285 // Use index instead of Add to handle duplicates
286- poms [ final_artifact . ToString ( ) ] = project ;
286+ poms [ final_artifact . VersionedArtifactString ] = project ;
287287
288288 logger . LogDebugMessage ( "Registered POM for artifact '{0}' from '{1}'" , final_artifact , filename ) ;
289289
@@ -295,9 +295,9 @@ public MSBuildLoggingPomResolver (TaskLoggingHelper logger)
295295 }
296296 }
297297
298- public Project ResolveRawProject ( Artifact artifact )
298+ public Project Resolve ( Artifact artifact )
299299 {
300- if ( poms . TryGetValue ( artifact . ToString ( ) , out var project ) )
300+ if ( poms . TryGetValue ( artifact . VersionedArtifactString , out var project ) )
301301 return project ;
302302
303303 logger . LogCodedError ( "XA4247" , Properties . Resources . XA4247 , artifact ) ;
0 commit comments