This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new c622d402e4 Create new shaded modules.
c622d402e4 is described below

commit c622d402e4218def2bb62883cd3299a314811263
Author: James Bognar <[email protected]>
AuthorDate: Mon Oct 13 10:32:04 2025 -0400

    Create new shaded modules.
---
 .gitignore                                         |   3 +
 README.md                                          |   4 +-
 juneau-all/.gitignore                              |   6 -
 juneau-all/src/assembly/all.xml                    |  36 --
 .../main/ConfigurablePropertyCodeGenerator.java    | 280 -------------
 juneau-all/src/java/main/FieldSorter.java          |  27 --
 juneau-distrib/pom.xml                             |  46 +-
 juneau-docs/docs/release-notes/9.2.0.md            | 109 +++++
 .../topics/01.01.00.JuneauEcosystemOverview.md     |  19 +-
 .../docs/topics/19.01.00.JuneauAllBasics.md        |  63 ---
 .../docs/topics/19.01.00.JuneauShadedOverview.md   | 466 +++++++++++++++++++++
 .../docs/topics/19.02.00.JuneauShadedCore.md       | 196 +++++++++
 .../docs/topics/19.03.00.JuneauShadedRestClient.md | 283 +++++++++++++
 .../docs/topics/19.04.00.JuneauShadedRestServer.md | 388 +++++++++++++++++
 .../19.05.00.JuneauShadedRestServerSpringboot.md   | 436 +++++++++++++++++++
 .../docs/topics/19.06.00.JuneauShadedAll.md        | 384 +++++++++++++++++
 juneau-docs/src/pages/downloads.md                 |   9 +-
 juneau-shaded/README.md                            | 261 ++++++++++++
 .../juneau-shaded-all}/pom.xml                     | 101 +++--
 .../juneau-shaded-core}/pom.xml                    |  77 ++--
 juneau-shaded/juneau-shaded-rest-client/pom.xml    |  79 ++++
 .../juneau-shaded-rest-server-springboot/pom.xml   |  69 +++
 .../juneau-shaded-rest-server}/pom.xml             |  77 +---
 juneau-shaded/pom.xml                              | 105 +++++
 pom.xml                                            |   2 +-
 25 files changed, 2935 insertions(+), 591 deletions(-)

diff --git a/.gitignore b/.gitignore
index 290448ec4d..19cb8c068b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,9 @@ derby.log
 # Temporary cursor assistant scripts
 cursor-*
 
+# Maven Shade Plugin generated files
+**/dependency-reduced-pom.xml
+
 # Note: Maven site generation creates target/site/ (already ignored by 
**/target/ above)
 /juneau.code-workspace
 /create-mvn-site.log
diff --git a/README.md b/README.md
index 213c6f75bd..45bd4100fb 100644
--- a/README.md
+++ b/README.md
@@ -68,7 +68,7 @@ Apache Juneau™ excels in the following scenarios:
 ```xml
 <dependency>
     <groupId>org.apache.juneau</groupId>
-    <artifactId>juneau-all</artifactId>
+    <artifactId>juneau-shaded-all</artifactId>
     <version>9.1.0</version>
 </dependency>
 ```
@@ -292,7 +292,7 @@ Apache Juneau™ is a single cohesive Java ecosystem 
consisting of the following
 * **juneau-examples-rest-jetty** - Jetty microservice examples.
 * **juneau-examples-rest-springboot** - Spring Boot examples.
 * **juneau-petstore** - Complete REST application example.
-* **juneau-all** - Convenience dependency combining all core Juneau modules. 
+* **juneau-shaded** - Shaded (uber) JARs combining multiple Juneau modules for 
simplified dependency management, especially useful for Bazel builds. 
 
 Questions via email to [email protected] are always welcome.
 
diff --git a/juneau-all/.gitignore b/juneau-all/.gitignore
deleted file mode 100644
index 34acf885cb..0000000000
--- a/juneau-all/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/target/
-**/.DS_Store
-.classpath
-.project
-/.settings/
-/bin/
diff --git a/juneau-all/src/assembly/all.xml b/juneau-all/src/assembly/all.xml
deleted file mode 100644
index c011c64075..0000000000
--- a/juneau-all/src/assembly/all.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<assembly
-       
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3";
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3
 https://maven.apache.org/xsd/assembly-1.1.3.xsd";>
