You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2026/08/31 15:52:23 UTC
(maven) branch master updated: Document illegal windows filesystem characters (#12974)
This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 24d371b52b Document illegal windows filesystem characters (#12974)
24d371b52b is described below
commit 24d371b52b97387854771c9cfcd009474bce2086
Author: Elliotte Rusty Harold <el...@users.noreply.github.com>
AuthorDate: Mon Aug 31 15:52:16 2026 +0000
Document illegal windows filesystem characters (#12974)
* Expand documentation
* address claude comments
* spotless
---
.../apache/maven/model/validation/DefaultModelValidator.java | 10 +++++-----
.../maven/settings/validation/DefaultSettingsValidator.java | 11 ++++++++---
.../java/org/apache/maven/impl/DefaultSettingsValidator.java | 6 +++---
.../org/apache/maven/impl/model/DefaultModelValidator.java | 12 +++++++-----
4 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/compat/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/compat/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 61abb35d8d..2f0af6cb44 100644
--- a/compat/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/compat/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -82,13 +82,13 @@ public class DefaultModelValidator implements ModelValidator {
private static final Pattern CI_FRIENDLY_EXPRESSION = Pattern.compile("\\$\\{(.+?)}");
private static final Pattern EXPRESSION_PROJECT_NAME_PATTERN = Pattern.compile("\\$\\{(project.+?)}");
- private static final String ILLEGAL_FS_CHARS = "\\/:\"<>|?*";
+ private static final String ILLEGAL_NTFS_FILENAME_CHARS = "\\/:\"<>|?*";
- private static final String ILLEGAL_RELATIVE_PATH_CHARS = ":\"<>|?*";
+ private static final String ILLEGAL_WINDOWS_PATH_CHARS = ":\"<>|?*";
- private static final String ILLEGAL_VERSION_CHARS = ILLEGAL_FS_CHARS;
+ private static final String ILLEGAL_VERSION_CHARS = ILLEGAL_NTFS_FILENAME_CHARS;
- private static final String ILLEGAL_REPO_ID_CHARS = ILLEGAL_FS_CHARS;
+ private static final String ILLEGAL_REPO_ID_CHARS = ILLEGAL_NTFS_FILENAME_CHARS;
private static final String EMPTY = "";
@@ -175,7 +175,7 @@ public void validateRawModel(Model m, ModelBuildingRequest request, ModelProblem
parent.getRelativePath(),
null,
parent,
- ILLEGAL_RELATIVE_PATH_CHARS);
+ ILLEGAL_WINDOWS_PATH_CHARS);
}
// [MNG-6074] Maven should produce an error if no model version has been set in a POM file used to build an
diff --git a/compat/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java b/compat/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
index 8e497d6b40..e274a2887f 100644
--- a/compat/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
+++ b/compat/maven-settings-builder/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
@@ -46,7 +46,7 @@ public class DefaultSettingsValidator implements SettingsValidator {
private static final String ID = "[\\w.-]+";
private static final Pattern ID_REGEX = Pattern.compile(ID);
- private static final String ILLEGAL_REPO_ID_CHARS = "\\/:\"<>|?*"; // ILLEGAL_FS_CHARS
+ private static final String ILLEGAL_NTFS_FILENAME_CHARS = "\\/:\"<>|?*";
@Override
public void validate(Settings settings, SettingsProblemCollector problems) {
@@ -119,7 +119,12 @@ public void validate(Settings settings, SettingsProblemCollector problems) {
validateStringNotEmpty(problems, "mirrors.mirror.id", mirror.getId(), mirror.getUrl());
validateBannedCharacters(
- problems, "mirrors.mirror.id", Severity.WARNING, mirror.getId(), null, ILLEGAL_REPO_ID_CHARS);
+ problems,
+ "mirrors.mirror.id",
+ Severity.WARNING,
+ mirror.getId(),
+ null,
+ ILLEGAL_NTFS_FILENAME_CHARS);
if ("local".equals(mirror.getId())) {
addViolation(
@@ -187,7 +192,7 @@ private void validateRepositories(SettingsProblemCollector problems, List<Reposi
validateStringNotEmpty(problems, prefix + ".id", repository.getId(), repository.getUrl());
validateBannedCharacters(
- problems, prefix + ".id", Severity.WARNING, repository.getId(), null, ILLEGAL_REPO_ID_CHARS);
+ problems, prefix + ".id", Severity.WARNING, repository.getId(), null, ILLEGAL_NTFS_FILENAME_CHARS);
if ("local".equals(repository.getId())) {
addViolation(
diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultSettingsValidator.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultSettingsValidator.java
index 5e960b1522..4887dffe72 100644
--- a/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultSettingsValidator.java
+++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/DefaultSettingsValidator.java
@@ -39,7 +39,7 @@ public class DefaultSettingsValidator {
private static final String ID = "[\\w.-]+";
private static final Pattern ID_REGEX = Pattern.compile(ID);
- private static final String ILLEGAL_REPO_ID_CHARS = "\\/:\"<>|?*"; // ILLEGAL_FS_CHARS
+ private static final String ILLEGAL_NTFS_FILENAME_CHARS = "\\/:\"<>|?*";
@SuppressWarnings("checkstyle:MethodLength")
public void validate(Settings settings, boolean isProjectSettings, ProblemCollector<BuilderProblem> problems) {
@@ -157,7 +157,7 @@ public void validate(Settings settings, boolean isProjectSettings, ProblemCollec
BuilderProblem.Severity.WARNING,
mirror.getId(),
null,
- ILLEGAL_REPO_ID_CHARS);
+ ILLEGAL_NTFS_FILENAME_CHARS);
if ("local".equals(mirror.getId())) {
addViolation(
@@ -242,7 +242,7 @@ private void validateRepositories(
BuilderProblem.Severity.WARNING,
repository.getId(),
null,
- ILLEGAL_REPO_ID_CHARS);
+ ILLEGAL_NTFS_FILENAME_CHARS);
if ("local".equals(repository.getId())) {
addViolation(
diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java
index 302abd9ea2..af5a4ab2c9 100644
--- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java
+++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelValidator.java
@@ -92,13 +92,15 @@ public class DefaultModelValidator implements ModelValidator {
private static final Pattern EXPRESSION_NAME_PATTERN = Pattern.compile("\\$\\{(.+?)}");
private static final Pattern EXPRESSION_PROJECT_NAME_PATTERN = Pattern.compile("\\$\\{(project.+?)}");
- private static final String ILLEGAL_FS_CHARS = "\\/:\"<>|?*";
+ /** Characters that cannot appear in a file or directory name on FAT or NTFS filesystems */
+ private static final String ILLEGAL_NTFS_FILENAME_CHARS = "\\/:\"<>|?*";
- private static final String ILLEGAL_RELATIVE_PATH_CHARS = ":\"<>|?*";
+ /** same as above except that it allows the path separators / and \ */
+ private static final String ILLEGAL_WINDOWS_PATH_CHARS = ":\"<>|?*";
- private static final String ILLEGAL_VERSION_CHARS = ILLEGAL_FS_CHARS;
+ private static final String ILLEGAL_VERSION_CHARS = ILLEGAL_NTFS_FILENAME_CHARS;
- private static final String ILLEGAL_REPO_ID_CHARS = ILLEGAL_FS_CHARS;
+ private static final String ILLEGAL_REPO_ID_CHARS = ILLEGAL_NTFS_FILENAME_CHARS;
private static final String EMPTY = "";
@@ -498,7 +500,7 @@ && equals(parent.getArtifactId(), model.getArtifactId())) {
parent.getRelativePath(),
null,
parent,
- ILLEGAL_RELATIVE_PATH_CHARS);
+ ILLEGAL_WINDOWS_PATH_CHARS);
}
boolean isModelVersion41OrMore = !Objects.equals(ModelBuilder.MODEL_VERSION_4_0_0, model.getModelVersion());