blob: 661943bbf8412722d8a543df99e0bbed12bc9caf [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Maven Shade Plugin Extensions :: Apache Log4j Transform</title>
<link rel="canonical" href="https://logging.apache.org/log4j/transform/log4j-transform-maven-shade-plugin-extensions.html">
<meta name="generator" content="Antora 3.2.0-alpha.4">
<link rel="stylesheet" href="./_/css/site.css">
<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
<!-- `@asciidoctor/tabs` extension styles -->
<link rel="stylesheet" href="./_/css/vendor/tabs.css">
<style>
/* Default `h4` and `h5` are smaller than the normal text, fix header font sizing: */
.doc h1 { font-size: 1.9rem; }
.doc h2 { font-size: 1.7rem; }
.doc h3 { font-size: 1.5rem; font-weight: 400; }
.doc h4 { font-size: 1.3rem; font-weight: 500; }
.doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
/* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
.doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
.doc pre { font-size: 0.7rem; }
.doc .colist { font-size: 0.75rem; }
/* Tab header fonts aren't rendered good, adjusting the font weight: */
.tablist > ul li { font-weight: 500; }
/* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
.toc .toc-menu li[data-level="4"] a {
padding-left: 2.75rem;
}
/* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
.hljs-string {
color: #0f8532;
}
</style>
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<span class="navbar-item title">Apache Log4j Transform</span>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="https://logging.apache.org">a subproject of&nbsp;<strong>Apache Logging Services</strong></a>
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="ROOT" data-version="">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
<h3 class="title"><a href="index.html">Home</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<span class="nav-text">Components</span>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="log4j-transform-maven-plugin.html">Log4j Transform Maven Plugin</a>
</li>
<li class="nav-item is-current-page" data-depth="2">
<a class="nav-link" href="log4j-transform-maven-shade-plugin-extensions.html">Maven Shade Plugin Extensions</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="development.html">Development</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="release-notes.html">Release notes</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="https://logging.apache.org/download.html">Download</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="index.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="index.html">Home</a></li>
<li>Components</li>
<li><a href="log4j-transform-maven-shade-plugin-extensions.html">Maven Shade Plugin Extensions</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j-transform/edit/main/src/site/antora/modules/ROOT/pages/log4j-transform-maven-shade-plugin-extensions.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Maven Shade Plugin Extensions</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This project contains a collection of <a href="https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html">resource transformer</a>s for the Apache Maven Shade Plugin that allows you to use additional Log4j 2.x Core component modules.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="log4j-plugin-cache-transformer"><a class="anchor" href="#log4j-plugin-cache-transformer"></a>Log4j Plugin Cache Transformer</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A
<a href="https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html">resource transformer</a>
for the
<a href="https://maven.apache.org/plugins/maven-shade-plugin/index.html">Apache Maven Shade Plugin</a>
that merges <code>Log4j2Plugins.dat</code> plugin caches from all the jars containing Log4j 2.x Core components.</p>
</div>
<div class="paragraph">
<p>This transformer was formerly available at
<a href="https://github.com/edwgiz/maven-shaded-log4j-transformer">edwgiz/maven-shaded-log4j-transformer</a>
and was donated to the Apache Software Foundation by its author.</p>
</div>
<div class="sect2">
<h3 id="log4j-plugin-cache-transformer-usage"><a class="anchor" href="#log4j-plugin-cache-transformer-usage"></a>Usage</h3>
<div class="paragraph">
<p>This resource transformer is usually used together with the <code>ManifestResourceTransformer</code> and <code>ServicesResourceTransformer</code> to integrate Log4j 2.x libraries in a shaded JAR.</p>
</div>
<div class="paragraph">
<p>A typical configuration is:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-shade-plugin&lt;/artifactId&gt;
&lt;version&gt;3.4.1&lt;/version&gt;
&lt;dependencies&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.apache.logging.log4j&lt;/groupId&gt;
&lt;artifactId&gt;log4j-transform-maven-shade-plugin-extensions&lt;/artifactId&gt;
&lt;version&gt;0.2.0-SNAPSHOT&lt;/version&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;executions&gt;
&lt;execution&gt;
&lt;id&gt;shade-jar-with-dependencies&lt;/id&gt;
&lt;phase&gt;package&lt;/phase&gt;
&lt;goals&gt;
&lt;goal&gt;shade&lt;/goal&gt;
&lt;/goals&gt;
&lt;configuration&gt;
&lt;transformers&gt;
&lt;transformer implementation="org.apache.logging.log4j.maven.plugins.shade.transformer.Log4j2PluginCacheFileTransformer"/&gt;
&lt;transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/&gt;
&lt;transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"&gt;
&lt;manifestEntries&gt;
&lt;Multi-Release&gt;true&lt;/Multi-Release&gt;
&lt;/manifestEntries&gt;
&lt;/transformer&gt;
&lt;/transformers&gt;
&lt;/configuration&gt;
&lt;/execution&gt;
&lt;/executions&gt;
&lt;/plugin&gt;</code></pre>
</div>
</div>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<p>
Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
</p>
<p>
Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
Other names may be trademarks of their respective owners.
</p>
</footer>
<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
<script async src="./_/js/vendor/highlight.js"></script>
<!-- `@asciidoctor/tabs` extension scripts -->
<script async src="./_/js/vendor/tabs.js"></script>
</body>
</html>