-       <id>all</id>
-       <formats>
-               <format>dir</format>
-               <format>zip</format>
-       </formats>
-       <includeBaseDirectory>false</includeBaseDirectory>
-       <dependencySets>
-        <dependencySet>
-            <includes>
-                <include>*</include>
-            </includes>
-            <outputDirectory></outputDirectory>
-        </dependencySet>
-    </dependencySets>
-</assembly>
\ No newline at end of file
diff --git a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java 
b/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
deleted file mode 100644
index d2271e38ec..0000000000
--- a/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * 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.
- */
-
-import static org.apache.juneau.common.internal.IOUtils.*;
-import static org.apache.juneau.common.internal.Utils.*;
-import static org.apache.juneau.internal.CollectionUtils.*;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.nio.file.*;
-import java.util.*;
-import java.util.stream.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.common.internal.*;
-import org.apache.juneau.internal.*;
-import org.apache.juneau.reflect.*;
-
-public class ConfigurablePropertyCodeGenerator {
-
-       static Set<Class<?>> IGNORE_CLASSES = Utils.set(
-               org.apache.http.entity.AbstractHttpEntity.class,
-               org.apache.http.entity.BasicHttpEntity.class,
-               org.apache.http.message.AbstractHttpMessage.class,
-               org.apache.http.message.BasicHttpResponse.class,
-               BeanSession.class,
-               ArrayList.class,
-               RuntimeException.class,
-               Writer.class
-       );
-
-       private static String[] SOURCE_PATHS = {
-               "juneau-core/juneau-assertions",
-               "juneau-core/juneau-common",
-               "juneau-core/juneau-config",
-               "juneau-core/juneau-bean",
-               "juneau-core/juneau-marshall",
-               "juneau-core/juneau-marshall-rdf",
-               "juneau-rest/juneau-rest-common",
-               "juneau-rest/juneau-rest-client",
-               "juneau-rest/juneau-rest-server",
-               "juneau-rest/juneau-rest-mock",
-       };
-
-       public static void main(String[] args) throws Exception {
-
-               Set<Class<?>> ignoreClasses = new HashSet<>();
-               for (Class<?> ic : IGNORE_CLASSES) {
-                       while (ic != null) {
-                               ignoreClasses.add(ic);
-                               ic = ic.getSuperclass();
-                       }
-               }
-
-               Map<Class<?>, Set<Method>> configMethods = new HashMap<>();
-
-               Map<Class<?>,File> classMap = map();
-               for (String sp : SOURCE_PATHS) {
-                       File f = new File("../"+sp+"/src/main/java");
-                       Path p = f.toPath();
-                       try (Stream<Path> walkStream = Files.walk(p)) {
-                               walkStream
-                                       .filter(x -> x.toFile().isFile())
-                                       .map(x -> x.toFile())
-                                       .filter(x -> 
x.getName().endsWith(".java"))
-                                       .filter(x -> hasFluentSetters(x))
-                                       .forEach(x -> classMap.put(toClass(x), 
x));
-                       }
-               }
-
-               System.out.println("Found " + classMap.size() + " classes with 
fluent setters:");
-               classMap.keySet().forEach(x -> System.out.println("\t" + x));
-
-               for (Class<?> c : classMap.keySet()) {
-                       System.out.println("Seaching " + c.getName());
-                       Set<Method> s = new TreeSet<>(new MethodComparator());
-                       for (Method m : c.getDeclaredMethods()) {
-                               if (m.getAnnotation(FluentSetter.class) != 
null) {
-                                       s.add(m);
-                                       System.out.println("\tFound: " + 
m.getName());
-                               }
-                       }
-                       configMethods.put(c, s);
-               }
-
-               for (Map.Entry<Class<?>,File> e : classMap.entrySet()) {
-                       Class<?> c = e.getKey();
-                       File f = e.getValue();
-
-                       if (! c.isAnnotationPresent(FluentSetters.class))
-                               System.err.println("@FluentSetters not present 
on class " + c.getName());
-
-                       System.out.println("Processing " + f.getName());
-                       String s = read(f);
-
-                       int i1 = s.indexOf("<FluentSetters>"), i2 = 
s.indexOf("</FluentSetters>");
-                       String cpSection = null;
-                       if (i1 != -1 && i2 != -1) {
-                               cpSection = s.substring(i1+15, i2);
-                       } else {
-                               System.err.println("...<FluentSetters> not 
found: " + f.getName());
-                               continue;
-                       }
-
-                       Map<String,String> docs = 
Stream.of(cpSection.split("[\n]{2,}"))
-                               .map(x -> x.trim())
-                               .filter(x -> x.startsWith("/*"))
-                               .map(x -> x.split("(?s)\\*\\/.*public"))
-                               .collect(Collectors.toMap(x -> 
("\n\tpublic"+x[1].substring(0, x[1].indexOf("\n"))), x -> ("\t"+x[0]+"*/\n")));
-
-                       StringBuilder sb = new StringBuilder();
-                       ClassInfo ci = ClassInfo.of(c);
-                       String cName = ci.getSimpleName();
-                       Set<String> ignore = Utils.set();
-                       FluentSetters fs = 
ci.getAnnotation(FluentSetters.class);
-                       if (! fs.returns().isEmpty())
-                               cName = fs.returns();
-                       for (String i : fs.ignore())
-                               ignore.add(i);
-
-                       String indent = c.getDeclaringClass() != null ? "\t\t" 
: "\t";
-                       Set<String> sigsAdded = new HashSet<>();
-
-                       List<ClassInfo> l = ClassInfo.of(c).getParents();
-                       for (int i = l.size()-1; i>=0; i--) {
-                               ClassInfo pc = l.get(i);
-                               Class<?> pcc = pc.inner();
-                               if (pcc != c) {
-                                       Set<Method> ms = configMethods.get(pcc);
-                                       if (ms != null) {
-                                               for (Method m : ms) {
-
-                                                       // Don't render 
deprecated methods.
-                                                       if 
(m.getAnnotation(Deprecated.class) != null)
-                                                               continue;
-
-                                                       String mSig = new 
StringBuilder(m.getName()).append("(").append(getArgs(m)).append(")").toString();
-
-                                                       // Don't render ignored 
methods.
-                                                       if 
(ignore.contains(m.getName()) || ignore.contains(mSig) || 
sigsAdded.contains(mSig))
-                                                               continue;
-
-                                                       sigsAdded.add(mSig);
-
-                                                       StringBuilder sigLine = 
new StringBuilder();
-                                                       
sigLine.append("\n").append(indent).append("public ");
-                                                       if 
(m.getTypeParameters().length > 0)
-                                                               
sigLine.append("<").append(alist(m.getTypeParameters()).stream().map(x -> 
x.getName()).collect(Collectors.joining(", "))).append("> ");
-                                                       
sigLine.append(cName).append(" ").append(mSig).append(" ");
-                                                       if ( 
m.getExceptionTypes().length > 0)
-                                                               
sigLine.append("throws ").append(alist(m.getExceptionTypes()).stream().map(x -> 
x.getSimpleName()).collect(Collectors.joining(", ")));
-                                                       sigLine.append("{");
-                                                       String sigLine2 = 
sigLine.toString();
-
-                                                       sb.append("\n\n");
-
-                                                       // Overridden javadocs
-                                                       String javadoc = 
docs.get(sigLine2);
-                                                       if (javadoc != null) {
-                                                               
sb.append(javadoc);
-                                                       }
-
-                                                       // Line 1
-                                                       sb.append(indent)
-                                                               
.append(m.getAnnotation(Deprecated.class) == null ? "" : "@Deprecated ")
-                                                               
.append("@Override /* GENERATED - ").append(pcc.getCanonicalName()).append(" 
*/")
-                                                       ;
-
-                                                       if (m.isVarArgs()) {
-                                                               Type t = 
m.getParameters()[m.getParameterCount()-1].getParameterizedType();
-                                                               if 
(t.toString().contains(" extends ")) {
-                                                                       
sb.append("\n").append(indent).append("@SuppressWarnings(\"unchecked\")");
-                                                               }
-                                                       }
-
-                                                       // Line 2
-                                                       sb.append(sigLine2);
-
-                                                       // Body
-                                                       
sb.append("\n").append(indent).append("\tsuper.").append(m.getName()).append("(").append(getArgVals(m)).append(");");
-                                                       
sb.append("\n").append(indent).append("\treturn this;");
-                                                       
sb.append("\n").append(indent).append("}");
-
-                                               }
-                                       } else {
-                                               if (! 
ignoreClasses.contains(pc.inner()))
-                                                       
System.err.println("Parent " + pc.inner().getSimpleName() + " not found for 
class " + c.getName());
-                                       }
-                               }
-                       }
-
-                       s = s.substring(0, i1+15) + sb.toString() + 
"\n\n"+indent+"// " + s.substring(i2);
-                       pipe(new StringReader(s), f);
-               }
-
-               System.out.println("DONE");
-       }
-
-       private static boolean hasFluentSetters(File f) {
-               try (BufferedReader br = new BufferedReader(new 
InputStreamReader(new FileInputStream(f)))) {
-                       String line;
-                       while ((line = br.readLine()) != null)
-                               if (line.contains("@FluentSetter") || 
line.contains("<FluentSetter>"))
-                                       return true;
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
-               return false;
-       }
-
-       private static Class<?> toClass(File f) {
-               try {
-                       String n = f.getAbsolutePath();
-                       Class<?> c =  
Class.forName(n.substring(n.indexOf("/src/main/java/")+15).replace(".java","").replace('/','.'));
-                       if (! c.isAnnotationPresent(FluentSetters.class)) {
-                               for (Class<?> c2 : c.getClasses()) {
-                                       if 
(c2.isAnnotationPresent(FluentSetters.class))
-                                               return c2;
-                               }
-                       }
-                       return c;
-               } catch (Throwable e) {
-                       System.err.println("Couldn't find class for file " + 
f.getAbsolutePath());
-                       e.printStackTrace();
-                       return null;
-               }
-       }
-
-       private static String getArgs(Method m) {
-               StringBuilder sb = new StringBuilder();
-               for (Parameter p : m.getParameters()) {
-                       if (sb.length() > 0)
-                               sb.append(", ");
-                       ClassInfo pi = ClassInfo.of(p.getParameterizedType());
-                       if (p.isVarArgs())
-                               
sb.append(pi.getShortName().replace("[]","...").replace('$','.') + p.getName());
-                       else
-                               sb.append(pi.getShortName().replace('$','.') + 
" " + p.getName());
-               }
-               return sb.toString();
-       }
-
-       private static String getArgVals(Method m) {
-               StringBuilder sb = new StringBuilder();
-               for (Parameter p : m.getParameters()) {
-                       if (sb.length() > 0)
-                               sb.append(", ");
-                       sb.append(p.getName());
-               }
-               return sb.toString();
-       }
-
-       private static class MethodComparator implements Comparator<Method> {
-               @Override
-               public int compare(Method m1, Method m2) {
-                       int i = m1.getName().compareTo(m2.getName());
-                       if (i == 0)
-                               i = Integer.compare(m1.getParameterCount(), 
m2.getParameterCount());
-                       if (i == 0 && m1.getParameterCount() > 0)
-                               i = 
m1.getParameterTypes()[0].getName().compareTo(m2.getParameterTypes()[0].getName());
-                       if (i == 0 && m1.getParameterCount() > 1)
-                               i = 
m1.getParameterTypes()[1].getName().compareTo(m2.getParameterTypes()[1].getName());
-                       return i;
-               }
-       }
-}
\ No newline at end of file
diff --git a/juneau-all/src/java/main/FieldSorter.java 
b/juneau-all/src/java/main/FieldSorter.java
deleted file mode 100644
index 72800fbbf6..0000000000
--- a/juneau-all/src/java/main/FieldSorter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.
- */
-import static org.apache.juneau.common.internal.Utils.*;
-
-import java.util.stream.*;
-
-public class FieldSorter {
-
-       public static void main(String[] args) {
-               String in = "properties, p, excludeProperties, x, 
readOnlyProperties, ro, writeOnlyProperties, wo, example, typeName, 
typePropertyName";
-               
System.err.println(alist(in.split("[\\s\\,]+")).stream().sorted().collect(Collectors.joining(",
 ")));
-       }
-}
\ No newline at end of file
diff --git a/juneau-distrib/pom.xml b/juneau-distrib/pom.xml
index 3ed2f01ea6..0ac437353d 100644
--- a/juneau-distrib/pom.xml
+++ b/juneau-distrib/pom.xml
@@ -45,21 +45,37 @@
                                                <configuration>
                                                        <artifactItems>
 
-                                                               <!-- juneau-all 
-->
-                                                               <artifactItem>
-                                                                       
<outputDirectory>${project.build.directory}/src</outputDirectory>
-                                                                       
<groupId>org.apache.juneau</groupId>
-                                                                       
<artifactId>juneau-all</artifactId>
-                                                                       
<version>${project.version}</version>
-                                                                       
<type>jar</type>
-                                                                       
<classifier>sources</classifier>
-                                                               </artifactItem>
-                                                               <artifactItem>
-                                                                       
<outputDirectory>${project.build.directory}/bin</outputDirectory>
-                                                                       
<groupId>org.apache.juneau</groupId>
-                                                                       
<artifactId>juneau-all</artifactId>
-                                                                       
<version>${project.version}</version>
-                                                               </artifactItem>
+                                               <!-- Shaded artifacts -->
+                                               <artifactItem>
+                                                       
<outputDirectory>${project.build.directory}/bin/shaded</outputDirectory>
+                                                       
<groupId>org.apache.juneau</groupId>
+                                                       
<artifactId>juneau-shaded-core</artifactId>
+                                                       
<version>${project.version}</version>
+                                               </artifactItem>
+                                               <artifactItem>
+                                                       
<outputDirectory>${project.build.directory}/bin/shaded</outputDirectory>
+                                                       
<groupId>org.apache.juneau</groupId>
+                                                       
<artifactId>juneau-shaded-rest-client</artifactId>
+                                                       
<version>${project.version}</version>
+                                               </artifactItem>
+                                               <artifactItem>
+                                                       
<outputDirectory>${project.build.directory}/bin/shaded</outputDirectory>
+                                                       
<groupId>org.apache.juneau</groupId>
+                                                       
<artifactId>juneau-shaded-rest-server</artifactId>
+                                                       
<version>${project.version}</version>
+                                               </artifactItem>
+                                               <artifactItem>
+                                                       
<outputDirectory>${project.build.directory}/bin/shaded</outputDirectory>
+                                                       
<groupId>org.apache.juneau</groupId>
+                                                       
<artifactId>juneau-shaded-rest-server-springboot</artifactId>
+                                                       
<version>${project.version}</version>
+                                               </artifactItem>
+                                               <artifactItem>
+                                                       
<outputDirectory>${project.build.directory}/bin/shaded</outputDirectory>
+                                                       
<groupId>org.apache.juneau</groupId>
+                                                       
<artifactId>juneau-shaded-all</artifactId>
+                                                       
<version>${project.version}</version>
+                                               </artifactItem>
 
                                                                <!-- 
juneau-marshall -->
                                                                <artifactItem>
diff --git a/juneau-docs/docs/release-notes/9.2.0.md 
b/juneau-docs/docs/release-notes/9.2.0.md
index 936afed5d7..210d2766a4 100644
--- a/juneau-docs/docs/release-notes/9.2.0.md
+++ b/juneau-docs/docs/release-notes/9.2.0.md
@@ -15,6 +15,7 @@ Juneau 9.2.0 is a minor release focused on enhancements and 
bug fixes.
 
 Major changes include:
 
+- **New Module**: Introduced `juneau-shaded` with five shaded (uber) JAR 
artifacts for simplified dependency management, especially useful for Bazel
 - JSON Schema beans upgraded to Draft 2020-12 specification with backward 
compatibility for Draft 04
 - Comprehensive enhancements to HTML5 beans with improved javadocs and 
`HtmlBuilder` integration
 - Standardized license headers across all Java files
@@ -22,6 +23,7 @@ Major changes include:
 - Removed `final` modifiers from many classes to improve testability with 
Mockito and other mocking frameworks
 - Improved `RestRequest` and `RestResponse` to work cleanly with 
try-with-resources blocks
 - **New Module**: Introduced `juneau-bct` (Bean-Centric Testing) with fluent 
APIs for comprehensive bean testing
+- Deprecated and removed `juneau-all` in favor of `juneau-shaded-all`
 
 ### juneau-dto
 
@@ -241,6 +243,86 @@ void testSwaggerDocument() {
 
 See the module documentation for complete API reference and examples.
 
+### juneau-shaded (NEW MODULE)
+
+#### Shaded Artifacts for Simplified Dependency Management
+
+Introduced a new `juneau-shaded` module that provides five shaded (uber) JAR 
artifacts. These artifacts bundle multiple Juneau modules into single JARs, 
making them ideal for:
+- **Bazel and strict dependency build systems** - Eliminates the need to 
manually declare all transitive Juneau dependencies
+- **Simplified Maven/Gradle projects** - One dependency instead of many
+- **Standalone applications** - Convenient uber JAR deployment
+- **Quick prototyping** - Get started faster with fewer dependency decisions
+
+#### Available Shaded Artifacts
+
+| Artifact | Size | Contents |
+|----------|------|----------|
+| **juneau-shaded-core** | 2.1 MB | Core marshalling and configuration modules 
|
+| **juneau-shaded-rest-client** | 3.8 MB | Core + REST client functionality |
+| **juneau-shaded-rest-server** | 3.8 MB | Core + REST server functionality |
+| **juneau-shaded-rest-server-springboot** | 3.8 MB | REST server + Spring 
Boot integration |
+| **juneau-shaded-all** | 4.0 MB | Complete Juneau framework in one JAR |
+
+#### Maven Usage
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-all</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+#### Bazel Usage
+
+```python
+maven_jar(
+    name = "juneau_all",
+    artifact = "org.apache.juneau:juneau-shaded-all:${juneau.version}",
+)
+
+java_library(
+    name = "my_lib",
+    srcs = ["MyCode.java"],
+    deps = ["@juneau_all//jar"],
+)
+```
+
+#### Key Features
+
+- **Bundles all Juneau modules** - No need to declare transitive Juneau 
dependencies
+- **External dependencies still required** - Apache HttpClient, Jakarta 
Servlet API, etc. must be declared separately
+- **No code changes needed** - All imports and APIs remain the same
+- **Maven Shade Plugin** - Uses industry-standard plugin for creating uber JARs
+- **Service file merging** - Automatically merges `META-INF/services` files
+- **Dependency-reduced POMs** - Shows exactly which external dependencies are 
needed
+
+#### Included in Distribution
+
+All five shaded artifacts are now included in the binary distribution under 
`/shaded/`:
+- `juneau-shaded-core-${version}.jar`
+- `juneau-shaded-rest-client-${version}.jar`
+- `juneau-shaded-rest-server-${version}.jar`
+- `juneau-shaded-rest-server-springboot-${version}.jar`
+- `juneau-shaded-all-${version}.jar`
+
+#### Documentation
+
+- **[Shaded Artifacts Overview](/docs/topics/JuneauShadedOverview)** - 
Complete guide with Bazel examples
+- **[juneau-shaded-core](/docs/topics/JuneauShadedCore)** - Core functionality
+- **[juneau-shaded-rest-client](/docs/topics/JuneauShadedRestClient)** - REST 
client
+- **[juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer)** - REST 
server
+- 
**[juneau-shaded-rest-server-springboot](/docs/topics/JuneauShadedRestServerSpringboot)**
 - Spring Boot
+- **[juneau-shaded-all](/docs/topics/JuneauShadedAll)** - Complete framework
+
+#### Deprecation of juneau-all
+
+The previous `juneau-all` module has been deprecated and removed in favor of 
`juneau-shaded-all`. The shaded version provides the same functionality with 
better support for modern build systems like Bazel.
+
+**Migration:**
+- Replace `juneau-all` with `juneau-shaded-all` in your dependencies
+- No code changes required - all imports remain the same
+
 ### juneau-rest-client
 
 #### RestRequest and RestResponse
@@ -279,6 +361,33 @@ None at this time.
 
 #### Migration Notes
 
+- **juneau-all → juneau-shaded-all**: The `juneau-all` module has been 
removed. Update your dependencies:
+  
+  **Before:**
+  ```xml
+  <dependency>
+      <groupId>org.apache.juneau</groupId>
+      <artifactId>juneau-all</artifactId>
+      <version>${juneau.version}</version>
+  </dependency>
+  ```
+  
+  **After:**
+  ```xml
+  <dependency>
+      <groupId>org.apache.juneau</groupId>
+      <artifactId>juneau-shaded-all</artifactId>
+      <version>${juneau.version}</version>
+  </dependency>
+  ```
+  
+  No code changes are required - all imports and APIs remain the same.
+  
+  Alternatively, consider using a more specific shaded artifact if you don't 
need the full framework:
+  - `juneau-shaded-core` - For marshalling/config only (2.1 MB)
+  - `juneau-shaded-rest-client` - For REST client work (3.8 MB)
+  - `juneau-shaded-rest-server` - For REST server work (3.8 MB)
+
 - **JsonSchema**: Code using `JsonSchema` beans will continue to work without 
changes. For Draft 2020-12 features:
   - Use `$id` instead of `id` for new schemas
   - Use `$defs` instead of `definitions` for new schemas
diff --git a/juneau-docs/docs/topics/01.01.00.JuneauEcosystemOverview.md 
b/juneau-docs/docs/topics/01.01.00.JuneauEcosystemOverview.md
index cc59cdb3a5..eef3456941 100644
--- a/juneau-docs/docs/topics/01.01.00.JuneauEcosystemOverview.md
+++ b/juneau-docs/docs/topics/01.01.00.JuneauEcosystemOverview.md
@@ -30,7 +30,11 @@ The Juneau ecosystem consists of the following parts:
 | | [juneau‑microservice‑jetty](/docs/topics/JuneauMicroserviceJettyBasics) | 
Jetty-based microservice implementation | • Jetty 9.4+ |
 | **juneau-petstore** | [juneau‑petstore](/docs/topics/JuneauPetstoreBasics) | 
Complete REST application example | • Spring Boot 2.0+ |
 | **juneau-examples** | 
[juneau‑examples‑core](/docs/topics/JuneauExamplesCore)<br/>[juneau‑examples‑rest](/docs/topics/JuneauExamplesRest)<br/>[juneau‑examples‑rest‑jetty](/docs/topics/JuneauExamplesRestJetty)<br/>[juneau‑examples‑rest‑springboot](/docs/topics/JuneauExamplesRestSpringboot)
 | Code examples and tutorials | |
-| **juneau‑all** | [juneau‑all](/docs/topics/JuneauAllBasics) | Convenience 
dependency combining all core Juneau modules | • Servlet 3.1+<br/>• Apache 
HttpClient 4.5+ |
+| **juneau-shaded** | [juneau‑shaded‑core](/docs/topics/JuneauAllBasics) | 
Core marshalling and configuration in one JAR (2.1 MB) | • *None* |
+| | [juneau‑shaded‑rest‑client](/docs/topics/JuneauAllBasics) | Core + REST 
client functionality (3.8 MB) | • Apache HttpClient 5.x |
+| | [juneau‑shaded‑rest‑server](/docs/topics/JuneauAllBasics) | Core + REST 
server functionality (3.8 MB) | • Servlet API 6.1+ |
+| | [juneau‑shaded‑rest‑server‑springboot](/docs/topics/JuneauAllBasics) | 
REST server + Spring Boot integration (3.8 MB) | • Spring Boot 3.x |
+| | [juneau‑shaded‑all](/docs/topics/JuneauAllBasics) | Complete framework in 
one JAR (4.0 MB)<br/>*Ideal for Bazel and simplified dependency management* | • 
Servlet API 6.1+<br/>• Apache HttpClient 5.x |
 
 The current version of Juneau is `9.1.0`.
 
@@ -39,11 +43,22 @@ The easiest way to pull in the library is through the 
following maven dependency
 ```xml
 <dependency>
     <groupId>org.apache.juneau</groupId>
-    <artifactId>juneau‑all</artifactId>
+    <artifactId>juneau‑shaded‑all</artifactId>
     <version>${juneau.version}</version>
 </dependency>
 ```
 
+Or for Bazel:
+
+```python
+maven_jar(
+    name = "juneau_all",
+    artifact = "org.apache.juneau:juneau-shaded-all:${juneau.version}",
+)
+```
+
+For more specific use cases, consider using one of the other shaded artifacts 
listed above, or individual modules from `juneau-core` and `juneau-rest`.
+
 If you would like to work with the bleeding-edge code, you can access the 
`9.2.0-SNAPSHOT` version through the 
 following repository:
 
diff --git a/juneau-docs/docs/topics/19.01.00.JuneauAllBasics.md 
b/juneau-docs/docs/topics/19.01.00.JuneauAllBasics.md
deleted file mode 100644
index e8d7d8c76b..0000000000
--- a/juneau-docs/docs/topics/19.01.00.JuneauAllBasics.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: "juneau-all"
-slug: JuneauAllBasics
----
-
-The `juneau-all` artifact is a convenience dependency that includes all the 
core Juneau modules in a single JAR file. This makes it easy to get started 
with Juneau by adding just one dependency to your project.
-
-## What's Included
-
-The `juneau-all` artifact combines the following modules:
-
-- **[juneau-marshall](/docs/topics/JuneauMarshallBasics)** - Serializers and 
parsers for JSON, XML, HTML, URL-Encoding, UON, OpenAPI, PlainText, CSV, SOAP, 
and MessagePack
-- **[juneau-bean-atom](/docs/topics/JuneauBeanAtom)** - ATOM Data Transfer 
Object Beans
-- **[juneau-bean-common](/docs/topics/JuneauBeanCommon)** - Common Data 
Transfer Object Beans
-- **[juneau-bean-html5](/docs/topics/JuneauBeanHtml5)** - HTML5 Data Transfer 
Object Beans
-- **[juneau-bean-jsonschema](/docs/topics/JuneauBeanJsonSchema)** - JSON 
Schema Data Transfer Object Beans
-- **[juneau-bean-openapi-v3](/docs/topics/JuneauBeanOpenApi3)** - OpenAPI 3 
Data Transfer Object Beans
-- **[juneau-config](/docs/topics/JuneauConfigBasics)** - Configuration File API
-- **[juneau-assertions](/docs/topics/JuneauAssertionBasics)** - Fluent-style 
assertions API
-- **[juneau-bct](/docs/topics/JuneauBctBasics)** - Bean-Centric Testing 
framework
-- **[juneau-rest-common](/docs/topics/JuneauRestCommonBasics)** - REST APIs 
common to client and server side
-- **[juneau-rest-server](/docs/topics/JuneauRestServerBasics)** - REST Servlet 
API
-- **[juneau-rest-client](/docs/topics/JuneauRestClientBasics)** - REST Client 
API
-
-## Maven Dependency
-
-To use `juneau-all`, add the following dependency to your `pom.xml`:
-
-```xml
-<dependency>
-    <groupId>org.apache.juneau</groupId>
-    <artifactId>juneau-all</artifactId>
-    <version>${juneau.version}</version>
-</dependency>
-```
-
-## When to Use juneau-all
-
-Use `juneau-all` when you want to:
-
-- **Get started quickly** - Add one dependency and have access to all Juneau 
functionality
-- **Build a complete application** - You need marshalling, REST server, and 
REST client capabilities
-- **Simplify dependency management** - Avoid managing multiple individual 
Juneau dependencies
-
-## When NOT to Use juneau-all
-
-Consider using individual modules instead when you:
-
-- **Want minimal dependencies** - Your application only needs specific Juneau 
functionality
-- **Have size constraints** - The `juneau-all` JAR is larger than individual 
modules
-- **Need specific versions** - You want to use different versions of 
individual modules
-
-## Prerequisites
-
-- **Servlet 3.1+** (for REST server functionality)
-- **Apache HttpClient 4.5+** (for REST client functionality)
-
-## Next Steps
-
-- **[Getting Started Guide](/docs/topics/JuneauEcosystemOverview)** - Learn 
how to get started with Juneau
-- **[REST Server Basics](/docs/topics/JuneauRestServerBasics)** - Learn how to 
create REST APIs
-- **[REST Client Basics](/docs/topics/JuneauRestClientBasics)** - Learn how to 
consume REST APIs
-- **[Marshalling Basics](/docs/topics/JuneauMarshallBasics)** - Learn how to 
serialize and parse objects
diff --git a/juneau-docs/docs/topics/19.01.00.JuneauShadedOverview.md 
b/juneau-docs/docs/topics/19.01.00.JuneauShadedOverview.md
new file mode 100644
index 0000000000..e308ab42ab
--- /dev/null
+++ b/juneau-docs/docs/topics/19.01.00.JuneauShadedOverview.md
@@ -0,0 +1,466 @@
+---
+title: "Juneau Shaded Artifacts"
+slug: JuneauShadedOverview
+---
+
+Juneau provides **shaded (uber) JAR artifacts** that bundle multiple Juneau 
modules into single JAR files. These artifacts simplify dependency management 
and are especially useful for build systems like Bazel that require explicit 
dependency declarations.
+
+## What Are Shaded Artifacts?
+
+Shaded artifacts use the [Maven Shade 
Plugin](https://maven.apache.org/plugins/maven-shade-plugin/) to:
+- Bundle multiple Juneau modules into a single JAR
+- Merge service provider files automatically
+- Eliminate the need to declare transitive Juneau dependencies
+- Maintain all original functionality without modification
+
+**Important**: Shaded artifacts only bundle Juneau modules. External 
dependencies (like Apache HttpClient, Jakarta Servlet API, etc.) must still be 
declared separately.
+
+## Available Shaded Artifacts
+
+| Artifact | Size | Description | Details |
+|----------|------|-------------|---------|
+| [juneau-shaded-core](/docs/topics/JuneauShadedCore) | 2.1 MB | Core 
marshalling and configuration functionality | [Learn more 
→](/docs/topics/JuneauShadedCore) |
+| [juneau-shaded-rest-client](/docs/topics/JuneauShadedRestClient) | 3.8 MB | 
Core + REST client functionality | [Learn more 
→](/docs/topics/JuneauShadedRestClient) |
+| [juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer) | 3.8 MB | 
Core + REST server functionality | [Learn more 
→](/docs/topics/JuneauShadedRestServer) |
+| 
[juneau-shaded-rest-server-springboot](/docs/topics/JuneauShadedRestServerSpringboot)
 | 3.8 MB | REST server + Spring Boot integration | [Learn more 
→](/docs/topics/JuneauShadedRestServerSpringboot) |
+| [juneau-shaded-all](/docs/topics/JuneauShadedAll) | 4.0 MB | Complete Juneau 
framework in one JAR | [Learn more →](/docs/topics/JuneauShadedAll) |
+
+## When to Use Shaded Artifacts
+
+### ✅ Use Shaded Artifacts When:
+
+- **Using Bazel or similar build systems** - These require explicit dependency 
declarations; shaded artifacts simplify this significantly
+- **Wanting simplified dependency management** - One dependency instead of many
+- **Building standalone applications** - Uber JARs are convenient for 
deployment
+- **Getting started quickly** - Fewer decisions about which modules to include
+
+### ❌ Consider Individual Modules When:
+
+- **Building a library** - Other projects may need fine-grained control over 
dependencies
+- **Minimizing JAR size** - Individual modules allow excluding unused 
functionality
+- **Avoiding classpath conflicts** - In complex applications with many 
dependencies
+- **Needing different module versions** - Though this is rarely necessary
+
+## Quick Start
+
+### Maven
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-all</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+### Bazel
+
+```python
+maven_jar(
+    name = "juneau_all",
+    artifact = "org.apache.juneau:juneau-shaded-all:${juneau.version}",
+)
+```
+
+## Why Shaded Artifacts for Bazel?
+
+Bazel enforces **strict dependency management** where you must explicitly 
declare every direct dependency your code uses. Unlike Maven, which 
automatically resolves transitive dependencies, Bazel requires you to know and 
declare all dependencies.
+
+### The Problem with Regular Juneau in Bazel
+
+When using regular Juneau modules in Bazel:
+
+```python
+# This is incomplete and will fail!
+maven_jar(
+    name = "juneau_marshall",
+    artifact = "org.apache.juneau:juneau-marshall:9.2.0-SNAPSHOT",
+)
+
+java_library(
+    name = "my_lib",
+    srcs = ["MyCode.java"],
+    deps = ["@juneau_marshall//jar"],  # Missing juneau-common!
+)
+```
+
+**Problem**: Your code can't compile because `juneau-marshall` depends on 
`juneau-common`, but you didn't declare it.
+
+### Solution with Shaded Artifacts
+
+Just one dependency declaration!
+
+```python
+maven_jar(
+    name = "juneau_core",
+    artifact = "org.apache.juneau:juneau-shaded-core:9.2.0-SNAPSHOT",
+)
+
+java_library(
+    name = "my_lib",
+    srcs = ["MyCode.java"],
+    deps = ["@juneau_core//jar"],  # Everything included!
+)
+```
+
+## Complete Bazel Examples
+
+### Example 1: REST Client
+
+**Scenario**: Build a REST client application.
+
+**WORKSPACE**:
+```python
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+# Add Maven dependencies
+maven_jar(
+    name = "juneau_rest_client",
+    artifact = "org.apache.juneau:juneau-shaded-rest-client:9.2.0-SNAPSHOT",
+    repository = 
"https://repository.apache.org/content/repositories/snapshots/";,
+)
+
+# External dependencies (still need these)
+maven_jar(
+    name = "httpclient5",
+    artifact = "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+)
+
+maven_jar(
+    name = "httpcore5",
+    artifact = "org.apache.httpcomponents.core5:httpcore5:5.2.1",
+)
+```
+
+**BUILD**:
+```python
+java_binary(
+    name = "my_rest_client",
+    srcs = ["MyRestClient.java"],
+    deps = [
+        "@juneau_rest_client//jar",
+        "@httpclient5//jar",
+        "@httpcore5//jar",
+    ],
+    main_class = "com.example.MyRestClient",
+)
+```
+
+### Example 2: REST Server
+
+**Scenario**: Build a REST server application.
+
+**WORKSPACE**:
+```python
+maven_jar(
+    name = "juneau_rest_server",
+    artifact = "org.apache.juneau:juneau-shaded-rest-server:9.2.0-SNAPSHOT",
+    repository = 
"https://repository.apache.org/content/repositories/snapshots/";,
+)
+
+maven_jar(
+    name = "jakarta_servlet_api",
+    artifact = "jakarta.servlet:jakarta.servlet-api:6.1.0",
+)
+
+maven_jar(
+    name = "jetty_server",
+    artifact = "org.eclipse.jetty:jetty-server:12.0.5",
+)
+```
+
+**BUILD**:
+```python
+java_library(
+    name = "my_rest_server",
+    srcs = ["MyRestServer.java"],
+    deps = [
+        "@juneau_rest_server//jar",
+        "@jakarta_servlet_api//jar",
+        "@jetty_server//jar",
+    ],
+)
+```
+
+### Example 3: Spring Boot Integration
+
+**Scenario**: Build a Spring Boot + Juneau application.
+
+**WORKSPACE**:
+```python
+maven_jar(
+    name = "juneau_rest_server_springboot",
+    artifact = 
"org.apache.juneau:juneau-shaded-rest-server-springboot:9.2.0-SNAPSHOT",
+    repository = 
"https://repository.apache.org/content/repositories/snapshots/";,
+)
+
+maven_jar(
+    name = "spring_boot_starter_web",
+    artifact = "org.springframework.boot:spring-boot-starter-web:3.2.0",
+)
+```
+
+**BUILD**:
+```python
+java_library(
+    name = "my_spring_app",
+    srcs = glob(["src/**/*.java"]),
+    deps = [
+        "@juneau_rest_server_springboot//jar",
+        "@spring_boot_starter_web//jar",
+    ],
+)
+```
+
+### Example 4: Core Marshalling Only
+
+**Scenario**: Use Juneau for JSON/XML/etc. serialization without REST features.
+
+**WORKSPACE**:
+```python
+maven_jar(
+    name = "juneau_core",
+    artifact = "org.apache.juneau:juneau-shaded-core:9.2.0-SNAPSHOT",
+    repository = 
"https://repository.apache.org/content/repositories/snapshots/";,
+)
+
+# Optional: For RDF support
+maven_jar(
+    name = "jena_core",
+    artifact = "org.apache.jena:jena-core:4.10.0",
+)
+```
+
+**BUILD**:
+```python
+java_library(
+    name = "my_serialization_lib",
+    srcs = ["MySerializer.java"],
+    deps = [
+        "@juneau_core//jar",
+        "@jena_core//jar",  # Only if using RDF
+    ],
+)
+```
+
+### Example 5: Everything (Complete Framework)
+
+**Scenario**: You want access to all Juneau features.
+
+**WORKSPACE**:
+```python
+maven_jar(
+    name = "juneau_all",
+    artifact = "org.apache.juneau:juneau-shaded-all:9.2.0-SNAPSHOT",
+    repository = 
"https://repository.apache.org/content/repositories/snapshots/";,
+)
+
+# Still need external dependencies
+maven_jar(
+    name = "jakarta_servlet_api",
+    artifact = "jakarta.servlet:jakarta.servlet-api:6.1.0",
+)
+
+maven_jar(
+    name = "httpclient5",
+    artifact = "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+)
+```
+
+**BUILD**:
+```python
+java_library(
+    name = "my_full_app",
+    srcs = glob(["src/**/*.java"]),
+    deps = [
+        "@juneau_all//jar",
+        "@jakarta_servlet_api//jar",
+        "@httpclient5//jar",
+    ],
+)
+```
+
+## Finding External Dependencies
+
+Shaded JARs **only bundle Juneau modules**. External dependencies (like Apache 
HttpClient, Jakarta Servlet API, etc.) must still be declared separately.
+
+### Method 1: Check the dependency-reduced-pom.xml
+
+After building a shaded module, examine:
+```bash
+cat juneau-shaded/juneau-shaded-rest-client/dependency-reduced-pom.xml
+```
+
+This file lists all external dependencies that the shaded JAR still requires.
+
+### Method 2: Use Maven dependency:tree
+
+```bash
+cd juneau-shaded/juneau-shaded-rest-client
+mvn dependency:tree
+```
+
+### Method 3: Common External Dependencies
+
+Here's a quick reference:
+
+| Juneau Shaded Artifact | Common External Dependencies |
+|------------------------|------------------------------|
+| `juneau-shaded-core` | `jakarta.xml.bind-api`, `jena-core` (for RDF) |
+| `juneau-shaded-rest-client` | `httpclient5`, `httpcore5`, 
`jakarta.servlet-api` |
+| `juneau-shaded-rest-server` | `jakarta.servlet-api`, `jetty-server` |
+| `juneau-shaded-rest-server-springboot` | `spring-boot-starter-web`, 
`jakarta.servlet-api` |
+| `juneau-shaded-all` | All of the above |
+
+## Advanced: Using rules_jvm_external
+
+For more sophisticated Bazel builds, use `rules_jvm_external`:
+
+**WORKSPACE**:
+```python
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+RULES_JVM_EXTERNAL_TAG = "5.3"
+RULES_JVM_EXTERNAL_SHA = 
"d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"
+
+http_archive(
+    name = "rules_jvm_external",
+    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
+    sha256 = RULES_JVM_EXTERNAL_SHA,
+    url = 
"https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz";
 % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG),
+)
+
+load("@rules_jvm_external//:defs.bzl", "maven_install")
+
+maven_install(
+    artifacts = [
+        "org.apache.juneau:juneau-shaded-rest-client:9.2.0-SNAPSHOT",
+        "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+        "org.apache.httpcomponents.core5:httpcore5:5.2.1",
+    ],
+    repositories = [
+        "https://repository.apache.org/content/repositories/snapshots/";,
+        "https://repo1.maven.org/maven2";,
+    ],
+    fetch_sources = True,
+)
+```
+
+**BUILD**:
+```python
+java_binary(
+    name = "my_app",
+    srcs = ["MyApp.java"],
+    deps = [
+        "@maven//:org_apache_juneau_juneau_shaded_rest_client",
+        "@maven//:org_apache_httpcomponents_client5_httpclient5",
+        "@maven//:org_apache_httpcomponents_core5_httpcore5",
+    ],
+    main_class = "com.example.MyApp",
+)
+```
+
+## Bazel Troubleshooting
+
+### Build fails with "package X does not exist"
+
+**Cause**: You're missing an external dependency.
+
+**Solution**: Check the `dependency-reduced-pom.xml` for the shaded module and 
add the missing dependency to your WORKSPACE.
+
+### Conflicting versions of dependencies
+
+**Cause**: Multiple artifacts depend on different versions of the same library.
+
+**Solution**: Use `rules_jvm_external` with version resolution:
+
+```python
+maven_install(
+    artifacts = [
+        "org.apache.juneau:juneau-shaded-rest-client:9.2.0-SNAPSHOT",
+        "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+    ],
+    version_conflict_policy = "pinned",  # Use specific versions
+)
+```
+
+### Shaded JAR is too large
+
+**Cause**: You're using `juneau-shaded-all` when you only need a subset.
+
+**Solution**: Use a more specific shaded artifact:
+- For client only: `juneau-shaded-rest-client`
+- For server only: `juneau-shaded-rest-server`
+- For core only: `juneau-shaded-core`
+
+## Bazel Best Practices
+
+1. **Start with the smallest shaded artifact** that meets your needs
+2. **Always check `dependency-reduced-pom.xml`** for external dependencies
+3. **Use `rules_jvm_external`** for production Bazel builds
+4. **Pin dependency versions** to ensure reproducible builds
+5. **Document external dependencies** in your project's README
+
+## Performance Considerations
+
+### Build Time
+- **Shaded JARs**: Faster builds due to fewer dependency declarations
+- **Individual Modules**: More explicit control but slower due to transitive 
resolution
+
+### Runtime
+- No runtime difference between shaded and non-shaded artifacts
+- Same classes, same performance characteristics
+
+### JAR Size
+- Shaded JARs are larger but self-contained
+- For microservices, this is usually acceptable
+- For libraries, consider using individual modules
+
+## Architecture
+
+The shaded modules form a dependency hierarchy:
+
+```
+juneau-shaded-core (2.1 MB)
+    ↓
+    ├─→ juneau-shaded-rest-client (3.8 MB)
+    │
+    └─→ juneau-shaded-rest-server (3.8 MB)
+            ↓
+            └─→ juneau-shaded-rest-server-springboot (3.8 MB)
+
+juneau-shaded-all (4.0 MB)
+    = juneau-shaded-rest-server-springboot
+    + juneau-rest-client
+    + all bean modules
+    + all microservice modules
+```
+
+## Distribution
+
+All shaded artifacts are included in the binary distribution under the 
`/shaded` directory:
+
+```
+apache-juneau-${version}-bin.zip
+└── shaded/
+    ├── juneau-shaded-core-${version}.jar
+    ├── juneau-shaded-rest-client-${version}.jar
+    ├── juneau-shaded-rest-server-${version}.jar
+    ├── juneau-shaded-rest-server-springboot-${version}.jar
+    └── juneau-shaded-all-${version}.jar
+```
+
+## Learn More
+
+### Individual Shaded Artifacts
+- **[Juneau Shaded Core](/docs/topics/JuneauShadedCore)** - Core marshalling 
and configuration
+- **[Juneau Shaded REST Client](/docs/topics/JuneauShadedRestClient)** - REST 
client development
+- **[Juneau Shaded REST Server](/docs/topics/JuneauShadedRestServer)** - REST 
server development
+- **[Juneau Shaded REST Server Spring 
Boot](/docs/topics/JuneauShadedRestServerSpringboot)** - Spring Boot integration
+- **[Juneau Shaded All](/docs/topics/JuneauShadedAll)** - Complete framework
+
+### Additional Resources
+- **[Shaded Module README](/juneau-shaded/README.md)** - Complete technical 
documentation
+- **[Juneau Documentation](https://juneau.apache.org)** - Official Juneau docs
+- **[Bazel Documentation](https://bazel.build)** - Learn more about Bazel
+- **[Apache Juneau Mailing List](mailto:[email protected])** - Get help 
from the community
diff --git a/juneau-docs/docs/topics/19.02.00.JuneauShadedCore.md 
b/juneau-docs/docs/topics/19.02.00.JuneauShadedCore.md
new file mode 100644
index 0000000000..53e0e01427
--- /dev/null
+++ b/juneau-docs/docs/topics/19.02.00.JuneauShadedCore.md
@@ -0,0 +1,196 @@
+---
+title: "juneau-shaded-core"
+slug: JuneauShadedCore
+---
+
+The `juneau-shaded-core` artifact bundles all core Juneau modules for general 
marshalling and configuration work. At 2.1 MB, it's the smallest shaded 
artifact and ideal for applications that don't need REST functionality.
+
+## What's Included
+
+This artifact includes the following Juneau modules:
+
+- **juneau-common** - Core utilities and common classes
+- **juneau-assertions** - Fluent-style assertions API
+- **juneau-bct** - Bean-Centric Testing framework
+- **juneau-config** - Configuration file API
+- **juneau-marshall** - Serializers and parsers (JSON, XML, HTML, MessagePack, 
etc.)
+- **juneau-marshall-rdf** - RDF serializers and parsers
+
+### Serialization Formats Supported
+
+- **JSON** - Multiple flavors (standard, simplified, lax)
+- **XML** - Standard and namespaced XML
+- **HTML** - HTML5 and table-based serialization
+- **RDF** - RDF/XML, N3, N-Triple, Turtle
+- **URL-Encoding** - URL-encoded form data
+- **UON** - URL-Encoded Object Notation
+- **OpenAPI** - OpenAPI-style serialization
+- **MessagePack** - Binary serialization
+- **PlainText** - Simple text serialization
+- **CSV** - Comma-separated values
+- **SOAP/XML** - SOAP-style XML
+
+## Use Cases
+
+Use `juneau-shaded-core` when you need:
+
+- **Serialization/Deserialization** - Convert POJOs to/from various formats
+- **Configuration Management** - Use the Config API for application settings
+- **Testing** - Use the assertion and BCT frameworks for unit tests
+- **Data Transformation** - Convert between different data formats
+- **No REST APIs** - You don't need REST client or server functionality
+
+## Maven Dependency
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-core</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Bazel Dependency
+
+```python
+maven_jar(
+    name = "juneau_core",
+    artifact = "org.apache.juneau:juneau-shaded-core:${juneau.version}",
+)
+
+# Add to your java_library or java_binary
+java_library(
+    name = "my_lib",
+    srcs = ["MyCode.java"],
+    deps = ["@juneau_core//jar"],
+)
+```
+
+## External Dependencies
+
+`juneau-shaded-core` requires the following external dependencies:
+
+### Required
+- **Jakarta XML Bind API 3.0+** - For XML serialization support
+
+### Optional (for RDF support)
+- **Apache Jena Core 2.7.1+** - RDF parsing and serialization
+- **Apache Jena IRI 0.9.4+** - IRI validation
+- **Xerces 2.10.0+** - XML parsing
+- **SLF4J 1.6.4+** - Logging (used by Jena)
+
+If you don't need RDF support, you can exclude the RDF-related classes or 
simply not use them.
+
+## Example Usage
+
+### Basic Serialization
+
+```java
+import org.apache.juneau.json.*;
+import org.apache.juneau.xml.*;
+
+public class SerializationExample {
+    public static void main(String[] args) throws Exception {
+        Person person = new Person("John Smith", 42);
+        
+        // Serialize to JSON
+        String json = Json.of(person);
+        System.out.println(json);
+        // Output: {name:"John Smith",age:42}
+        
+        // Serialize to XML
+        String xml = Xml.of(person);
+        System.out.println(xml);
+        // Output: <object><name>John Smith</name><age>42</age></object>
+        
+        // Parse back from JSON
+        Person p2 = Json.to(json, Person.class);
+    }
+}
+```
+
+### Configuration Management
+
+```java
+import org.apache.juneau.config.*;
+
+public class ConfigExample {
+    public static void main(String[] args) throws Exception {
+        Config config = Config.create("myapp.cfg").build();
+        
+        // Get values with defaults
+        String host = config.get("Server/host").orElse("localhost");
+        int port = config.get("Server/port").asInteger().orElse(8080);
+        
+        // Set values
+        config.set("Server/host", "example.com");
+        config.commit();
+    }
+}
+```
+
+### Bean-Centric Testing
+
+```java
+import static org.apache.juneau.junit.bct.BctAssertions.*;
+
+public class BctExample {
+    @Test
+    public void testPerson() {
+        Person person = new Person("John", 42);
+        
+        assertBean(person)
+            .is("name", "John")
+            .is("age", 42);
+            
+        assertBean(person).asJson()
+            .is("{name:'John',age:42}");
+    }
+}
+```
+
+## Performance Characteristics
+
+- **Serialization**: Fast, memory-efficient
+- **Parsing**: Safe from deserialization attacks
+- **JAR Size**: 2.1 MB (smallest shaded artifact)
+- **Startup Time**: Minimal - no classpath scanning or code generation
+
+## Migration from Individual Modules
+
+If you're currently using individual core modules:
+
+**Before:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-marshall</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-config</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<!-- ... more dependencies -->
+```
+
+**After:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-core</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+All imports and API usage remain exactly the same!
+
+## Next Steps
+
+- **Need REST client functionality?** Use 
[juneau-shaded-rest-client](/docs/topics/JuneauShadedRestClient)
+- **Need REST server functionality?** Use 
[juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer)
+- **Need everything?** Use [juneau-shaded-all](/docs/topics/JuneauShadedAll)
+- **Learn about marshalling:** See [Marshalling 
Basics](/docs/topics/JuneauMarshallBasics)
+- **Learn about configuration:** See [Config 
Basics](/docs/topics/JuneauConfigBasics)
+
diff --git a/juneau-docs/docs/topics/19.03.00.JuneauShadedRestClient.md 
b/juneau-docs/docs/topics/19.03.00.JuneauShadedRestClient.md
new file mode 100644
index 0000000000..a9088ec408
--- /dev/null
+++ b/juneau-docs/docs/topics/19.03.00.JuneauShadedRestClient.md
@@ -0,0 +1,283 @@
+---
+title: "juneau-shaded-rest-client"
+slug: JuneauShadedRestClient
+---
+
+The `juneau-shaded-rest-client` artifact bundles all core Juneau modules plus 
REST client functionality. At 3.8 MB, it provides everything needed for 
building REST client applications.
+
+## What's Included
+
+This artifact includes:
+
+- **All modules from [juneau-shaded-core](/docs/topics/JuneauShadedCore)** 
(marshalling, config, testing)
+- **juneau-rest-common** - REST APIs common to client and server
+- **juneau-rest-client** - Full-featured REST client API
+- **juneau-rest-mock** - REST testing utilities
+
+## Use Cases
+
+Use `juneau-shaded-rest-client` when you need:
+
+- **REST API consumption** - Call external REST services
+- **Type-safe clients** - Use remote interfaces and proxies
+- **Advanced HTTP features** - Interceptors, authentication, retries
+- **Serialization flexibility** - Automatic content negotiation
+- **Testing REST endpoints** - Use the mock REST framework
+
+## Maven Dependency
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-client</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Bazel Dependency
+
+```python
+maven_jar(
+    name = "juneau_rest_client",
+    artifact = "org.apache.juneau:juneau-shaded-rest-client:${juneau.version}",
+)
+
+# External dependencies
+maven_jar(
+    name = "httpclient5",
+    artifact = "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+)
+
+maven_jar(
+    name = "httpcore5",
+    artifact = "org.apache.httpcomponents.core5:httpcore5:5.2.1",
+)
+
+java_binary(
+    name = "my_client",
+    srcs = ["MyClient.java"],
+    deps = [
+        "@juneau_rest_client//jar",
+        "@httpclient5//jar",
+        "@httpcore5//jar",
+    ],
+)
+```
+
+## External Dependencies
+
+`juneau-shaded-rest-client` requires:
+
+### Required
+- **Apache HttpClient 5.2+** - HTTP client implementation
+- **Apache HttpCore 5.2+** - HTTP core functionality
+
+### Optional
+- **Jakarta XML Bind API 3.0+** - For XML serialization
+- **Apache Jena** - For RDF support
+
+## Example Usage
+
+### Basic REST Call
+
+```java
+import org.apache.juneau.rest.client.*;
+
+public class RestClientExample {
+    public static void main(String[] args) {
+        try (RestClient client = RestClient.create().build()) {
+            // GET request
+            Person person = client.get("http://api.example.com/person/1";)
+                .run()
+                .getContent().as(Person.class);
+            
+            System.out.println(person.getName());
+        }
+    }
+}
+```
+
+### POST with JSON
+
+```java
+try (RestClient client = RestClient.create().json().build()) {
+    Person newPerson = new Person("John Smith", 42);
+    
+    // POST JSON
+    Person created = client.post("http://api.example.com/person";)
+        .content(newPerson)
+        .run()
+        .getContent().as(Person.class);
+    
+    System.out.println("Created: " + created.getId());
+}
+```
+
+### Remote Proxies
+
+```java
+// Define interface
+@Remote(path="/petstore")
+public interface PetStore {
+    @RemoteGet("/pet/{petId}")
+    Pet getPet(@Path("petId") long id);
+    
+    @RemotePost("/pet")
+    Pet createPet(@Content Pet pet);
+}
+
+// Use it
+try (RestClient client = RestClient.create().build()) {
+    PetStore store = client.getRemote(PetStore.class);
+    
+    Pet pet = store.getPet(123);
+    System.out.println(pet.getName());
+}
+```
+
+### Try-With-Resources Pattern
+
+```java
+RestClient client = RestClient.create().build();
+
+try (RestRequest req = client.get("/api/data")) {
+    String response = req.run().getContent().asString();
+    System.out.println(response);
+} // Request and response are automatically closed
+```
+
+### Authentication
+
+```java
+// Basic authentication
+RestClient client = RestClient.create()
+    .basicAuth("user", "password")
+    .build();
+
+// Bearer token
+RestClient client = RestClient.create()
+    .headerData("Authorization", "Bearer " + token)
+    .build();
+
+// OAuth2
+RestClient client = RestClient.create()
+    .oauth2Bearer(tokenSupplier)
+    .build();
+```
+
+### Interceptors
+
+```java
+RestClient client = RestClient.create()
+    .interceptors(
+        // Log requests
+        (req) -> System.out.println("Calling: " + req.getUri()),
+        
+        // Add custom headers
+        (req) -> req.header("X-Custom", "value"),
+        
+        // Retry logic
+        RetryInterceptor.create().maxAttempts(3).build()
+    )
+    .build();
+```
+
+### Mock Testing
+
+```java
+import org.apache.juneau.rest.mock.*;
+
+@Test
+public void testRestClient() throws Exception {
+    MockRestClient client = MockRestClient.create(MyRestApi.class).build();
+    
+    // Call the mocked API
+    String response = client.get("/test")
+        .run()
+        .getContent().asString();
+    
+    assertEquals("expected", response);
+}
+```
+
+## Features
+
+### Content Negotiation
+Automatic serialization/deserialization based on `Accept` and `Content-Type` 
headers:
+
+```java
+// Request JSON, get POJO
+Person person = client.get("/person/1")
+    .accept("application/json")
+    .run()
+    .getContent().as(Person.class);
+```
+
+### Error Handling
+
+```java
+try (RestClient client = RestClient.create().build()) {
+    String response = client.get("/api/data")
+        .run()
+        .assertStatus().is(200)  // Assert successful
+        .getContent().asString();
+} catch (RestCallException e) {
+    System.err.println("HTTP " + e.getResponseCode());
+    System.err.println(e.getResponseMessage());
+}
+```
+
+### Request/Response Assertions
+
+```java
+client.get("/api/data")
+    .run()
+    .assertStatus().is(200)
+    .assertHeader("Content-Type").is("application/json")
+    .assertContent().contains("expected");
+```
+
+## Performance Characteristics
+
+- **Connection Pooling**: Built-in via Apache HttpClient
+- **Keep-Alive**: Automatic connection reuse
+- **Streaming**: Efficient memory usage for large responses
+- **Async Support**: Non-blocking operations available
+
+## Migration from Individual Modules
+
+**Before:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-marshall</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-client</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-common</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+**After:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-client</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Next Steps
+
+- **Need server functionality too?** Use 
[juneau-shaded-all](/docs/topics/JuneauShadedAll)
+- **Learn about REST client:** See [REST Client 
Basics](/docs/topics/JuneauRestClientBasics)
+- **Learn about remote proxies:** See [Remote 
Proxies](/docs/topics/RemoteProxies)
+- **Learn about marshalling:** See [Marshalling 
Basics](/docs/topics/JuneauMarshallBasics)
+
diff --git a/juneau-docs/docs/topics/19.04.00.JuneauShadedRestServer.md 
b/juneau-docs/docs/topics/19.04.00.JuneauShadedRestServer.md
new file mode 100644
index 0000000000..61b35ae75c
--- /dev/null
+++ b/juneau-docs/docs/topics/19.04.00.JuneauShadedRestServer.md
@@ -0,0 +1,388 @@
+---
+title: "juneau-shaded-rest-server"
+slug: JuneauShadedRestServer
+---
+
+The `juneau-shaded-rest-server` artifact bundles all core Juneau modules plus 
REST server functionality. At 3.8 MB, it provides everything needed for 
building REST server applications.
+
+## What's Included
+
+This artifact includes:
+
+- **All modules from [juneau-shaded-core](/docs/topics/JuneauShadedCore)** 
(marshalling, config, testing)
+- **juneau-rest-common** - REST APIs common to client and server
+- **juneau-rest-server** - Full-featured REST servlet API
+- **juneau-rest-server-rdf** - RDF support for REST servers
+- **juneau-rest-mock** - REST testing utilities
+
+## Use Cases
+
+Use `juneau-shaded-rest-server` when you need:
+
+- **REST API development** - Create RESTful web services
+- **Servlet-based applications** - Deploy to any Servlet 6.1+ container
+- **Automatic content negotiation** - Support multiple formats automatically
+- **Swagger/OpenAPI integration** - Built-in API documentation
+- **Testing REST services** - Use the mock framework
+
+## Maven Dependency
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-server</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Bazel Dependency
+
+```python
+maven_jar(
+    name = "juneau_rest_server",
+    artifact = "org.apache.juneau:juneau-shaded-rest-server:${juneau.version}",
+)
+
+# External dependencies
+maven_jar(
+    name = "jakarta_servlet_api",
+    artifact = "jakarta.servlet:jakarta.servlet-api:6.1.0",
+)
+
+maven_jar(
+    name = "jetty_server",
+    artifact = "org.eclipse.jetty:jetty-server:12.0.5",
+)
+
+java_library(
+    name = "my_rest_api",
+    srcs = glob(["src/**/*.java"]),
+    deps = [
+        "@juneau_rest_server//jar",
+        "@jakarta_servlet_api//jar",
+        "@jetty_server//jar",
+    ],
+)
+```
+
+## External Dependencies
+
+`juneau-shaded-rest-server` requires:
+
+### Required
+- **Jakarta Servlet API 6.1+** - Servlet specification
+
+### Optional
+- **Jakarta XML Bind API 3.0+** - For XML serialization
+- **Apache Jena** - For RDF support
+- **Servlet Container** - Jetty, Tomcat, etc. (runtime dependency)
+
+## Example Usage
+
+### Basic REST Resource
+
+```java
+import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.servlet.*;
+
+@Rest(
+    path="/petstore",
+    title="Petstore API",
+    description="Sample REST API"
+)
+public class PetStoreResource extends BasicRestServlet {
+    
+    @RestGet(path="/pets")
+    public List<Pet> getPets() {
+        return petService.getAllPets();
+    }
+    
+    @RestGet(path="/pets/{id}")
+    public Pet getPet(@Path int id) {
+        return petService.getPet(id);
+    }
+    
+    @RestPost(path="/pets")
+    public Pet createPet(@Content Pet pet) {
+        return petService.createPet(pet);
+    }
+    
+    @RestPut(path="/pets/{id}")
+    public Pet updatePet(@Path int id, @Content Pet pet) {
+        return petService.updatePet(id, pet);
+    }
+    
+    @RestDelete(path="/pets/{id}")
+    public void deletePet(@Path int id) {
+        petService.deletePet(id);
+    }
+}
+```
+
+### Automatic Content Negotiation
+
+Juneau automatically serializes responses based on the `Accept` header:
+
+```java
+@RestGet(path="/person/{id}")
+public Person getPerson(@Path int id) {
+    return new Person("John Smith", 42);
+}
+
+// GET /person/1
+// Accept: application/json  →  {"name":"John Smith","age":42}
+// Accept: text/xml          →  <object><name>John 
Smith</name><age>42</age></object>
+// Accept: text/html         →  <table>...</table>
+// Accept: text/plain        →  name=John Smith, age=42
+```
+
+### Request Body Parsing
+
+```java
+@RestPost(path="/person")
+public Person createPerson(@Content Person person) {
+    // person is automatically parsed from JSON, XML, etc.
+    return personService.create(person);
+}
+
+// POST /person
+// Content-Type: application/json
+// Body: {"name":"John","age":42}
+```
+
+### Path Parameters
+
+```java
+@RestGet(path="/users/{userId}/posts/{postId}")
+public Post getUserPost(
+    @Path("userId") int userId,
+    @Path("postId") int postId
+) {
+    return postService.getPost(userId, postId);
+}
+```
+
+### Query Parameters
+
+```java
+@RestGet(path="/search")
+public List<Result> search(
+    @Query("q") String query,
+    @Query("limit") @Default("10") int limit,
+    @Query("offset") @Default("0") int offset
+) {
+    return searchService.search(query, limit, offset);
+}
+
+// GET /search?q=juneau&limit=20&offset=40
+```
+
+### Request/Response Headers
+
+```java
+@RestGet(path="/data")
+public String getData(
+    @Header("User-Agent") String userAgent,
+    RestResponse res
+) {
+    res.setHeader("X-Custom", "value");
+    return "data";
+}
+```
+
+### Swagger/OpenAPI Integration
+
+```java
+@Rest(
+    path="/api",
+    swagger=@Swagger(
+        title="My API",
+        version="1.0",
+        description="API Description",
+        contact=@Contact(name="Support", email="[email protected]")
+    )
+)
+public class MyApi extends BasicRestServlet {
+    
+    @RestGet(
+        path="/items",
+        summary="Get all items",
+        description="Returns a list of all items"
+    )
+    public List<Item> getItems() {
+        return itemService.getAll();
+    }
+}
+
+// Swagger UI available at: /api/swagger
+// OpenAPI JSON at: /api/openapi.json
+```
+
+### Exception Handling
+
+```java
+@RestGet(path="/person/{id}")
+public Person getPerson(@Path int id) throws NotFound {
+    Person person = personService.getPerson(id);
+    if (person == null)
+        throw new NotFound("Person not found: {0}", id);
+    return person;
+}
+
+// Returns HTTP 404 with error message
+```
+
+### Guards and Matchers
+
+```java
+@Rest(path="/admin")
+@RestGuard(AdminGuard.class)  // Require admin role
+public class AdminResource extends BasicRestServlet {
+    
+    @RestGet(path="/users")
+    public List<User> getUsers() {
+        return userService.getAllUsers();
+    }
+}
+
+public class AdminGuard extends RestGuard {
+    @Override
+    public boolean guard(RestRequest req, RestResponse res) {
+        return req.isUserInRole("admin");
+    }
+}
+```
+
+### Converters
+
+```java
+@Rest(
+    path="/api",
+    converters={Queryable.class, Introspectable.class}
+)
+public class MyApi extends BasicRestServlet {
+    
+    @RestGet(path="/people")
+    public List<Person> getPeople() {
+        return personService.getAll();
+    }
+    
+    // GET /people?s=age>21&v=name,age&o=age
+    // Returns filtered, sorted, and projected results
+}
+```
+
+### Configuration
+
+```java
+@Rest(
+    path="/api",
+    config="myapi.cfg",  // External config file
+    defaultAccept="application/json",
+    defaultContentType="application/json",
+    maxInput="10M"  // Limit request size
+)
+public class MyApi extends BasicRestServlet {
+    // ...
+}
+```
+
+## Features
+
+### Built-in Serializers/Parsers
+- JSON (multiple flavors)
+- XML
+- HTML (with customizable styling)
+- URL-Encoding
+- MessagePack
+- OpenAPI
+- Plain Text
+- CSV
+
+### Automatic Features
+- Content negotiation
+- Character encoding detection
+- GZIP compression
+- Request/response logging
+- Exception mapping
+- Bean validation
+
+### Advanced Features
+- Role-based security
+- Method-level guards
+- Request/response interceptors
+- Custom converters
+- File uploads/downloads
+- Server-sent events
+- HTTP/2 support (via container)
+
+## Testing with Mock Framework
+
+```java
+@Test
+public void testRestEndpoint() throws Exception {
+    MockRestClient client = MockRestClient.create(MyRestApi.class)
+        .json()
+        .build();
+    
+    // Test GET
+    Person person = client.get("/person/1")
+        .run()
+        .assertStatus().is(200)
+        .getContent().as(Person.class);
+    
+    assertEquals("John", person.getName());
+    
+    // Test POST
+    Person newPerson = new Person("Jane", 30);
+    client.post("/person")
+        .content(newPerson)
+        .run()
+        .assertStatus().is(201);
+}
+```
+
+## Performance Characteristics
+
+- **Streaming**: Efficient memory usage for large requests/responses
+- **Thread-Safe**: All serializers/parsers are thread-safe
+- **Caching**: Bean metadata is cached for performance
+- **Minimal Overhead**: No reflection during serialization/parsing
+
+## Migration from Individual Modules
+
+**Before:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-marshall</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-server</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-common</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+**After:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-server</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Next Steps
+
+- **Need Spring Boot?** Use 
[juneau-shaded-rest-server-springboot](/docs/topics/JuneauShadedRestServerSpringboot)
+- **Need client functionality too?** Use 
[juneau-shaded-all](/docs/topics/JuneauShadedAll)
+- **Learn about REST server:** See [REST Server 
Basics](/docs/topics/JuneauRestServerBasics)
+- **Learn about Swagger integration:** See [Swagger 
Integration](/docs/topics/SwaggerIntegration)
+
diff --git 
a/juneau-docs/docs/topics/19.05.00.JuneauShadedRestServerSpringboot.md 
b/juneau-docs/docs/topics/19.05.00.JuneauShadedRestServerSpringboot.md
new file mode 100644
index 0000000000..44848cb940
--- /dev/null
+++ b/juneau-docs/docs/topics/19.05.00.JuneauShadedRestServerSpringboot.md
@@ -0,0 +1,436 @@
+---
+title: "juneau-shaded-rest-server-springboot"
+slug: JuneauShadedRestServerSpringboot
+---
+
+The `juneau-shaded-rest-server-springboot` artifact bundles REST server 
functionality plus Spring Boot integration. At 3.8 MB, it provides everything 
needed for building Juneau REST services with Spring Boot.
+
+## What's Included
+
+This artifact includes:
+
+- **All modules from 
[juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer)** (core + REST 
server)
+- **juneau-rest-server-springboot** - Spring Boot auto-configuration and 
integration
+
+## Use Cases
+
+Use `juneau-shaded-rest-server-springboot` when you need:
+
+- **Spring Boot applications** - Leverage Spring Boot's ecosystem
+- **Auto-configuration** - Automatic Juneau setup with Spring Boot
+- **Spring dependency injection** - Use `@Autowired` in REST resources
+- **Spring Security integration** - Leverage Spring's security framework
+- **Spring ecosystem** - Access to Spring Data, Spring Cloud, etc.
+
+## Maven Dependency
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-server-springboot</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Bazel Dependency
+
+```python
+maven_jar(
+    name = "juneau_rest_server_springboot",
+    artifact = 
"org.apache.juneau:juneau-shaded-rest-server-springboot:${juneau.version}",
+)
+
+# External dependencies
+maven_jar(
+    name = "spring_boot_starter_web",
+    artifact = "org.springframework.boot:spring-boot-starter-web:3.2.0",
+)
+
+java_library(
+    name = "my_spring_api",
+    srcs = glob(["src/**/*.java"]),
+    deps = [
+        "@juneau_rest_server_springboot//jar",
+        "@spring_boot_starter_web//jar",
+    ],
+)
+```
+
+## External Dependencies
+
+`juneau-shaded-rest-server-springboot` requires:
+
+### Required
+- **Spring Boot Starter Web 3.0+** - Spring Boot web support
+- **Jakarta Servlet API 6.1+** - Servlet specification (transitively from 
Spring Boot)
+
+### Optional
+- **Spring Boot Starter Security** - For Spring Security integration
+- **Jakarta XML Bind API 3.0+** - For XML serialization
+- **Apache Jena** - For RDF support
+
+## Example Usage
+
+### Spring Boot Application
+
+```java
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MyApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(MyApplication.class, args);
+    }
+}
+```
+
+### REST Resource with Spring Integration
+
+```java
+import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.springboot.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Rest(
+    path="/api/pets",
+    title="Pet Store API"
+)
+public class PetResource extends SpringRestServlet {
+    
+    @Autowired
+    private PetService petService;  // Spring bean injection
+    
+    @RestGet
+    public List<Pet> getAllPets() {
+        return petService.findAll();
+    }
+    
+    @RestGet(path="/{id}")
+    public Pet getPet(@Path long id) {
+        return petService.findById(id)
+            .orElseThrow(() -> new NotFound("Pet not found"));
+    }
+    
+    @RestPost
+    public Pet createPet(@Content Pet pet) {
+        return petService.save(pet);
+    }
+}
+```
+
+### Spring Configuration
+
+```java
+import org.springframework.context.annotation.Configuration;
+import org.apache.juneau.rest.springboot.JuneauRestInitializer;
+
+@Configuration
+public class JuneauConfig implements JuneauRestInitializer {
+    
+    @Override
+    public void init(SpringRestServletBuilder builder) {
+        builder
+            .defaultAccept("application/json")
+            .defaultContentType("application/json")
+            .maxInput("10M");
+    }
+}
+```
+
+### Application Properties
+
+```properties
+# application.properties
+
+# Juneau settings
+juneau.defaultAccept=application/json
+juneau.defaultContentType=application/json
+juneau.maxInput=10M
+
+# Server settings
+server.port=8080
+server.servlet.context-path=/
+
+# Logging
+logging.level.org.apache.juneau=DEBUG
+```
+
+### Spring Security Integration
+
+```java
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import 
org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.web.SecurityFilterChain;
+
+@Configuration
+public class SecurityConfig {
+    
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception 
{
+        http
+            .authorizeHttpRequests(auth -> auth
+                .requestMatchers("/api/public/**").permitAll()
+                .requestMatchers("/api/admin/**").hasRole("ADMIN")
+                .anyRequest().authenticated()
+            )
+            .httpBasic();
+        
+        return http.build();
+    }
+}
+```
+
+### Accessing Security Context
+
+```java
+@Rest(path="/api/users")
+public class UserResource extends SpringRestServlet {
+    
+    @RestGet(path="/me")
+    public User getCurrentUser() {
+        Authentication auth = SecurityContextHolder.getContext()
+            .getAuthentication();
+        
+        String username = auth.getName();
+        return userService.findByUsername(username);
+    }
+}
+```
+
+### Spring Data Integration
+
+```java
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface PetRepository extends JpaRepository<Pet, Long> {
+    List<Pet> findBySpecies(String species);
+}
+
+@Rest(path="/api/pets")
+public class PetResource extends SpringRestServlet {
+    
+    @Autowired
+    private PetRepository petRepository;
+    
+    @RestGet
+    public List<Pet> getAllPets(
+        @Query("species") String species
+    ) {
+        if (species != null)
+            return petRepository.findBySpecies(species);
+        return petRepository.findAll();
+    }
+}
+```
+
+### Transaction Management
+
+```java
+import org.springframework.transaction.annotation.Transactional;
+
+@Rest(path="/api/orders")
+public class OrderResource extends SpringRestServlet {
+    
+    @Autowired
+    private OrderService orderService;
+    
+    @RestPost
+    @Transactional
+    public Order createOrder(@Content Order order) {
+        // Transactional operation
+        return orderService.create(order);
+    }
+}
+```
+
+### Exception Handling with Spring
+
+```java
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+
+@ControllerAdvice
+public class GlobalExceptionHandler {
+    
+    @ExceptionHandler(EntityNotFoundException.class)
+    public ResponseEntity<ErrorResponse> handleNotFound(
+        EntityNotFoundException ex
+    ) {
+        return ResponseEntity
+            .status(HttpStatus.NOT_FOUND)
+            .body(new ErrorResponse(ex.getMessage()));
+    }
+}
+```
+
+### Swagger Integration
+
+```java
+@Rest(
+    path="/api",
+    swagger=@Swagger(
+        title="Pet Store API",
+        version="1.0",
+        description="REST API for Pet Store",
+        contact=@Contact(
+            name="Support Team",
+            email="[email protected]"
+        ),
+        license=@License(
+            name="Apache 2.0",
+            url="http://www.apache.org/licenses/LICENSE-2.0.html";
+        )
+    )
+)
+public class PetStoreApi extends SpringRestServlet {
+    // Swagger UI at: http://localhost:8080/api/swagger
+    // OpenAPI JSON at: http://localhost:8080/api/openapi.json
+}
+```
+
+### Multi-Module Spring Boot Application
+
+```java
+// Main application
+@SpringBootApplication
+@ComponentScan(basePackages = {
+    "com.example.api",
+    "com.example.service"
+})
+public class MyApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(MyApplication.class, args);
+    }
+}
+
+// REST resources in com.example.api
+@Rest(path="/users")
+@Component
+public class UserResource extends SpringRestServlet {
+    @Autowired
+    private UserService userService;
+    // ...
+}
+
+// Services in com.example.service
+@Service
+public class UserService {
+    @Autowired
+    private UserRepository userRepository;
+    // ...
+}
+```
+
+## Features
+
+### Spring Boot Auto-Configuration
+- Automatic servlet registration
+- Property-based configuration
+- Actuator integration
+- Metrics and health checks
+
+### Spring Ecosystem Integration
+- **Spring Data** - Database access
+- **Spring Security** - Authentication/authorization
+- **Spring Cloud** - Microservices patterns
+- **Spring Cache** - Caching abstraction
+- **Spring Scheduling** - Task scheduling
+
+### Juneau Features
+All features from 
[juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer) plus:
+- Spring bean injection in REST resources
+- Access to Spring ApplicationContext
+- Integration with Spring's exception handling
+- Spring's AOP capabilities
+
+## Testing
+
+### Spring Boot Test
+
+```java
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@ExtendWith(SpringExtension.class)
+public class PetResourceTest {
+    
+    @Autowired
+    private TestRestTemplate restTemplate;
+    
+    @Test
+    public void testGetAllPets() {
+        ResponseEntity<Pet[]> response = restTemplate
+            .getForEntity("/api/pets", Pet[].class);
+        
+        assertEquals(HttpStatus.OK, response.getStatusCode());
+        assertTrue(response.getBody().length > 0);
+    }
+}
+```
+
+### MockMvc Integration
+
+```java
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.test.web.servlet.MockMvc;
+import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@WebMvcTest(PetResource.class)
+public class PetResourceMockMvcTest {
+    
+    @Autowired
+    private MockMvc mockMvc;
+    
+    @MockBean
+    private PetService petService;
+    
+    @Test
+    public void testGetPet() throws Exception {
+        Pet pet = new Pet(1L, "Fluffy", "cat");
+        when(petService.findById(1L))
+            .thenReturn(Optional.of(pet));
+        
+        mockMvc.perform(get("/api/pets/1"))
+            .andExpect(status().isOk())
+            .andExpect(jsonPath("$.name").value("Fluffy"));
+    }
+}
+```
+
+## Migration from Individual Modules
+
+**Before:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-server</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-server-springboot</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+**After:**
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-server-springboot</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Next Steps
+
+- **Need client functionality too?** Use 
[juneau-shaded-all](/docs/topics/JuneauShadedAll)
+- **Learn about REST server:** See [REST Server 
Basics](/docs/topics/JuneauRestServerBasics)
+- **Learn about Spring Boot integration:** See [Spring Boot 
Integration](/docs/topics/SpringBootIntegration)
+- **Learn about Spring Security:** See [Spring Security 
Integration](/docs/topics/SpringSecurityIntegration)
+
diff --git a/juneau-docs/docs/topics/19.06.00.JuneauShadedAll.md 
b/juneau-docs/docs/topics/19.06.00.JuneauShadedAll.md
new file mode 100644
index 0000000000..ae7f2b9f32
--- /dev/null
+++ b/juneau-docs/docs/topics/19.06.00.JuneauShadedAll.md
@@ -0,0 +1,384 @@
+---
+title: "juneau-shaded-all"
+slug: JuneauShadedAll
+---
+
+The `juneau-shaded-all` artifact is the complete Juneau framework bundled in a 
single 4.0 MB JAR file. It includes all core modules, REST client, REST server, 
Spring Boot integration, bean DTOs, and microservice modules.
+
+## What's Included
+
+This artifact includes **everything**:
+
+### Core Modules
+- **juneau-common** - Core utilities
+- **juneau-assertions** - Fluent assertions API
+- **juneau-bct** - Bean-Centric Testing framework
+- **juneau-config** - Configuration file API
+- **juneau-marshall** - All serializers/parsers (JSON, XML, HTML, MessagePack, 
etc.)
+- **juneau-marshall-rdf** - RDF serializers/parsers
+
+### REST Modules
+- **juneau-rest-common** - Common REST APIs
+- **juneau-rest-client** - REST client API
+- **juneau-rest-server** - REST server API
+- **juneau-rest-server-rdf** - RDF support for servers
+- **juneau-rest-server-springboot** - Spring Boot integration
+- **juneau-rest-mock** - REST testing utilities
+
+### Bean DTOs
+- **juneau-bean-common** - Common bean utilities
+- **juneau-bean-atom** - ATOM feed beans
+- **juneau-bean-html5** - HTML5 element beans
+- **juneau-bean-jsonschema** - JSON Schema beans (Draft 2020-12)
+- **juneau-bean-openapi-v3** - OpenAPI 3.0 beans
+- **juneau-bean-swagger-v2** - Swagger 2.0 beans
+
+### Microservice Modules
+- **juneau-microservice-core** - Core microservice functionality
+- **juneau-microservice-jetty** - Jetty-based microservice
+
+## Use Cases
+
+Use `juneau-shaded-all` when you:
+
+- **Want everything** - Need full access to all Juneau features
+- **Are getting started** - Simplest way to explore Juneau
+- **Build complete applications** - Need both client and server functionality
+- **Use Bazel or similar build systems** - Simplifies strict dependency 
management
+- **Develop microservices** - Includes microservice support
+- **Need maximum flexibility** - Have all features available without 
additional dependencies
+
+## Maven Dependency
+
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-all</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+## Bazel Dependency
+
+```python
+maven_jar(
+    name = "juneau_all",
+    artifact = "org.apache.juneau:juneau-shaded-all:${juneau.version}",
+)
+
+# Common external dependencies
+maven_jar(
+    name = "httpclient5",
+    artifact = "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+)
+
+maven_jar(
+    name = "jakarta_servlet_api",
+    artifact = "jakarta.servlet:jakarta.servlet-api:6.1.0",
+)
+
+java_binary(
+    name = "my_app",
+    srcs = glob(["src/**/*.java"]),
+    deps = [
+        "@juneau_all//jar",
+        "@httpclient5//jar",
+        "@jakarta_servlet_api//jar",
+    ],
+    main_class = "com.example.MyApp",
+)
+```
+
+## External Dependencies
+
+`juneau-shaded-all` requires the following external dependencies:
+
+### For REST Client
+- **Apache HttpClient 5.2+**
+- **Apache HttpCore 5.2+**
+
+### For REST Server
+- **Jakarta Servlet API 6.1+**
+- **Servlet Container** (Jetty, Tomcat, etc.)
+
+### For Spring Boot
+- **Spring Boot Starter Web 3.0+**
+
+### Optional
+- **Jakarta XML Bind API 3.0+** - For XML serialization
+- **Apache Jena** - For RDF support
+- **Spring Boot Starter Security** - For Spring Security integration
+
+## Example: Complete Microservice
+
+```java
+import org.apache.juneau.microservice.jetty.*;
+import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.rest.servlet.*;
+
+// Main application
+public class MyMicroservice {
+    public static void main(String[] args) throws Exception {
+        JettyMicroservice
+            .create()
+            .args(args)
+            .servlet(RootResource.class)
+            .build()
+            .start()
+            .join();
+    }
+}
+
+// Root resource
+@Rest(
+    path="/",
+    title="My Microservice",
+    description="Complete REST API example"
+)
+public class RootResource extends BasicRestServlet {
+    
+    @RestGet(path="/")
+    public String home() {
+        return "Welcome to My Microservice!";
+    }
+    
+    @RestGet(path="/api/data")
+    public List<Data> getData() {
+        return dataService.getAll();
+    }
+    
+    @RestPost(path="/api/data")
+    public Data createData(@Content Data data) {
+        return dataService.create(data);
+    }
+}
+```
+
+## Example: Full-Stack Application
+
+```java
+// Server-side REST API
+@Rest(path="/api")
+public class MyApi extends BasicRestServlet {
+    
+    @RestGet(path="/users")
+    public List<User> getUsers() {
+        return userService.getAllUsers();
+    }
+    
+    @RestPost(path="/users")
+    public User createUser(@Content User user) {
+        return userService.createUser(user);
+    }
+}
+
+// Client-side consumption
+public class MyClient {
+    public static void main(String[] args) {
+        try (RestClient client = RestClient.create()
+                .json()
+                .rootUrl("http://localhost:8080";)
+                .build()) {
+            
+            // GET users
+            List<User> users = client.get("/api/users")
+                .run()
+                .getContent().as(User[].class);
+            
+            // POST new user
+            User newUser = new User("John", "[email protected]");
+            User created = client.post("/api/users")
+                .content(newUser)
+                .run()
+                .getContent().as(User.class);
+            
+            System.out.println("Created: " + created.getName());
+        }
+    }
+}
+```
+
+## Example: Spring Boot Application
+
+```java
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MySpringBootApp {
+    public static void main(String[] args) {
+        SpringApplication.run(MySpringBootApp.class, args);
+    }
+}
+
+@Rest(path="/api/products")
+@Component
+public class ProductResource extends SpringRestServlet {
+    
+    @Autowired
+    private ProductRepository productRepository;
+    
+    @RestGet
+    public List<Product> getAllProducts() {
+        return productRepository.findAll();
+    }
+    
+    @RestGet(path="/{id}")
+    public Product getProduct(@Path long id) {
+        return productRepository.findById(id)
+            .orElseThrow(() -> new NotFound("Product not found"));
+    }
+    
+    @RestPost
+    @Transactional
+    public Product createProduct(@Content Product product) {
+        return productRepository.save(product);
+    }
+}
+```
+
+## Example: Testing with All Features
+
+```java
+import static org.apache.juneau.junit.bct.BctAssertions.*;
+import org.apache.juneau.rest.mock.*;
+
+@Test
+public void testCompleteWorkflow() throws Exception {
+    // Bean testing
+    User user = new User("John", "[email protected]");
+    assertBean(user)
+        .is("name", "John")
+        .is("email", "[email protected]");
+    
+    // Serialization testing
+    assertBean(user).asJson()
+        .is("{name:'John',email:'[email protected]'}");
+    
+    // REST API testing
+    MockRestClient client = MockRestClient.create(MyApi.class)
+        .json()
+        .build();
+    
+    User created = client.post("/users")
+        .content(user)
+        .run()
+        .assertStatus().is(201)
+        .getContent().as(User.class);
+    
+    assertBean(created).is("name", "John");
+}
+```
+
+## Features at a Glance
+
+### Serialization
+- JSON, XML, HTML, RDF, MessagePack, CSV, SOAP, UON, OpenAPI, PlainText
+- Automatic content negotiation
+- Streaming support
+- Custom serializers/parsers
+
+### REST Client
+- Fluent API
+- Remote proxies
+- Authentication (Basic, Bearer, OAuth2, Custom)
+- Interceptors and retries
+- Connection pooling
+
+### REST Server
+- Annotation-based routing
+- Swagger/OpenAPI integration
+- Guards and matchers
+- Converters and validators
+- File uploads/downloads
+- Server-sent events
+
+### Configuration
+- Hierarchical config files
+- Variable resolution
+- Listeners and watchers
+- Multiple formats
+
+### Testing
+- Fluent assertions
+- Bean-centric testing
+- Mock REST clients/servers
+- Deep property navigation
+
+### Microservices
+- Jetty integration
+- Configuration management
+- Lifecycle hooks
+- Health checks and metrics
+
+## Performance
+
+- **JAR Size**: 4.0 MB (all features included)
+- **Memory**: Efficient bean introspection with caching
+- **Serialization**: Fast, memory-efficient
+- **Thread-Safe**: All components are thread-safe
+- **Startup**: Minimal - no classpath scanning or code generation
+
+## When NOT to Use
+
+Consider using more specific shaded artifacts if:
+
+- **Building a library** - Other projects may not need all features
+- **Size constraints** - Use `juneau-shaded-core` (2.1 MB) for core-only
+- **Client only** - Use `juneau-shaded-rest-client` (3.8 MB)
+- **Server only** - Use `juneau-shaded-rest-server` (3.8 MB)
+
+## Comparison with Other Shaded Artifacts
+
+| Artifact | Size | Use When |
+|----------|------|----------|
+| [juneau-shaded-core](/docs/topics/JuneauShadedCore) | 2.1 MB | Only need 
marshalling/config |
+| [juneau-shaded-rest-client](/docs/topics/JuneauShadedRestClient) | 3.8 MB | 
Building REST clients |
+| [juneau-shaded-rest-server](/docs/topics/JuneauShadedRestServer) | 3.8 MB | 
Building REST servers |
+| 
[juneau-shaded-rest-server-springboot](/docs/topics/JuneauShadedRestServerSpringboot)
 | 3.8 MB | Using Spring Boot |
+| **juneau-shaded-all** | **4.0 MB** | **Need everything** |
+
+## Migration from Individual Modules
+
+**Before** (managing many dependencies):
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-marshall</artifactId>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-client</artifactId>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-server</artifactId>
+</dependency>
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-rest-server-springboot</artifactId>
+</dependency>
+<!-- ... many more -->
+```
+
+**After** (one dependency):
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-all</artifactId>
+    <version>${juneau.version}</version>
+</dependency>
+```
+
+All imports and API usage remain exactly the same!
+
+## Next Steps
+
+- **[Juneau Ecosystem Overview](/docs/topics/JuneauEcosystemOverview)** - 
Explore all Juneau modules
+- **[REST Server Basics](/docs/topics/JuneauRestServerBasics)** - Build REST 
APIs
+- **[REST Client Basics](/docs/topics/JuneauRestClientBasics)** - Consume REST 
APIs
+- **[Marshalling Basics](/docs/topics/JuneauMarshallBasics)** - 
Serialize/deserialize objects
+- **[Microservice Basics](/docs/topics/JuneauMicroserviceCoreBasics)** - Build 
microservices
+- **[Spring Boot Integration](/docs/topics/SpringBootIntegration)** - Use with 
Spring Boot
+- **[Bazel Usage Guide](/juneau-shaded/BAZEL_USAGE_EXAMPLES.md)** - Detailed 
Bazel examples
+
diff --git a/juneau-docs/src/pages/downloads.md 
b/juneau-docs/src/pages/downloads.md
index b0e18e146a..f2efddf132 100644
--- a/juneau-docs/src/pages/downloads.md
+++ b/juneau-docs/src/pages/downloads.md
@@ -11,7 +11,12 @@
 ### What's Included
 
 #### Binaries
-- **`juneau-all.jar`** - Everything (except RDF, JAX/RS, and Microservice)
+- **`/shaded`** - Shaded (uber) JARs for simplified dependency management
+  - `juneau-shaded-core.jar` - Core marshalling and configuration (2.1 MB)
+  - `juneau-shaded-rest-client.jar` - Core + REST client functionality (3.8 MB)
+  - `juneau-shaded-rest-server.jar` - Core + REST server functionality (3.8 MB)
+  - `juneau-shaded-rest-server-springboot.jar` - REST server + Spring Boot 
integration (3.8 MB)
+  - `juneau-shaded-all.jar` - Complete framework in one JAR (4.0 MB)
 - **`/lib`** - Individual Jars
   - `juneau-marshall.jar` - Marshalling
   - `juneau-marshall-rdf.jar` - Marshalling RDF extension (requires Apache 
Jena 2.7.1+)
@@ -61,7 +66,7 @@
 </dependency>
 
 <!-- ...where the artifactId is typically... -->
-<artifactId>juneau-all</artifactId>
+<artifactId>juneau-shaded-all</artifactId>
 
 <!-- ...but can also be any of the following... -->
 <artifactId>juneau-marshall</artifactId>
diff --git a/juneau-shaded/README.md b/juneau-shaded/README.md
new file mode 100644
index 0000000000..7bc79d5246
--- /dev/null
+++ b/juneau-shaded/README.md
@@ -0,0 +1,261 @@
+# Apache Juneau Shaded Artifacts
+
+This module contains shaded (uber) JAR artifacts that bundle multiple Juneau 
modules together. These artifacts are useful for:
+
+1. **Bazel Build System**: Bazel requires explicit declaration of all 
dependencies. Shaded JARs simplify this by bundling transitive dependencies.
+2. **Simplified Dependency Management**: Projects can include one shaded JAR 
instead of managing multiple Juneau dependencies.
+3. **Reduced Build Configuration**: Less configuration needed in build files.
+
+## Available Shaded Artifacts
+
+### juneau-shaded-core
+**Artifact ID**: `juneau-shaded-core`  
+**Description**: All core Juneau modules for general marshalling and 
configuration work.
+
+**Includes**:
+- juneau-common
+- juneau-assertions
+- juneau-bct (Bean-Centric Testing)
+- juneau-config
+- juneau-marshall
+- juneau-marshall-rdf
+
+**Maven Usage**:
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-core</artifactId>
+    <version>9.2.0-SNAPSHOT</version>
+</dependency>
+```
+
+**Bazel Usage**:
+```python
+maven_jar(
+    name = "juneau_core",
+    artifact = "org.apache.juneau:juneau-shaded-core:9.2.0-SNAPSHOT",
+)
+```
+
+---
+
+### juneau-shaded-rest-client
+**Artifact ID**: `juneau-shaded-rest-client`  
+**Description**: Everything needed for REST client development.
+
+**Includes**:
+- All modules from juneau-shaded-core
+- juneau-rest-common
+- juneau-rest-client
+- juneau-rest-mock
+
+**Maven Usage**:
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-client</artifactId>
+    <version>9.2.0-SNAPSHOT</version>
+</dependency>
+```
+
+**Bazel Usage**:
+```python
+maven_jar(
+    name = "juneau_rest_client",
+    artifact = "org.apache.juneau:juneau-shaded-rest-client:9.2.0-SNAPSHOT",
+)
+```
+
+---
+
+### juneau-shaded-rest-server
+**Artifact ID**: `juneau-shaded-rest-server`  
+**Description**: Everything needed for REST server development.
+
+**Includes**:
+- All modules from juneau-shaded-core
+- juneau-rest-common
+- juneau-rest-server
+- juneau-rest-server-rdf
+- juneau-rest-mock
+
+**Maven Usage**:
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-server</artifactId>
+    <version>9.2.0-SNAPSHOT</version>
+</dependency>
+```
+
+**Bazel Usage**:
+```python
+maven_jar(
+    name = "juneau_rest_server",
+    artifact = "org.apache.juneau:juneau-shaded-rest-server:9.2.0-SNAPSHOT",
+)
+```
+
+---
+
+### juneau-shaded-rest-server-springboot
+**Artifact ID**: `juneau-shaded-rest-server-springboot`  
+**Description**: Everything needed for REST server development with Spring 
Boot integration.
+
+**Includes**:
+- All modules from juneau-shaded-rest-server
+- juneau-rest-server-springboot
+
+**Maven Usage**:
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-rest-server-springboot</artifactId>
+    <version>9.2.0-SNAPSHOT</version>
+</dependency>
+```
+
+**Bazel Usage**:
+```python
+maven_jar(
+    name = "juneau_rest_server_springboot",
+    artifact = 
"org.apache.juneau:juneau-shaded-rest-server-springboot:9.2.0-SNAPSHOT",
+)
+```
+
+---
+
+### juneau-shaded-all
+**Artifact ID**: `juneau-shaded-all`  
+**Description**: The complete Juneau framework in a single JAR (excludes unit 
tests, examples, and distribution artifacts).
+
+**Includes**:
+- All modules from juneau-shaded-rest-server-springboot
+- juneau-rest-client
+- All juneau-bean modules (atom, html5, jsonschema, openapi-v3, swagger-v2)
+- All juneau-microservice modules (core, jetty)
+
+**Maven Usage**:
+```xml
+<dependency>
+    <groupId>org.apache.juneau</groupId>
+    <artifactId>juneau-shaded-all</artifactId>
+    <version>9.2.0-SNAPSHOT</version>
+</dependency>
+```
+
+**Bazel Usage**:
+```python
+maven_jar(
+    name = "juneau_all",
+    artifact = "org.apache.juneau:juneau-shaded-all:9.2.0-SNAPSHOT",
+)
+```
+
+---
+
+## Important Notes
+
+### External Dependencies
+These shaded JARs **only** bundle Juneau modules. External dependencies (like 
Apache HttpClient, Jakarta Servlet API, Spring Boot, etc.) are still declared 
as transitive dependencies and must be managed separately.
+
+### Maven Dependency Resolution
+When using shaded artifacts in Maven, transitive dependencies are 
automatically resolved. The generated `dependency-reduced-pom.xml` in each 
shaded module shows the actual external dependencies that will be pulled in.
+
+### Bazel Dependency Resolution
+When using shaded artifacts in Bazel, you **must** explicitly declare all 
external dependencies. To find out what external dependencies are needed:
+
+1. Check the `dependency-reduced-pom.xml` in the shaded module's target 
directory after building
+2. Or use `mvn dependency:tree` on the shaded module
+3. Or refer to the individual Juneau module POMs to see their dependencies
+
+Example Bazel configuration with external dependencies:
+```python
+maven_jar(
+    name = "juneau_rest_client",
+    artifact = "org.apache.juneau:juneau-shaded-rest-client:9.2.0-SNAPSHOT",
+)
+
+maven_jar(
+    name = "httpclient",
+    artifact = "org.apache.httpcomponents.client5:httpclient5:5.2.1",
+)
+
+maven_jar(
+    name = "httpcore",
+    artifact = "org.apache.httpcomponents.core5:httpcore5:5.2.1",
+)
+
+# ... other external dependencies
+```
+
+### Service Files
+The Maven Shade Plugin automatically merges `META-INF/services` files from all 
included modules, ensuring that service providers are properly registered.
+
+### Signatures
+JAR signature files (`*.SF`, `*.DSA`, `*.RSA`) are excluded from shaded JARs 
to prevent signature validation errors.
+
+---
+
+## Building
+
+To build all shaded artifacts:
+
+```bash
+cd juneau-shaded
+mvn clean install
+```
+
+To build a specific shaded artifact:
+
+```bash
+cd juneau-shaded/juneau-shaded-core
+mvn clean install
+```
+
+---
+
+## Module Dependencies
+
+The shaded modules form a dependency hierarchy:
+
+```
+juneau-shaded-core
+    ↓
+juneau-shaded-rest-client
+    ↓ (separate branch)
+juneau-shaded-rest-server
+    ↓
+juneau-shaded-rest-server-springboot
+    ↓
+juneau-shaded-all (also includes rest-client + bean modules + microservice)
+```
+
+This hierarchy means:
+- `juneau-shaded-rest-client` depends on `juneau-shaded-core`
+- `juneau-shaded-rest-server` depends on `juneau-shaded-core`
+- `juneau-shaded-rest-server-springboot` depends on `juneau-shaded-rest-server`
+- `juneau-shaded-all` depends on `juneau-shaded-rest-server-springboot` plus 
additional modules
+
+---
+
+## When to Use
+
+### Use Shaded JARs When:
+- Using Bazel or another build system with strict dependency requirements
+- You want simplified dependency management
+- You're building a standalone application
+- You want to minimize build configuration
+
+### Use Individual Modules When:
+- You need fine-grained control over dependencies
+- You're building a library that will be used by others
+- You want to minimize JAR size by excluding unused modules
+- You need to avoid potential classpath conflicts in complex applications
+
+---
+
+## License
+
+All shaded artifacts are licensed under the Apache License 2.0, same as the 
rest of Apache Juneau.
+
diff --git a/juneau-all/pom.xml b/juneau-shaded/juneau-shaded-all/pom.xml
similarity index 51%
copy from juneau-all/pom.xml
copy to juneau-shaded/juneau-shaded-all/pom.xml
index 57a9ea8905..7bf7b97eae 100644
--- a/juneau-all/pom.xml
+++ b/juneau-shaded/juneau-shaded-all/pom.xml
@@ -21,95 +21,94 @@
 
        <parent>
                <groupId>org.apache.juneau</groupId>
-               <artifactId>juneau</artifactId>
+               <artifactId>juneau-shaded</artifactId>
                <version>9.2.0-SNAPSHOT</version>
        </parent>
 
-       <artifactId>juneau-all</artifactId>
-       <name>juneau/all</name>
-       <description>Apache Juneau UberJar</description>
-       <packaging>jar</packaging>
+       <artifactId>juneau-shaded-all</artifactId>
+       <name>Apache Juneau All (Shaded)</name>
+       <description>
+               Shaded JAR containing all Juneau modules (excluding unit tests, 
examples, and distribution artifacts).
+               Includes: juneau-core, juneau-bean, juneau-rest-client, 
juneau-rest-server, juneau-rest-server-springboot, and juneau-microservice.
+               This artifact provides the complete Juneau framework in a 
single JAR for maximum convenience.
+       </description>
 
        <dependencies>
+               <!-- Use shaded rest-server-springboot which includes core and 
server -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-marshall</artifactId>
+                       
<artifactId>juneau-shaded-rest-server-springboot</artifactId>
                        <version>${project.version}</version>
                </dependency>
+               
+               <!-- Also include rest-client separately (not part of server 
chain) -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-server</artifactId>
+                       <artifactId>juneau-rest-client</artifactId>
                        <version>${project.version}</version>
                </dependency>
+               
+               <!-- Bean modules -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-client</artifactId>
+                       <artifactId>juneau-bean-common</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-bean-atom</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-bean-html5</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-bean-jsonschema</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-mock</artifactId>
+                       <artifactId>juneau-bean-openapi-v3</artifactId>
                        <version>${project.version}</version>
                </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-bean-swagger-v2</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               
+               <!-- Microservice modules -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
                        <artifactId>juneau-microservice-core</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
-                       <groupId>jakarta.servlet</groupId>
-                       <artifactId>jakarta.servlet-api</artifactId>
-                       <version>6.1.0</version>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-microservice-jetty</artifactId>
+                       <version>${project.version}</version>
                </dependency>
        </dependencies>
 
        <build>
                <plugins>
-
-                       <!-- Creates our juneau-all jar file that's a combo of 
our 4 modules. -->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-shade-plugin</artifactId>
                                <configuration>
-                                       
<createDependencyReducedPom>false</createDependencyReducedPom>
-                                       <artifactSet>
-                                               <includes>
-                                                       
<include>org.apache.juneau:juneau-common</include>
-                                                       
<include>org.apache.juneau:juneau-marshall</include>
-                                                       
<include>org.apache.juneau:juneau-svl</include>
-                                                       
<include>org.apache.juneau:juneau-config</include>
-                                                       
<include>org.apache.juneau:juneau-bean-atom</include>
-                                                       
<include>org.apache.juneau:juneau-bean-common</include>
-                                                       
<include>org.apache.juneau:juneau-bean-html5</include>
-                                                       
<include>org.apache.juneau:juneau-bean-jsonschema</include>
-                                                       
<include>org.apache.juneau:juneau-bean-openapi-v3</include>
-                                                       
<include>org.apache.juneau:juneau-bean-swagger-v2</include>
-                                                       
<include>org.apache.juneau:juneau-rest-server</include>
-                                                       
<include>org.apache.juneau:juneau-rest-client</include>
-                                                       
<include>org.apache.juneau:juneau-rest-mock</include>
-                                                       
<include>org.apache.juneau:juneau-microservice-core</include>
-                                                       
<include>org.apache.httpcomponents:httpcore</include>
-                                               </includes>
-                                       </artifactSet>
+                                       <transformers combine.children="append">
+                                               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                                       <manifestEntries>
+                                                               
<Automatic-Module-Name>org.apache.juneau.all</Automatic-Module-Name>
+                                                       </manifestEntries>
+                                               </transformer>
+                                       </transformers>
                                </configuration>
-                               <executions>
-                                       <execution>
-                                               <phase>package</phase>
-                                               <goals>
-                                                       <goal>shade</goal>
-                                               </goals>
-                                       </execution>
-                                       <execution>
-                                               <id>source-jar</id>
-                                               <goals>
-                                                       <goal>shade</goal>
-                                               </goals>
-                                               <configuration>
-                                                       
<createSourcesJar>true</createSourcesJar>
-                                               </configuration>
-                                       </execution>
-                               </executions>
                        </plugin>
                </plugins>
        </build>
 </project>
+
diff --git a/juneau-all/pom.xml b/juneau-shaded/juneau-shaded-core/pom.xml
similarity index 50%
copy from juneau-all/pom.xml
copy to juneau-shaded/juneau-shaded-core/pom.xml
index 57a9ea8905..2ec38ecf7a 100644
--- a/juneau-all/pom.xml
+++ b/juneau-shaded/juneau-shaded-core/pom.xml
@@ -21,95 +21,68 @@
 
        <parent>
                <groupId>org.apache.juneau</groupId>
-               <artifactId>juneau</artifactId>
+               <artifactId>juneau-shaded</artifactId>
                <version>9.2.0-SNAPSHOT</version>
        </parent>
 
-       <artifactId>juneau-all</artifactId>
-       <name>juneau/all</name>
-       <description>Apache Juneau UberJar</description>
-       <packaging>jar</packaging>
+       <artifactId>juneau-shaded-core</artifactId>
+       <name>Apache Juneau Core (Shaded)</name>
+       <description>
+               Shaded JAR containing all juneau-core submodules for general 
marshalling work.
+               Includes: juneau-common, juneau-assertions, juneau-bct, 
juneau-config, juneau-marshall, and juneau-marshall-rdf.
+               This artifact is useful for projects that need core Juneau 
functionality without managing multiple dependencies.
+       </description>
 
        <dependencies>
+               <!-- Include all juneau-core submodules -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-marshall</artifactId>
+                       <artifactId>juneau-common</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-server</artifactId>
+                       <artifactId>juneau-assertions</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-client</artifactId>
+                       <artifactId>juneau-bct</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-mock</artifactId>
+                       <artifactId>juneau-config</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-microservice-core</artifactId>
+                       <artifactId>juneau-marshall</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
-                       <groupId>jakarta.servlet</groupId>
-                       <artifactId>jakarta.servlet-api</artifactId>
-                       <version>6.1.0</version>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-marshall-rdf</artifactId>
+                       <version>${project.version}</version>
                </dependency>
        </dependencies>
 
        <build>
                <plugins>
-
-                       <!-- Creates our juneau-all jar file that's a combo of 
our 4 modules. -->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-shade-plugin</artifactId>
                                <configuration>
-                                       
<createDependencyReducedPom>false</createDependencyReducedPom>
-                                       <artifactSet>
-                                               <includes>
-                                                       
<include>org.apache.juneau:juneau-common</include>
-                                                       
<include>org.apache.juneau:juneau-marshall</include>
-                                                       
<include>org.apache.juneau:juneau-svl</include>
-                                                       
<include>org.apache.juneau:juneau-config</include>
-                                                       
<include>org.apache.juneau:juneau-bean-atom</include>
-                                                       
<include>org.apache.juneau:juneau-bean-common</include>
-                                                       
<include>org.apache.juneau:juneau-bean-html5</include>
-                                                       
<include>org.apache.juneau:juneau-bean-jsonschema</include>
-                                                       
<include>org.apache.juneau:juneau-bean-openapi-v3</include>
-                                                       
<include>org.apache.juneau:juneau-bean-swagger-v2</include>
-                                                       
<include>org.apache.juneau:juneau-rest-server</include>
-                                                       
<include>org.apache.juneau:juneau-rest-client</include>
-                                                       
<include>org.apache.juneau:juneau-rest-mock</include>
-                                                       
<include>org.apache.juneau:juneau-microservice-core</include>
-                                                       
<include>org.apache.httpcomponents:httpcore</include>
-                                               </includes>
-                                       </artifactSet>
+                                       <transformers combine.children="append">
+                                               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                                       <manifestEntries>
+                                                               
<Automatic-Module-Name>org.apache.juneau.core.all</Automatic-Module-Name>
+                                                       </manifestEntries>
+                                               </transformer>
+                                       </transformers>
                                </configuration>
-                               <executions>
-                                       <execution>
-                                               <phase>package</phase>
-                                               <goals>
-                                                       <goal>shade</goal>
-                                               </goals>
-                                       </execution>
-                                       <execution>
-                                               <id>source-jar</id>
-                                               <goals>
-                                                       <goal>shade</goal>
-                                               </goals>
-                                               <configuration>
-                                                       
<createSourcesJar>true</createSourcesJar>
-                                               </configuration>
-                                       </execution>
-                               </executions>
                        </plugin>
                </plugins>
        </build>
 </project>
+
diff --git a/juneau-shaded/juneau-shaded-rest-client/pom.xml 
b/juneau-shaded/juneau-shaded-rest-client/pom.xml
new file mode 100644
index 0000000000..b83abefe0e
--- /dev/null
+++ b/juneau-shaded/juneau-shaded-rest-client/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+       <modelVersion>4.0.0</modelVersion>
+
+       <parent>
+               <groupId>org.apache.juneau</groupId>
+               <artifactId>juneau-shaded</artifactId>
+               <version>9.2.0-SNAPSHOT</version>
+       </parent>
+
+       <artifactId>juneau-shaded-rest-client</artifactId>
+       <name>Apache Juneau REST Client (Shaded)</name>
+       <description>
+               Shaded JAR containing juneau-core modules plus 
juneau-rest-common, juneau-rest-client, and juneau-rest-mock.
+               This artifact provides everything needed for REST client 
development with Juneau.
+       </description>
+
+       <dependencies>
+               <!-- Use shaded core for all core modules -->
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-shaded-core</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               
+               <!-- REST client modules -->
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-rest-common</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-rest-client</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-rest-mock</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+       </dependencies>
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-shade-plugin</artifactId>
+                               <configuration>
+                                       <transformers combine.children="append">
+                                               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                                       <manifestEntries>
+                                                               
<Automatic-Module-Name>org.apache.juneau.rest.client.all</Automatic-Module-Name>
+                                                       </manifestEntries>
+                                               </transformer>
+                                       </transformers>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+</project>
+
diff --git a/juneau-shaded/juneau-shaded-rest-server-springboot/pom.xml 
b/juneau-shaded/juneau-shaded-rest-server-springboot/pom.xml
new file mode 100644
index 0000000000..38da333614
--- /dev/null
+++ b/juneau-shaded/juneau-shaded-rest-server-springboot/pom.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+       <modelVersion>4.0.0</modelVersion>
+
+       <parent>
+               <groupId>org.apache.juneau</groupId>
+               <artifactId>juneau-shaded</artifactId>
+               <version>9.2.0-SNAPSHOT</version>
+       </parent>
+
+       <artifactId>juneau-shaded-rest-server-springboot</artifactId>
+       <name>Apache Juneau REST Server Spring Boot (Shaded)</name>
+       <description>
+               Shaded JAR containing juneau-shaded-rest-server plus 
juneau-rest-server-springboot.
+               This artifact provides everything needed for REST server 
development with Juneau and Spring Boot.
+       </description>
+
+       <dependencies>
+               <!-- Use shaded rest-server for all server modules -->
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-shaded-rest-server</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               
+               <!-- Spring Boot integration -->
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-rest-server-springboot</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+       </dependencies>
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-shade-plugin</artifactId>
+                               <configuration>
+                                       <transformers combine.children="append">
+                                               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                                       <manifestEntries>
+                                                               
<Automatic-Module-Name>org.apache.juneau.rest.server.springboot.all</Automatic-Module-Name>
+                                                       </manifestEntries>
+                                               </transformer>
+                                       </transformers>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+</project>
+
diff --git a/juneau-all/pom.xml 
b/juneau-shaded/juneau-shaded-rest-server/pom.xml
similarity index 51%
rename from juneau-all/pom.xml
rename to juneau-shaded/juneau-shaded-rest-server/pom.xml
index 57a9ea8905..40e8acf1b4 100644
--- a/juneau-all/pom.xml
+++ b/juneau-shaded/juneau-shaded-rest-server/pom.xml
@@ -21,95 +21,64 @@
 
        <parent>
                <groupId>org.apache.juneau</groupId>
-               <artifactId>juneau</artifactId>
+               <artifactId>juneau-shaded</artifactId>
                <version>9.2.0-SNAPSHOT</version>
        </parent>
 
-       <artifactId>juneau-all</artifactId>
-       <name>juneau/all</name>
-       <description>Apache Juneau UberJar</description>
-       <packaging>jar</packaging>
+       <artifactId>juneau-shaded-rest-server</artifactId>
+       <name>Apache Juneau REST Server (Shaded)</name>
+       <description>
+               Shaded JAR containing juneau-core modules plus 
juneau-rest-common, juneau-rest-server, juneau-rest-server-rdf, and 
juneau-rest-mock.
+               This artifact provides everything needed for REST server 
development with Juneau.
+       </description>
 
        <dependencies>
+               <!-- Use shaded core for all core modules -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-marshall</artifactId>
+                       <artifactId>juneau-shaded-core</artifactId>
                        <version>${project.version}</version>
                </dependency>
+               
+               <!-- REST server modules -->
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-server</artifactId>
+                       <artifactId>juneau-rest-common</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-client</artifactId>
+                       <artifactId>juneau-rest-server</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-rest-mock</artifactId>
+                       <artifactId>juneau-rest-server-rdf</artifactId>
                        <version>${project.version}</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.juneau</groupId>
-                       <artifactId>juneau-microservice-core</artifactId>
+                       <artifactId>juneau-rest-mock</artifactId>
                        <version>${project.version}</version>
                </dependency>
-               <dependency>
-                       <groupId>jakarta.servlet</groupId>
-                       <artifactId>jakarta.servlet-api</artifactId>
-                       <version>6.1.0</version>
-               </dependency>
        </dependencies>
 
        <build>
                <plugins>
-
-                       <!-- Creates our juneau-all jar file that's a combo of 
our 4 modules. -->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-shade-plugin</artifactId>
                                <configuration>
-                                       
<createDependencyReducedPom>false</createDependencyReducedPom>
-                                       <artifactSet>
-                                               <includes>
-                                                       
<include>org.apache.juneau:juneau-common</include>
-                                                       
<include>org.apache.juneau:juneau-marshall</include>
-                                                       
<include>org.apache.juneau:juneau-svl</include>
-                                                       
<include>org.apache.juneau:juneau-config</include>
-                                                       
<include>org.apache.juneau:juneau-bean-atom</include>
-                                                       
<include>org.apache.juneau:juneau-bean-common</include>
-                                                       
<include>org.apache.juneau:juneau-bean-html5</include>
-                                                       
<include>org.apache.juneau:juneau-bean-jsonschema</include>
-                                                       
<include>org.apache.juneau:juneau-bean-openapi-v3</include>
-                                                       
<include>org.apache.juneau:juneau-bean-swagger-v2</include>
-                                                       
<include>org.apache.juneau:juneau-rest-server</include>
-                                                       
<include>org.apache.juneau:juneau-rest-client</include>
-                                                       
<include>org.apache.juneau:juneau-rest-mock</include>
-                                                       
<include>org.apache.juneau:juneau-microservice-core</include>
-                                                       
<include>org.apache.httpcomponents:httpcore</include>
-                                               </includes>
-                                       </artifactSet>
+                                       <transformers combine.children="append">
+                                               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                                       <manifestEntries>
+                                                               
<Automatic-Module-Name>org.apache.juneau.rest.server.all</Automatic-Module-Name>
+                                                       </manifestEntries>
+                                               </transformer>
+                                       </transformers>
                                </configuration>
-                               <executions>
-                                       <execution>
-                                               <phase>package</phase>
-                                               <goals>
-                                                       <goal>shade</goal>
-                                               </goals>
-                                       </execution>
-                                       <execution>
-                                               <id>source-jar</id>
-                                               <goals>
-                                                       <goal>shade</goal>
-                                               </goals>
-                                               <configuration>
-                                                       
<createSourcesJar>true</createSourcesJar>
-                                               </configuration>
-                                       </execution>
-                               </executions>
                        </plugin>
                </plugins>
        </build>
 </project>
+
diff --git a/juneau-shaded/pom.xml b/juneau-shaded/pom.xml
new file mode 100644
index 0000000000..2708a078be
--- /dev/null
+++ b/juneau-shaded/pom.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+       <modelVersion>4.0.0</modelVersion>
+
+       <parent>
+               <groupId>org.apache.juneau</groupId>
+               <artifactId>juneau</artifactId>
+               <version>9.2.0-SNAPSHOT</version>
+       </parent>
+
+       <artifactId>juneau-shaded</artifactId>
+       <packaging>pom</packaging>
+       <name>Apache Juneau Shaded Artifacts</name>
+       <description>
+               Parent module for shaded (uber) JAR artifacts that bundle 
multiple Juneau modules together.
+               These artifacts are useful for build systems like Bazel that 
require explicit dependencies,
+               or for simplified dependency management in projects that need 
multiple Juneau modules.
+       </description>
+
+       <modules>
+               <module>juneau-shaded-core</module>
+               <module>juneau-shaded-rest-client</module>
+               <module>juneau-shaded-rest-server</module>
+               <module>juneau-shaded-rest-server-springboot</module>
+               <module>juneau-shaded-all</module>
+       </modules>
+
+       <build>
+               <pluginManagement>
+                       <plugins>
+                               <!-- Common shade plugin configuration for all 
submodules -->
+                               <plugin>
+                                       
<groupId>org.apache.maven.plugins</groupId>
+                                       
<artifactId>maven-shade-plugin</artifactId>
+                                       <version>3.5.1</version>
+                                       <executions>
+                                               <execution>
+                                                       <phase>package</phase>
+                                                       <goals>
+                                                               
<goal>shade</goal>
+                                                       </goals>
+                                                       <configuration>
+                                                               
<createDependencyReducedPom>true</createDependencyReducedPom>
+                                                               
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+                                                               
+                                                               <!-- Include 
all Juneau dependencies -->
+                                                               <artifactSet>
+                                                                       
<includes>
+                                                                               
<include>org.apache.juneau:*</include>
+                                                                       
</includes>
+                                                               </artifactSet>
+                                                               
+                                                               <!-- Merge 
service files and preserve manifests -->
+                                                               <transformers>
+                                                                       
<transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                                                                       
<transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"/>
+                                                                       
<transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
+                                                                               
<addHeader>false</addHeader>
+                                                                       
</transformer>
+                                                                       
<transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                                                               
<manifestEntries>
+                                                                               
        <Implementation-Title>${project.name}</Implementation-Title>
+                                                                               
        <Implementation-Version>${project.version}</Implementation-Version>
+                                                                               
        <Implementation-Vendor>Apache Software 
Foundation</Implementation-Vendor>
+                                                                               
</manifestEntries>
+                                                                       
</transformer>
+                                                               </transformers>
+                                                               
+                                                               <!-- Filter out 
signature files -->
+                                                               <filters>
+                                                                       <filter>
+                                                                               
<artifact>*:*</artifact>
+                                                                               
<excludes>
+                                                                               
        <exclude>META-INF/*.SF</exclude>
+                                                                               
        <exclude>META-INF/*.DSA</exclude>
+                                                                               
        <exclude>META-INF/*.RSA</exclude>
+                                                                               
</excludes>
+                                                                       
</filter>
+                                                               </filters>
+                                                       </configuration>
+                                               </execution>
+                                       </executions>
+                               </plugin>
+                       </plugins>
+               </pluginManagement>
+       </build>
+</project>
+
diff --git a/pom.xml b/pom.xml
index 26bf5f959e..0b69b7176f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,7 +55,7 @@
                <module>juneau-examples</module>
                <module>juneau-utest</module>
                <module>juneau-bean</module>
-               <module>juneau-all</module>
+               <module>juneau-shaded</module>
                <module>juneau-distrib</module>
        </modules>
 

Reply via email to