From 48d6c625a025323ce5cff3b23c74ccc7607fea21 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 31 Mar 2025 08:33:58 +0200 Subject: [PATCH 1/2] Add missing methods for removing project source roots --- .../apache/maven/project/MavenProject.java | 59 ++++++++++++++++--- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java index b0759586f00e..49ad9764a1b0 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java @@ -42,6 +42,8 @@ import org.apache.maven.api.Language; import org.apache.maven.api.ProjectScope; import org.apache.maven.api.SourceRoot; +import org.apache.maven.api.annotations.Nonnull; +import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.DependencyResolutionRequiredException; @@ -343,8 +345,8 @@ public void addSourceRoot(SourceRoot source) { * * @since 4.0.0 */ - public void addSourceRoot(ProjectScope scope, Language language, Path directory) { - directory = getBaseDirectory().resolve(directory).normalize(); + public void addSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull Path directory) { + directory = getBaseDirectory().resolve(Objects.requireNonNull(directory, "directory cannot be null")).normalize(); addSourceRoot(new DefaultSourceRoot(scope, language, directory)); } @@ -360,13 +362,38 @@ public void addSourceRoot(ProjectScope scope, Language language, Path directory) * * @since 4.0.0 */ - public void addSourceRoot(ProjectScope scope, Language language, String directory) { - if (directory != null) { - directory = directory.trim(); - if (!directory.isBlank()) { - Path path = getBaseDirectory().resolve(directory).normalize(); - addSourceRoot(scope, language, path); - } + public void addSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull String directory) { + directory = Objects.requireNonNull(directory, "directory cannot be null").trim(); + if (!directory.isBlank()) { + Path path = getBaseDirectory().resolve(directory).normalize(); + addSourceRoot(scope, language, path); + } + } + + /** + * Removes a source root from the project. + * + * @param scope the scope of the source root + * @param language the language of the source root + * @param directory the directory of the source root + */ + public void removeSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull Path directory) { + Path path = getBaseDirectory().resolve(Objects.requireNonNull(directory, "directory cannot be null") ).normalize(); + sources.removeIf(source -> source.scope() == scope && source.language() == language + && source.directory().equals(path)); + } + + /** + * Removes a source root from the project. + * + * @param scope the scope of the source root + * @param language the language of the source root + * @param directory the directory of the source root + */ + public void removeSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull String directory) { + directory = Objects.requireNonNull(directory, "directory cannot be null").trim(); + if (!directory.isBlank()) { + removeSourceRoot(scope, language, Path.of(directory)); } } @@ -378,6 +405,14 @@ public void addCompileSourceRoot(String path) { addSourceRoot(ProjectScope.MAIN, Language.JAVA_FAMILY, path); } + /** + * @deprecated Replaced by {@code removeSourceRoot(ProjectScope.MAIN, Language.JAVA_FAMILY, path)}. + */ + @Deprecated(since = "4.0.0") + public void removeCompileSourceRoot(String path) { + removeSourceRoot(ProjectScope.MAIN, Language.JAVA_FAMILY, path); + } + /** * @deprecated Replaced by {@code addSourceRoot(ProjectScope.TEST, Language.JAVA_FAMILY, path)}. */ @@ -386,6 +421,12 @@ public void addTestCompileSourceRoot(String path) { addSourceRoot(ProjectScope.TEST, Language.JAVA_FAMILY, path); } + /** + * @deprecated Replaced by {@code removeSourceRoot(ProjectScope.TEST, Language.JAVA_FAMILY, path)}. + */ + public void removeTestCompileSourceRoot(String path) { + removeSourceRoot(ProjectScope.TEST, Language.JAVA_FAMILY, path); + } /** * {@return all source root directories, including the disabled ones, for all languages and scopes}. * The iteration order is the order in which the sources are declared in the POM file. From 082c893e3117ec806e945e24759730f82bc1832c Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 31 Mar 2025 08:51:18 +0200 Subject: [PATCH 2/2] Code style --- .../org/apache/maven/project/MavenProject.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java index 49ad9764a1b0..5e7e48059fc3 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java +++ b/impl/maven-core/src/main/java/org/apache/maven/project/MavenProject.java @@ -43,7 +43,6 @@ import org.apache.maven.api.ProjectScope; import org.apache.maven.api.SourceRoot; import org.apache.maven.api.annotations.Nonnull; -import org.apache.maven.api.annotations.Nullable; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.DependencyResolutionRequiredException; @@ -346,7 +345,9 @@ public void addSourceRoot(SourceRoot source) { * @since 4.0.0 */ public void addSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull Path directory) { - directory = getBaseDirectory().resolve(Objects.requireNonNull(directory, "directory cannot be null")).normalize(); + directory = getBaseDirectory() + .resolve(Objects.requireNonNull(directory, "directory cannot be null")) + .normalize(); addSourceRoot(new DefaultSourceRoot(scope, language, directory)); } @@ -363,7 +364,8 @@ public void addSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language languag * @since 4.0.0 */ public void addSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull String directory) { - directory = Objects.requireNonNull(directory, "directory cannot be null").trim(); + directory = + Objects.requireNonNull(directory, "directory cannot be null").trim(); if (!directory.isBlank()) { Path path = getBaseDirectory().resolve(directory).normalize(); addSourceRoot(scope, language, path); @@ -378,8 +380,11 @@ public void addSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language languag * @param directory the directory of the source root */ public void removeSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull Path directory) { - Path path = getBaseDirectory().resolve(Objects.requireNonNull(directory, "directory cannot be null") ).normalize(); - sources.removeIf(source -> source.scope() == scope && source.language() == language + Path path = getBaseDirectory() + .resolve(Objects.requireNonNull(directory, "directory cannot be null")) + .normalize(); + sources.removeIf(source -> source.scope() == scope + && source.language() == language && source.directory().equals(path)); } @@ -391,7 +396,8 @@ public void removeSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language lang * @param directory the directory of the source root */ public void removeSourceRoot(@Nonnull ProjectScope scope, @Nonnull Language language, @Nonnull String directory) { - directory = Objects.requireNonNull(directory, "directory cannot be null").trim(); + directory = + Objects.requireNonNull(directory, "directory cannot be null").trim(); if (!directory.isBlank()) { removeSourceRoot(scope, language, Path.of(directory)); }