This is an automated email from the ASF dual-hosted git repository. elharo pushed a commit to branch art in repository https://gitbox.apache.org/repos/asf/maven-doap-plugin.git
commit fcb045290e298a2963129df2de113711690e3a12 Author: Elliotte Rusty Harold <[email protected]> AuthorDate: Sat Dec 13 12:38:19 2025 -0500 wip --- .../org/apache/maven/plugin/doap/DoapMojo.java | 60 ++++++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java b/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java index a30e450..d7951ed 100644 --- a/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java +++ b/src/main/java/org/apache/maven/plugin/doap/DoapMojo.java @@ -78,6 +78,11 @@ import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.WriterFactory; import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter; import org.codehaus.plexus.util.xml.XMLWriter; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResult; /** * <p> @@ -144,6 +149,9 @@ public class DoapMojo extends AbstractMojo { @Inject private RepositoryMetadataManager repositoryMetadataManager; + @Inject + private RepositorySystem repositorySystem; + /** * Internationalization component. * @@ -162,6 +170,9 @@ public class DoapMojo extends AbstractMojo { @Parameter(defaultValue = "${project}", readonly = true, required = true) private MavenProject project; + @Parameter(defaultValue = "${repositorySystemSession}", readonly = true) + private RepositorySystemSession repositorySystemSession; + /** * The name of the DOAP file that will be generated. */ @@ -1349,12 +1360,12 @@ public class DoapMojo extends AbstractMojo { } String fileRelease = repo.getUrl() + "/" + repo.pathOf(artifactRelease); - try { - DoapUtil.fetchURL(settings, new URL(fileRelease)); - } catch (IOException e) { - getLog().debug("IOException :" + e.getMessage()); + + if (!isArtifactInRepository(artifactRelease, repo)) { + getLog().debug(artifactRelease + " is not in the repository " + repo); continue; } + DoapUtil.writeElement(writer, doapOptions.getXmlnsPrefix(), "file-release", fileRelease); Date releaseDate = null; @@ -1381,6 +1392,47 @@ public class DoapMojo extends AbstractMojo { } } + private boolean isArtifactInRepository(Artifact artifact, ArtifactRepository repository) { + // Convert Legacy Artifact to Aether Artifact + String artifactCoordinates = String.format( + "%s:%s:%s:%s", + artifact.getGroupId(), + artifact.getArtifactId(), + artifact.getType(), + artifact.getVersion() + ); + + org.eclipse.aether.artifact.Artifact aetherArtifact = new org.eclipse.aether.artifact.DefaultArtifact(artifactCoordinates); + + // Convert Legacy ArtifactRepository to Aether RemoteRepository + // TODO: do we need to handle authentication/proxies here? + RemoteRepository aetherRemoteRepository = new RemoteRepository.Builder( + repository.getId(), + repository.getLayout().getId(), + repository.getUrl() + ).build(); + + ArtifactRequest artifactRequest = new ArtifactRequest(); + artifactRequest.setArtifact(aetherArtifact); + + // Limit resolution to ONLY the target remote repository + artifactRequest.setRepositories(Collections.singletonList(aetherRemoteRepository)); + + try { + // Attempt to resolve the artifact + ArtifactResult result = repositorySystem.resolveArtifact(repositorySystemSession, artifactRequest); + + if (result.isResolved()) { + return true; + } + + } catch (org.eclipse.aether.resolution.ArtifactResolutionException ex) { + return false; + } + + return false; + } + /** * Write all DOAP repositories. *
