You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2023/04/10 18:32:09 UTC
[maven-doxia-sitetools] 01/01: [DOXIASITETOOLS-301] Automatically remove the 0-byte site descriptors from the local repo
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch DOXIASITETOOLS-301
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git
commit 0d9aafe5a5b65ec588ace13096611f0a913dcdde
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Mon Apr 10 20:31:38 2023 +0200
[DOXIASITETOOLS-301] Automatically remove the 0-byte site descriptors from the local repo
This solution is not forever and is *not* concurrency-safe since we cannot
obtain a sync context for it.
This closes #104
---
.../apache/maven/doxia/tools/DefaultSiteTool.java | 34 ++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
index fdbfcd1..bc7ed41 100644
--- a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
+++ b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
@@ -29,6 +29,8 @@ import java.io.StringReader;
import java.io.StringWriter;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Arrays;
@@ -74,6 +76,8 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResolutionException;
@@ -835,6 +839,8 @@ public class DefaultSiteTool implements SiteTool {
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
+ deletePseudoSiteDescriptorMarkerFile(repoSession, request);
+
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
@@ -855,6 +861,8 @@ public class DefaultSiteTool implements SiteTool {
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
+ deletePseudoSiteDescriptorMarkerFile(repoSession, request);
+
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
@@ -875,6 +883,8 @@ public class DefaultSiteTool implements SiteTool {
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
+ deletePseudoSiteDescriptorMarkerFile(repoSession, request);
+
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
@@ -894,6 +904,9 @@ public class DefaultSiteTool implements SiteTool {
localeStr = SiteTool.DEFAULT_LOCALE.toString();
ArtifactRequest request =
createSiteDescriptorArtifactRequest(project, localeStr, remoteProjectRepositories);
+
+ deletePseudoSiteDescriptorMarkerFile(repoSession, request);
+
try {
ArtifactResult result = repositorySystem.resolveArtifact(repoSession, request);
@@ -911,6 +924,27 @@ public class DefaultSiteTool implements SiteTool {
return siteDescriptor;
}
+ // TODO Remove this transient method when everyone has migrated to Maven Site Plugin 4.0.0+
+ private void deletePseudoSiteDescriptorMarkerFile(RepositorySystemSession repoSession, ArtifactRequest request) {
+ LocalRepository localRepository = repoSession.getLocalRepository();
+ LocalRepositoryManager lrm = repoSession.getLocalRepositoryManager();
+
+ String relativeLocalArtifactPath = lrm.getPathForLocalArtifact(request.getArtifact());
+ Path localArtifactPath = localRepository.getBasedir().toPath().resolve(relativeLocalArtifactPath);
+
+ try {
+ if (Files.exists(localArtifactPath) && Files.size(localArtifactPath) == 0L) {
+ LOGGER.debug(
+ "Deleting 0-byte pseudo marker file for artifact '{}' at '{}'",
+ request.getArtifact(),
+ localArtifactPath);
+ Files.delete(localArtifactPath);
+ }
+ } catch (IOException e) {
+ // swallow
+ }
+ }
+
/**
* @param depth depth of project
* @param siteDirectory, can be null if project.basedir is null, ie POM from repository