From dca7622daa4ab05e4941dc8ff9a63f6d6566e147 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 23 Jun 2022 14:18:27 +0200 Subject: [PATCH 01/23] [maven-release-plugin] prepare for next development iteration --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index e399e28..9249ab8 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.apache.maven maven-archiver - 3.6.0 + 3.6.1-SNAPSHOT Apache Maven Archiver Provides utility methods for creating JARs and other archive files from a Maven project. @@ -36,14 +36,14 @@ 3.2.5 8 - 2022-06-23T12:17:44Z + 2022-06-23T12:18:27Z scm:git:https://gitbox.apache.org/repos/asf/maven-archiver.git scm:git:https://gitbox.apache.org/repos/asf/maven-archiver.git https://github.com/apache/maven-archiver/tree/${project.scm.tag} - maven-archiver-3.6.0 + HEAD jira From 6693cc78b78f77501b9cc4e3077cb2eac60ea148 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Sun, 26 Jun 2022 14:00:28 +0200 Subject: [PATCH 02/23] Fix Jenkins url --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9249ab8..5ff0e0b 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ Jenkins - https://ci-builds.apache.org/job/Maven/job/maven-box/job/maven-archiver/ + https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-archiver/ From 0f66795c8d1cbcc9f767b6e23b72e029040481b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Wed, 2 Nov 2022 18:41:39 +0100 Subject: [PATCH 03/23] add Reproducible Builds badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7eebdb1..1ef7faa 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Contributing to [Apache Maven Archiver](https://maven.apache.org/shared/maven-ar [![ASF Jira](https://img.shields.io/endpoint?url=https%3A%2F%2Fmaven.apache.org%2Fbadges%2Fasf_jira-MSHARED.json)][jira] [![Apache License, Version 2.0, January 2004](https://img.shields.io/github/license/apache/maven.svg?label=License)][license] [![Maven Central](https://img.shields.io/maven-central/v/org.apache.maven/maven-archiver.svg?label=Maven%20Central)](https://search.maven.org/artifact/org.apache.maven/maven-archiver) +[![Reproducible Builds](https://img.shields.io/badge/Reproducible_Builds-ok-green?labelColor=blue)](https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/org/apache/maven/shared/archiver/README.md) [![Jenkins Status](https://img.shields.io/jenkins/s/https/ci-maven.apache.org/job/Maven/job/maven-box/job/maven-archiver/job/master.svg)][build] [![Jenkins tests](https://img.shields.io/jenkins/t/https/ci-maven.apache.org/job/Maven/job/maven-box/job/maven-archiver/job/master.svg)][test-results] From 670da42432fbfd2d28b29458095716a117d27b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Sol=C3=B3rzano?= Date: Sun, 26 Mar 2023 13:14:51 +0200 Subject: [PATCH 04/23] Upgrade Parent to 39 (#27) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jorge Solórzano --- .github/dependabot.yml | 30 + pom.xml | 24 +- .../maven/archiver/ManifestConfiguration.java | 84 +- .../maven/archiver/ManifestSection.java | 28 +- .../archiver/MavenArchiveConfiguration.java | 99 +- .../apache/maven/archiver/MavenArchiver.java | 660 +++--- .../maven/archiver/PomPropertiesUtil.java | 99 +- .../archiver/ManifestConfigurationTest.java | 42 +- .../MavenArchiveConfigurationTest.java | 52 +- .../maven/archiver/MavenArchiverTest.java | 1881 ++++++++--------- .../apache/maven/archiver/MockArtifact.java | 222 +- 11 files changed, 1473 insertions(+), 1748 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..d7c9cd4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,30 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +version: 2 +updates: + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "daily" + ignore: + # Ignore Maven Core updates + - dependency-name: "org.apache.maven:*" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" diff --git a/pom.xml b/pom.xml index 5ff0e0b..f699db5 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,4 @@ - + - - org.codehaus.plexus - plexus-io - 3.4.1 - org.codehaus.plexus plexus-archiver 4.8.0 - - org.codehaus.plexus - plexus-utils - 3.5.1 - org.codehaus.plexus plexus-interpolation diff --git a/src/main/java/org/apache/maven/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/archiver/MavenArchiver.java index 232decc..cab5ae9 100644 --- a/src/main/java/org/apache/maven/archiver/MavenArchiver.java +++ b/src/main/java/org/apache/maven/archiver/MavenArchiver.java @@ -56,7 +56,6 @@ import org.codehaus.plexus.interpolation.RecursionInterceptor; import org.codehaus.plexus.interpolation.StringSearchInterpolator; import org.codehaus.plexus.interpolation.ValueSource; -import org.codehaus.plexus.util.StringUtils; import static org.apache.maven.archiver.ManifestConfiguration.CLASSPATH_LAYOUT_TYPE_CUSTOM; import static org.apache.maven.archiver.ManifestConfiguration.CLASSPATH_LAYOUT_TYPE_REPOSITORY; @@ -390,9 +389,10 @@ private void handleExtraExpression(Artifact artifact, List valueSou } extraExpressions.setProperty("groupIdPath", artifact.getGroupId().replace('.', '/')); - if (StringUtils.isNotEmpty(artifact.getClassifier())) { - extraExpressions.setProperty("dashClassifier", "-" + artifact.getClassifier()); - extraExpressions.setProperty("dashClassifier?", "-" + artifact.getClassifier()); + String classifier = artifact.getClassifier(); + if (classifier != null && !classifier.isEmpty()) { + extraExpressions.setProperty("dashClassifier", "-" + classifier); + extraExpressions.setProperty("dashClassifier?", "-" + classifier); } else { extraExpressions.setProperty("dashClassifier", ""); extraExpressions.setProperty("dashClassifier?", ""); @@ -772,7 +772,7 @@ public static Optional parseBuildOutputTimestamp(String outputTimestamp } // Number representing seconds since the epoch - if ((outputTimestamp != null && !outputTimestamp.isEmpty()) && StringUtils.isNumeric(outputTimestamp)) { + if (isNumeric(outputTimestamp)) { return Optional.of(Instant.ofEpochSecond(Long.parseLong(outputTimestamp))); } @@ -800,6 +800,21 @@ public static Optional parseBuildOutputTimestamp(String outputTimestamp } } + private static boolean isNumeric(String str) { + + if (str.isEmpty()) { + return false; + } + + for (char c : str.toCharArray()) { + if (!Character.isDigit(c)) { + return false; + } + } + + return true; + } + /** * Configure Reproducible Builds archive creation if a timestamp is provided. * diff --git a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java index e2c27c4..2ad0176 100644 --- a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java +++ b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java @@ -23,6 +23,10 @@ import java.io.InputStream; import java.net.URI; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.FileTime; import java.time.Instant; import java.time.format.DateTimeParseException; import java.util.ArrayList; @@ -38,6 +42,7 @@ import java.util.jar.Attributes; import java.util.jar.JarFile; import java.util.jar.Manifest; +import java.util.stream.Stream; import java.util.zip.ZipEntry; import org.apache.maven.artifact.Artifact; @@ -55,8 +60,6 @@ import org.apache.maven.project.MavenProject; import org.codehaus.plexus.archiver.jar.JarArchiver; import org.codehaus.plexus.archiver.jar.ManifestException; -import org.codehaus.plexus.util.FileUtils; -import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystemSession; import org.junit.jupiter.api.Test; @@ -69,6 +72,7 @@ import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; class MavenArchiverTest { @@ -239,8 +243,13 @@ void testRecreation() throws Exception { MavenArchiveConfiguration config = new MavenArchiveConfiguration(); config.setForced(false); - File directory = new File("target/maven-archiver"); - org.apache.commons.io.FileUtils.deleteDirectory(directory); + Path directory = Paths.get("target", "maven-archiver"); + if (Files.exists(directory)) { + try (Stream paths = Files.walk(directory)) { + paths.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + } + archiver.createArchive(session, project, config); assertThat(jarFile).exists(); @@ -248,9 +257,10 @@ void testRecreation() throws Exception { jarFile.setLastModified(history); long time = jarFile.lastModified(); - List files = FileUtils.getFiles(directory, "**/**", null, true); - for (File file : files) { - assertThat(file.setLastModified(time)).isTrue(); + try (Stream paths = Files.walk(directory)) { + FileTime fileTime = FileTime.fromMillis(time); + paths.forEach(path -> assertThatCode(() -> Files.setLastModifiedTime(path, fileTime)) + .doesNotThrowAnyException()); } archiver.createArchive(session, project, config); @@ -527,8 +537,7 @@ void testManifestEntries() throws Exception { assertThat(manifest) .containsEntry(new Attributes.Name("Build-Jdk-Spec"), System.getProperty("java.specification.version")); - assertThat(StringUtils.isEmpty(manifest.getValue(new Attributes.Name("keyWithEmptyValue")))) - .isTrue(); + assertThat(manifest.getValue(new Attributes.Name("keyWithEmptyValue"))).isEmpty(); assertThat(manifest).containsKey(new Attributes.Name("keyWithEmptyValue")); manifest = jarFileManifest.getAttributes("UserSection"); @@ -616,8 +625,8 @@ void testDefaultClassPathValue() throws Exception { final Manifest manifest = getJarFileManifest(jarFile); String classPath = manifest.getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) - .containsExactly("dummy1-1.0.jar", "dummy2-1.5.jar", "dummy3-2.0.jar"); + assertThat(classPath.split(" ")) + .containsExactly("dummy1-1.0.jar", "dummy2-1.5.jar", "dummy3-2.0-classifier.jar"); } private void deleteAndAssertNotPresent(File jarFile) { @@ -650,8 +659,8 @@ void testDefaultClassPathValue_WithSnapshot() throws Exception { final Manifest manifest = getJarFileManifest(jarFile); String classPath = manifest.getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) - .containsExactly("dummy1-1.1-20081022.112233-1.jar", "dummy2-1.5.jar", "dummy3-2.0.jar"); + assertThat(classPath.split(" ")) + .containsExactly("dummy1-1.1-20081022.112233-1.jar", "dummy2-1.5.jar", "dummy3-2.0-classifier.jar"); } @Test @@ -674,21 +683,21 @@ void testMavenRepoClassPathValue() throws Exception { archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) .containsExactly( "org/apache/dummy/dummy1/1.0.1/dummy1-1.0.jar", "org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "org/apache/dummy/dummy1/1.0.1/dummy1-1.0.jar", "org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); } @Test @@ -712,15 +721,16 @@ void shouldCreateArchiveWithSimpleClassPathLayoutWhileSettingSimpleLayoutExplici archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); - assertThat(classPathEntries).containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); + assertThat(classPathEntries) + .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) - .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + assertThat(classPath.split(" ")) + .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); } @Test @@ -745,15 +755,16 @@ void shouldCreateArchiveCustomerLayoutSimple() throws Exception { archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); - assertThat(classPathEntries).containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); + assertThat(classPathEntries) + .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) - .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + assertThat(classPath.split(" ")) + .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); } @Test @@ -778,16 +789,16 @@ void shouldCreateArchiveCustomLayoutSimpleNonUnique() throws Exception { archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) - .containsExactly("lib/dummy1-1.0.1.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + .containsExactly("lib/dummy1-1.0.1.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) - .containsExactly("lib/dummy1-1.0.1.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + assertThat(classPath.split(" ")) + .containsExactly("lib/dummy1-1.0.1.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); } @Test @@ -812,22 +823,22 @@ void shouldCreateArchiveCustomLayoutRepository() throws Exception { archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) .containsExactly( "lib/org/apache/dummy/dummy1/1.0.1/dummy1-1.0.jar", "lib/org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "lib/org/apache/dummy/dummy1/1.0.1/dummy1-1.0.jar", "lib/org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); } @Test @@ -852,22 +863,22 @@ void shouldCreateArchiveCustomLayoutRepositoryNonUnique() throws Exception { archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) .containsExactly( "lib/org/apache/dummy/dummy1/1.0.1/dummy1-1.0.1.jar", "lib/org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "lib/org/apache/dummy/dummy1/1.0.1/dummy1-1.0.1.jar", "lib/org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "lib/org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); } @Test @@ -890,14 +901,15 @@ void shouldCreateArchiveWithSimpleClassPathLayoutUsingDefaults() throws Exceptio archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); - assertThat(classPathEntries).containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); + assertThat(classPathEntries) + .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) - .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0.jar"); + assertThat(classPath.split(" ")) + .containsExactly("lib/dummy1-1.0.jar", "lib/dummy2-1.5.jar", "lib/dummy3-2.0-classifier.jar"); } @Test @@ -920,21 +932,21 @@ void testMavenRepoClassPathValue_WithSnapshot() throws Exception { assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) .containsExactly( "org/apache/dummy/dummy1/1.1-SNAPSHOT/dummy1-1.1-20081022.112233-1.jar", "org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "org/apache/dummy/dummy1/1.1-SNAPSHOT/dummy1-1.1-20081022.112233-1.jar", "org/apache/dummy/foo/dummy2/1.5/dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/dummy3-2.0-classifier.jar"); } @Test @@ -959,22 +971,22 @@ void testCustomClassPathValue() throws Exception { archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) .containsExactly( "org/apache/dummy/dummy1/1.0/TEST-dummy1-1.0.jar", "org/apache/dummy/foo/dummy2/1.5/TEST-dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0-classifier.jar"); final Manifest manifest1 = getJarFileManifest(jarFile); String classPath = manifest1.getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "org/apache/dummy/dummy1/1.0/TEST-dummy1-1.0.jar", "org/apache/dummy/foo/dummy2/1.5/TEST-dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0-classifier.jar"); } @Test @@ -999,21 +1011,21 @@ void testCustomClassPathValue_WithSnapshotResolvedVersion() throws Exception { assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries) .containsExactly( "org/apache/dummy/dummy1/1.1-SNAPSHOT/TEST-dummy1-1.1-20081022.112233-1.jar", "org/apache/dummy/foo/dummy2/1.5/TEST-dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "org/apache/dummy/dummy1/1.1-SNAPSHOT/TEST-dummy1-1.1-20081022.112233-1.jar", "org/apache/dummy/foo/dummy2/1.5/TEST-dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0-classifier.jar"); } @Test @@ -1038,19 +1050,19 @@ void testCustomClassPathValue_WithSnapshotForcingBaseVersion() throws Exception archiver.createArchive(session, project, config); assertThat(jarFile).exists(); Manifest manifest = archiver.getManifest(session, project, config); - String[] classPathEntries = StringUtils.split( - new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()), " "); + String[] classPathEntries = + new String(manifest.getMainAttributes().getValue("Class-Path").getBytes()).split(" "); assertThat(classPathEntries[0]).isEqualTo("org/apache/dummy/dummy1/1.1-SNAPSHOT/TEST-dummy1-1.1-SNAPSHOT.jar"); assertThat(classPathEntries[1]).isEqualTo("org/apache/dummy/foo/dummy2/1.5/TEST-dummy2-1.5.jar"); - assertThat(classPathEntries[2]).isEqualTo("org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0.jar"); + assertThat(classPathEntries[2]).isEqualTo("org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0-classifier.jar"); String classPath = getJarFileManifest(jarFile).getMainAttributes().getValue(Attributes.Name.CLASS_PATH); assertThat(classPath).isNotNull(); - assertThat(StringUtils.split(classPath, " ")) + assertThat(classPath.split(" ")) .containsExactly( "org/apache/dummy/dummy1/1.1-SNAPSHOT/TEST-dummy1-1.1-SNAPSHOT.jar", "org/apache/dummy/foo/dummy2/1.5/TEST-dummy2-1.5.jar", - "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0.jar"); + "org/apache/dummy/bar/dummy3/2.0/TEST-dummy3-2.0-classifier.jar"); } @Test @@ -1185,6 +1197,7 @@ private MockArtifact getMockArtifact3() { artifact3.setVersion("2.0"); artifact3.setScope("runtime"); artifact3.setType("jar"); + artifact3.setClassifier("classifier"); artifact3.setFile(getClasspathFile(artifact3.getArtifactId() + "-" + artifact3.getVersion() + ".jar")); return artifact3; } From 1602aa4d149d318f992433ca9f0a660ff55e95c5 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Sat, 19 Aug 2023 12:47:47 +0200 Subject: [PATCH 23/23] [maven-release-plugin] prepare release maven-archiver-3.6.1 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index b5b9b1a..fb32382 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.apache.maven maven-archiver - 3.6.1-SNAPSHOT + 3.6.1 Apache Maven Archiver Provides utility methods for creating JARs and other archive files from a Maven project. @@ -36,7 +36,7 @@ scm:git:https://gitbox.apache.org/repos/asf/maven-archiver.git scm:git:https://gitbox.apache.org/repos/asf/maven-archiver.git - HEAD + maven-archiver-3.6.1 https://github.com/apache/maven-archiver/tree/${project.scm.tag} @@ -57,7 +57,7 @@ 3.2.5 8 - 2022-06-23T12:18:27Z + 2023-08-19T10:47:34Z