Common base implementations for the ShrinkWrap project enabling declarative assembly of Java archives (JAR, WAR, EAR, RAR) in code
npx @tessl/cli install tessl/maven-org-jboss-shrinkwrap--shrinkwrap-impl-base@1.2.0ShrinkWrap Implementation Base provides common base implementations for the ShrinkWrap project, enabling declarative assembly of Java archives (JAR, WAR, EAR, RAR) in code. This library serves as the foundation for creating, manipulating, and exporting various archive formats without requiring build scripts or external tools.
<dependency>
<groupId>org.jboss.shrinkwrap</groupId>
<artifactId>shrinkwrap-impl-base</artifactId>
<version>1.2.6</version>
</dependency>Primary base classes for archive implementations:
import org.jboss.shrinkwrap.impl.base.MemoryMapArchiveBase;
import org.jboss.shrinkwrap.impl.base.container.ContainerBase;
import org.jboss.shrinkwrap.impl.base.spec.JavaArchiveImpl;
import org.jboss.shrinkwrap.impl.base.spec.WebArchiveImpl;Exporters and importers:
import org.jboss.shrinkwrap.impl.base.exporter.ZipExporterImpl;
import org.jboss.shrinkwrap.impl.base.exporter.ExplodedExporterImpl;
import org.jboss.shrinkwrap.impl.base.importer.ZipImporterImpl;Utilities and path handling:
import org.jboss.shrinkwrap.impl.base.path.BasicPath;
import org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader;Creating and working with archive implementations:
import org.jboss.shrinkwrap.impl.base.spec.JavaArchiveImpl;
import org.jboss.shrinkwrap.impl.base.path.BasicPath;
import org.jboss.shrinkwrap.api.Archive;
// Create a JAR archive implementation
JavaArchiveImpl archive = new JavaArchiveImpl("myapp.jar");
// Add content using the container base functionality
archive.addClass(MyClass.class);
archive.addAsResource("config.properties");
// Work with archive paths
BasicPath path = new BasicPath("/META-INF/MANIFEST.MF");
// Export to different formats
InputStream zipStream = archive.as(ZipExporter.class).exportAsInputStream();The impl-base module is organized into several key architectural layers:
Foundational abstract classes providing core archive functionality including memory management, content operations, and thread safety.
Key API interfaces:
public abstract class MemoryMapArchiveBase<T extends Archive<T>> implements Archive<T>
public abstract class AssignableBase<T extends Assignable> implements AssignableComplete implementations for standard Java archive types with specialized container operations.
Key API interfaces:
public abstract class ContainerBase<T extends Archive<T>> implements Archive<T>
public class JavaArchiveImpl extends ContainerBase<JavaArchive> implements JavaArchive
public class WebArchiveImpl extends WebContainerBase<WebArchive> implements WebArchiveConcrete archive type implementations for JAR, WAR, EAR, and RAR formats with full specification compliance.
Key API interfaces:
public class JavaArchiveImpl implements JavaArchive
public class WebArchiveImpl implements WebArchive
public class EnterpriseArchiveImpl implements EnterpriseArchiveComprehensive support for importing from and exporting to various archive formats including ZIP, TAR, and exploded directories.
Key API interfaces:
public class ZipExporterImpl implements ZipExporter
public class ExplodedExporterImpl implements ExplodedExporter
public class ZipImporterImpl implements ZipImporterArchive path manipulation and content filtering capabilities for selective archive operations.
Key API interfaces:
public class BasicPath implements ArchivePath
public class IncludeRegExpPaths implements Filter<ArchivePath>
public class ExcludePaths implements Filter<ArchivePath>Asset implementations for various content types including service providers and ZIP entries.
Key API interfaces:
public class ServiceProviderAsset implements Asset
public class ZipFileEntryAsset implements AssetThe library defines specific exceptions for common error scenarios:
public class ExtensionLoadingException extends RuntimeExceptionCommon error handling patterns:
ExtensionLoadingExceptionIllegalArgumentException