You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2025/07/24 08:55:08 UTC
(maven-archiver) branch maven-archiver-3.x updated: Treat empty Automatic-Module-Name as no Automatic-Module-Name at all (3.x) (#280)
This is an automated email from the ASF dual-hosted git repository.
olamy pushed a commit to branch maven-archiver-3.x
in repository https://gitbox.apache.org/repos/asf/maven-archiver.git
The following commit(s) were added to refs/heads/maven-archiver-3.x by this push:
new 1289e57 Treat empty Automatic-Module-Name as no Automatic-Module-Name at all (3.x) (#280)
1289e57 is described below
commit 1289e5742fb94f222a41993da87d8f76d7f4ed62
Author: Fridrich Strba <fr...@users.noreply.github.com>
AuthorDate: Thu Jul 24 10:55:03 2025 +0200
Treat empty Automatic-Module-Name as no Automatic-Module-Name at all (3.x) (#280)
* Treat empty Automatic-Module-Name as no Automatic-Module-Name at all
* Add test case for empty Automatic-Module-Name attributes
---
.../org/apache/maven/archiver/MavenArchiver.java | 4 ++-
.../apache/maven/archiver/MavenArchiverTest.java | 30 +++++++++++++++++++++-
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/maven/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/archiver/MavenArchiver.java
index 5ea457e..f577273 100644
--- a/src/main/java/org/apache/maven/archiver/MavenArchiver.java
+++ b/src/main/java/org/apache/maven/archiver/MavenArchiver.java
@@ -597,7 +597,9 @@ public class MavenArchiver {
String automaticModuleName = manifest.getMainSection().getAttributeValue("Automatic-Module-Name");
if (automaticModuleName != null) {
- if (!isValidModuleName(automaticModuleName)) {
+ if (automaticModuleName.isEmpty()) {
+ manifest.getMainSection().removeAttribute("Automatic-Module-Name");
+ } else if (!isValidModuleName(automaticModuleName)) {
throw new ManifestException("Invalid automatic module name: '" + automaticModuleName + "'");
}
}
diff --git a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
index 608f749..0e02e03 100644
--- a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
+++ b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
@@ -559,9 +559,37 @@ class MavenArchiverTest {
}
/*
- * Test to make sure that manifest sections are present in the manifest prior to the archive has been created.
+ * Test to make sure that empty Automatic-Module-Name will result in no
+ * Automatic-Module-Name attribute at all, but that the archive will be created.
*/
@Test
+ void testManifestWithEmptyAutomaticModuleName() throws Exception {
+ File jarFile = new File("target/test/dummy.jar");
+ JarArchiver jarArchiver = getCleanJarArchiver(jarFile);
+
+ MavenArchiver archiver = getMavenArchiver(jarArchiver);
+
+ MavenSession session = getDummySession();
+ MavenProject project = getDummyProject();
+ MavenArchiveConfiguration config = new MavenArchiveConfiguration();
+
+ Map<String, String> manifestEntries = new HashMap<>();
+ manifestEntries.put("Automatic-Module-Name", "");
+ config.setManifestEntries(manifestEntries);
+
+ archiver.createArchive(session, project, config);
+ assertThat(jarFile).exists();
+
+ final Manifest jarFileManifest = getJarFileManifest(jarFile);
+ Attributes manifest = jarFileManifest.getMainAttributes();
+
+ assertThat(manifest).doesNotContainKey(new Attributes.Name("Automatic-Module-Name"));
+ }
+
+ //
+ // Test to make sure that manifest sections are present in the manifest prior to the archive has been created.
+ //
+ @Test
void testManifestSections() throws Exception {
MavenArchiver archiver = new MavenArchiver();