Skip to content

Commit 93ec5a9

Browse files
[MASSEMBLY-988] Use newer plexus-archiver methods, code cleanup
1 parent bbfc895 commit 93ec5a9

File tree

4 files changed

+61
-220
lines changed

4 files changed

+61
-220
lines changed

src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
package org.apache.maven.plugins.assembly.archive;
2020

2121
import java.io.File;
22-
import java.util.Date;
22+
import java.nio.file.attribute.FileTime;
2323

2424
import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
2525
import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
@@ -65,6 +65,6 @@ File createArchive(
6565
AssemblerConfigurationSource configSource,
6666
boolean recompressZippedFiles,
6767
String mergeManifestMode,
68-
Date sourceDateEpoch)
68+
FileTime sourceDateEpoch)
6969
throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException;
7070
}

src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java

+18-55
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
import java.io.StringReader;
2727
import java.lang.reflect.InvocationTargetException;
2828
import java.lang.reflect.Method;
29+
import java.nio.file.attribute.FileTime;
2930
import java.util.ArrayList;
3031
import java.util.Collections;
31-
import java.util.Date;
3232
import java.util.List;
3333
import java.util.Map;
3434

@@ -128,7 +128,7 @@ public File createArchive(
128128
final AssemblerConfigurationSource configSource,
129129
boolean recompressZippedFiles,
130130
String mergeManifestMode,
131-
Date outputTimestamp)
131+
FileTime outputTimestamp)
132132
throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException {
133133
validate(assembly);
134134

@@ -271,21 +271,25 @@ protected Archiver createArchiver(
271271
final List<ContainerDescriptorHandler> containerHandlers,
272272
boolean recompressZippedFiles,
273273
String mergeManifestMode,
274-
Date outputTimestamp)
274+
FileTime outputTimestamp)
275275
throws NoSuchArchiverException {
276276
Archiver archiver;
277-
if ("txz".equals(format)
278-
|| "tgz".equals(format)
279-
|| "tbz2".equals(format)
280-
|| "tzst".equals(format)
281-
|| format.startsWith("tar")) {
282-
archiver = createTarArchiver(format, TarLongFileMode.valueOf(configSource.getTarLongFileMode()));
283-
} else if ("war".equals(format)) {
284-
archiver = createWarArchiver();
277+
278+
// one missing alias in plexus-archiver
279+
if ("tzst".equals(format)) {
280+
archiver = createTarZstArchiver();
285281
} else {
286282
archiver = archiverManager.getArchiver(format);
287283
}
288284

285+
if (archiver instanceof TarArchiver) {
286+
((TarArchiver) archiver).setLongfile(TarLongFileMode.valueOf(configSource.getTarLongFileMode()));
287+
}
288+
289+
if (archiver instanceof WarArchiver) {
290+
((WarArchiver) archiver).setExpectWebXml(false);
291+
}
292+
289293
if (archiver instanceof AbstractZipArchiver) {
290294
((AbstractZipArchiver) archiver).setRecompressAddedZips(recompressZippedFiles);
291295
}
@@ -323,13 +327,12 @@ protected Archiver createArchiver(
323327
archiver = new DryRunArchiver(archiver, LOGGER);
324328
}
325329

326-
archiver.setUseJvmChmod(configSource.isUpdateOnly());
327330
archiver.setIgnorePermissions(configSource.isIgnorePermissions());
328331
archiver.setForced(!configSource.isUpdateOnly());
329332

330333
// configure for Reproducible Builds based on outputTimestamp value
331334
if (outputTimestamp != null) {
332-
archiver.configureReproducible(outputTimestamp);
335+
archiver.configureReproducibleBuild(outputTimestamp);
333336
}
334337

335338
if (configSource.getOverrideUid() != null) {
@@ -460,49 +463,9 @@ private Object[] getContainerRealm() {
460463
}
461464
}
462465

463-
protected Archiver createWarArchiver() throws NoSuchArchiverException {
464-
final WarArchiver warArchiver = (WarArchiver) archiverManager.getArchiver("war");
465-
warArchiver.setIgnoreWebxml(false); // See MNG-1274
466-
467-
return warArchiver;
468-
}
469-
470-
protected Archiver createTarArchiver(final String format, final TarLongFileMode tarLongFileMode)
471-
throws NoSuchArchiverException {
466+
protected Archiver createTarZstArchiver() throws NoSuchArchiverException {
472467
final TarArchiver tarArchiver = (TarArchiver) archiverManager.getArchiver("tar");
473-
final int index = format.indexOf('.');
474-
if (index >= 0) {
475-
TarArchiver.TarCompressionMethod tarCompressionMethod;
476-
// TODO: this should accept gz and bz2 as well so we can skip
477-
// TODO: over the switch
478-
final String compression = format.substring(index + 1);
479-
if ("gz".equals(compression)) {
480-
tarCompressionMethod = TarArchiver.TarCompressionMethod.gzip;
481-
} else if ("bz2".equals(compression)) {
482-
tarCompressionMethod = TarArchiver.TarCompressionMethod.bzip2;
483-
} else if ("xz".equals(compression)) {
484-
tarCompressionMethod = TarArchiver.TarCompressionMethod.xz;
485-
} else if ("snappy".equals(compression)) {
486-
tarCompressionMethod = TarArchiver.TarCompressionMethod.snappy;
487-
} else if ("zst".equals(compression)) {
488-
tarCompressionMethod = TarArchiver.TarCompressionMethod.zstd;
489-
} else {
490-
// TODO: better handling
491-
throw new IllegalArgumentException("Unknown compression format: " + compression);
492-
}
493-
tarArchiver.setCompression(tarCompressionMethod);
494-
} else if ("tgz".equals(format)) {
495-
tarArchiver.setCompression(TarArchiver.TarCompressionMethod.gzip);
496-
} else if ("tbz2".equals(format)) {
497-
tarArchiver.setCompression(TarArchiver.TarCompressionMethod.bzip2);
498-
} else if ("txz".equals(format)) {
499-
tarArchiver.setCompression(TarArchiver.TarCompressionMethod.xz);
500-
} else if ("tzst".equals(format)) {
501-
tarArchiver.setCompression(TarArchiver.TarCompressionMethod.zstd);
502-
}
503-
504-
tarArchiver.setLongfile(tarLongFileMode);
505-
468+
tarArchiver.setCompression(TarArchiver.TarCompressionMethod.zstd);
506469
return tarArchiver;
507470
}
508471
}

src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
package org.apache.maven.plugins.assembly.mojos;
2020

2121
import java.io.File;
22+
import java.nio.file.attribute.FileTime;
2223
import java.util.Collections;
23-
import java.util.Date;
2424
import java.util.List;
2525
import java.util.Properties;
2626

@@ -475,19 +475,20 @@ public void execute() throws MojoExecutionException, MojoFailureException {
475475
// TODO: include dependencies marked for distribution under certain formats
476476
// TODO: how, might we plug this into an installer, such as NSIS?
477477

478-
MavenArchiver mavenArchiver = new MavenArchiver();
479-
Date outputDate = mavenArchiver.parseOutputTimestamp(outputTimestamp);
478+
FileTime outputDate = MavenArchiver.parseBuildOutputTimestamp(outputTimestamp)
479+
.map(FileTime::from)
480+
.orElse(null);
480481

481482
boolean warnedAboutMainProjectArtifact = false;
482483
for (final Assembly assembly : assemblies) {
483484
try {
484485
final String fullName = AssemblyFormatUtils.getDistributionName(assembly, this);
485486

486487
List<String> effectiveFormats = formats;
487-
if (effectiveFormats == null || effectiveFormats.size() == 0) {
488+
if (effectiveFormats == null || effectiveFormats.isEmpty()) {
488489
effectiveFormats = assembly.getFormats();
489490
}
490-
if (effectiveFormats == null || effectiveFormats.size() == 0) {
491+
if (effectiveFormats == null || effectiveFormats.isEmpty()) {
491492
throw new MojoFailureException(
492493
"No formats specified in the execution parameters or the assembly descriptor.");
493494
}

0 commit comments

Comments
 (0)