You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2018/11/12 12:43:06 UTC

[bookkeeper] branch master updated: ISSUE #1799: bkctl is broken with default build options

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

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


The following commit(s) were added to refs/heads/master by this push:
     new faeb9bb  ISSUE #1799: bkctl is broken with default build options
faeb9bb is described below

commit faeb9bb89c40045bd63681ecab662b838cdeec32
Author: Sijie Guo <gu...@gmail.com>
AuthorDate: Mon Nov 12 04:42:59 2018 -0800

    ISSUE #1799: bkctl is broken with default build options
    
    Descriptions of the changes in this PR:
    
    *Motivation*
    
    `bkctl` is designed in a modularized way for extensibility.
    it loads command groups via ServiceLoader. However current build
    profile doesn't leverage this extensibility. Instead it hardcodes
    all the commands in one service load file. So if `bkctl` is built
    without `-Dstream`, it will broke.
    
    *Changes*
    
    - move `ledger` related commands to `tools/ledger`
    - generate the service load file by concating `commands` files from each module's resources directory.
    
    *Results*
    
    bkctl works for all build profiles.
    
    - without `-Dstream`
    
    ```
    $ bin/bkctl
    
    bkctl interacts and operates Apache BookKeeper clusters
    
    Usage:  bkctl [flags] [command group] [commands]
    
    Commands:
    
        bookie      Commands on operating a single bookie
        bookies     Commands on operating a cluster of bookies
        cookie      Commands on operating cookies
        ledger      Commands on interacting with ledgers
    
        help        Display help information about it
    
    Flags:
    
        -c, --conf
            Configuration file
    
        -n, --namespace
            Namespace scope to run commands (only valid for table service for now)
    
        -u, --service-uri
            Service Uri
    
        -h, --help
            Display help information
    
    Use "bkctl [command] --help" or "bkctl help [command]" for more information
    about a command
    ```
    
    - with `-Dstream`
    
    ```
    $ bin/bkctl
    
    bkctl interacts and operates Apache BookKeeper clusters
    
    Usage:  bkctl [flags] [command group] [commands]
    
    Commands:
    
        bookie          Commands on operating a single bookie
        bookies         Commands on operating a cluster of bookies
        cluster         Commands on administrating bookkeeper clusters
        cookie          Commands on operating cookies
        ledger          Commands on interacting with ledgers
        namespace       Commands on operating namespaces
        table           Commands on interacting with tables
        tables          Commands on operating tables
    
        help            Display help information about it
    
    Flags:
    
        -c, --conf
            Configuration file
    
        -n, --namespace
            Namespace scope to run commands (only valid for table service for now)
    
        -u, --service-uri
            Service Uri
    
        -h, --help
            Display help information
    
    Use "bkctl [command] --help" or "bkctl help [command]" for more information
    about a command
    ```
    
    Master Issue: #1799
    
    
    
    
    Reviewers: Ivan Kelly <iv...@apache.org>, Enrico Olivelli <eo...@gmail.com>
    
    This closes #1800 from sijie/refactor_bkctl, closes #1799
---
 .gitignore                                         |   3 +
 site/docs/latest/getting-started/installation.md   |  10 +-
 tools/all/pom.xml                                  | 111 +++++++++++++--------
 tools/{all => ledger}/pom.xml                      |  22 +---
 .../org/apache/bookkeeper/tools/cli/BKCtl.java     |   0
 .../tools/cli/commands/BookieCommandGroup.java     |   0
 .../tools/cli/commands/BookiesCommandGroup.java    |   0
 .../tools/cli/commands/CookieCommandGroup.java     |   0
 .../tools/cli/commands/LedgerCommandGroup.java     |   0
 .../tools/cli/commands/package-info.java           |   0
 .../apache/bookkeeper/tools/cli/package-info.java  |   0
 .../src/main/resources/commands}                   |   4 -
 .../cli/commands/bookie/LastMarkCommandTest.java   |   0
 .../commands/bookies/ListBookiesCommandTest.java   |   0
 .../cli/commands/client/SimpleTestCommandTest.java |   0
 .../commands/cookie/CreateCookieCommandTest.java   |   0
 .../commands/cookie/DeleteCookieCommandTest.java   |   0
 .../commands/cookie/GenerateCookieCommandTest.java |   0
 .../cli/commands/cookie/GetCookieCommandTest.java  |   0
 .../commands/cookie/UpdateCookieCommandTest.java   |   0
 .../tools/cli/helpers/BookieCommandTestBase.java   |   0
 .../tools/cli/helpers/BookieShellCommandTest.java  |   0
 .../tools/cli/helpers/ClientCommandTest.java       |   0
 .../tools/cli/helpers/ClientCommandTestBase.java   |   0
 .../tools/cli/helpers/CommandTestBase.java         |   0
 .../tools/cli/helpers/CookieCommandTestBase.java   |   0
 .../tools/cli/helpers/DiscoveryCommandTest.java    |   0
 .../cli/helpers/DiscoveryCommandTestBase.java      |   0
 .../src/test/resources/log4j.properties            |   0
 tools/pom.xml                                      |   1 +
 .../src/main/resources/commands}                   |   4 -
 31 files changed, 87 insertions(+), 68 deletions(-)

diff --git a/.gitignore b/.gitignore
index d8778b2..86f2415 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,5 +33,8 @@ data/
 # Pid files
 **/*.pid
 
+# files are generated under following directories
+tools/all/src/main/resources
+
 # Exclude versionBackup file (generated by `mvn versions:set`)
 **/*.versionsBackup
diff --git a/site/docs/latest/getting-started/installation.md b/site/docs/latest/getting-started/installation.md
index 9986cd8..7e92b47 100644
--- a/site/docs/latest/getting-started/installation.md
+++ b/site/docs/latest/getting-started/installation.md
@@ -44,6 +44,12 @@ Once you have the BookKeeper on your local machine, either by [downloading](#dow
 $ mvn package
 ```
 
+Since 4.8.0, bookkeeper introduces `table service`. If you would like to build and tryout table service, you can build it with `stream` profile.
+
+```shell
+$ mvn package -Dstream
+```
+
 > You can skip tests by adding the `-DskipTests` flag when running `mvn package`.
 
 ### Useful Maven commands
@@ -60,7 +66,9 @@ Command | Action
 `mvn verify` | Performs a wide variety of verification and validation tasks
 `mvn apache-rat:check` | Run Maven using the [Apache Rat](http://creadur.apache.org/rat/apache-rat-plugin/) plugin
 `mvn compile javadoc:aggregate` | Build Javadocs locally
-`mvn package assembly:single` | Build a complete distribution using the Maven [Assembly](http://maven.apache.org/plugins/maven-assembly-plugin/) plugin
+`mvn -am -pl bookkeeper-dist/server package` | Build a server distribution using the Maven [Assembly](http://maven.apache.org/plugins/maven-assembly-plugin/) plugin
+
+> You can enable `table service` by adding the `-Dstream` flag when running above commands.
 
 ## Package directory
 
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index 685c2e1..9a29f60 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -1,20 +1,22 @@
 <?xml version="1.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.
--->
+  ~ 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
@@ -27,33 +29,37 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
-      <artifactId>bookkeeper-tools-framework</artifactId>
+      <artifactId>bookkeeper-tools-ledger</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
-      <artifactId>bookkeeper-server</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
-      <artifactId>buildtools</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
-      <artifactId>bookkeeper-server</artifactId>
-      <type>test-jar</type>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <version>${maven-antrun-plugin.version}</version>
+        <executions>
+          <execution>
+            <id>append-ledger-commands</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target>
+                <concat destfile="${project.basedir}/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup"
+                        overwrite="true">
+                  <filelist dir="${project.basedir}/../ledger/src/main/resources" files="commands">
+                  </filelist>
+                </concat>
+              </target>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
   <profiles>
     <profile>
       <id>stream</id>
@@ -70,6 +76,33 @@
           <version>${project.version}</version>
         </dependency>
       </dependencies>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <version>${maven-antrun-plugin.version}</version>
+            <executions>
+              <execution>
+                <id>append-stream-commands</id>
+                <phase>generate-resources</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+                <configuration>
+                  <target>
+                    <concat destfile="${project.basedir}/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup"
+                            append="true">
+                      <filelist dir="${project.basedir}/../stream/src/main/resources" files="commands">
+                      </filelist>
+                    </concat>
+                  </target>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
     </profile>
   </profiles>
 </project>
diff --git a/tools/all/pom.xml b/tools/ledger/pom.xml
similarity index 80%
copy from tools/all/pom.xml
copy to tools/ledger/pom.xml
index 685c2e1..6c5182b 100644
--- a/tools/all/pom.xml
+++ b/tools/ledger/pom.xml
@@ -22,8 +22,8 @@
     <groupId>org.apache.bookkeeper</groupId>
     <version>4.9.0-SNAPSHOT</version>
   </parent>
-  <artifactId>bookkeeper-tools</artifactId>
-  <name>Apache BookKeeper :: Tools</name>
+  <artifactId>bookkeeper-tools-ledger</artifactId>
+  <name>Apache BookKeeper :: Tools :: Ledger</name>
   <dependencies>
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
@@ -54,22 +54,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-  <profiles>
-    <profile>
-      <id>stream</id>
-      <activation>
-        <property>
-          <name>stream</name>
-        </property>
-      </activation>
-      <dependencies>
-        <!-- stream.storage -->
-        <dependency>
-          <groupId>org.apache.bookkeeper</groupId>
-          <artifactId>stream-storage-cli</artifactId>
-          <version>${project.version}</version>
-        </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
 </project>
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/BKCtl.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/BKCtl.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/BKCtl.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/BKCtl.java
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookieCommandGroup.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookieCommandGroup.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookieCommandGroup.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookieCommandGroup.java
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookiesCommandGroup.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookiesCommandGroup.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookiesCommandGroup.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/BookiesCommandGroup.java
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/CookieCommandGroup.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/CookieCommandGroup.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/CookieCommandGroup.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/CookieCommandGroup.java
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/LedgerCommandGroup.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/LedgerCommandGroup.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/LedgerCommandGroup.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/LedgerCommandGroup.java
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/package-info.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/package-info.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/commands/package-info.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/commands/package-info.java
diff --git a/tools/all/src/main/java/org/apache/bookkeeper/tools/cli/package-info.java b/tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/package-info.java
similarity index 100%
rename from tools/all/src/main/java/org/apache/bookkeeper/tools/cli/package-info.java
rename to tools/ledger/src/main/java/org/apache/bookkeeper/tools/cli/package-info.java
diff --git a/tools/all/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup b/tools/ledger/src/main/resources/commands
similarity index 82%
copy from tools/all/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup
copy to tools/ledger/src/main/resources/commands
index 0147eca..7ea146b 100644
--- a/tools/all/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup
+++ b/tools/ledger/src/main/resources/commands
@@ -20,7 +20,3 @@ org.apache.bookkeeper.tools.cli.commands.BookieCommandGroup
 org.apache.bookkeeper.tools.cli.commands.BookiesCommandGroup
 org.apache.bookkeeper.tools.cli.commands.CookieCommandGroup
 org.apache.bookkeeper.tools.cli.commands.LedgerCommandGroup
-org.apache.bookkeeper.stream.cli.ClusterCommandGroup
-org.apache.bookkeeper.stream.cli.NamespaceCommandGroup
-org.apache.bookkeeper.stream.cli.TableAdminCommandGroup
-org.apache.bookkeeper.stream.cli.TableCommandGroup
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/LastMarkCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/LastMarkCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/LastMarkCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookie/LastMarkCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookies/ListBookiesCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookies/ListBookiesCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookies/ListBookiesCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/bookies/ListBookiesCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/client/SimpleTestCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/client/SimpleTestCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/client/SimpleTestCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/client/SimpleTestCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/CreateCookieCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/CreateCookieCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/CreateCookieCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/CreateCookieCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/DeleteCookieCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/DeleteCookieCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/DeleteCookieCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/DeleteCookieCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GenerateCookieCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GenerateCookieCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GenerateCookieCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GenerateCookieCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GetCookieCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GetCookieCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GetCookieCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/GetCookieCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/UpdateCookieCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/UpdateCookieCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/UpdateCookieCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/commands/cookie/UpdateCookieCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieCommandTestBase.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieCommandTestBase.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieCommandTestBase.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieCommandTestBase.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieShellCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieShellCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieShellCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/BookieShellCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTestBase.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTestBase.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTestBase.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/ClientCommandTestBase.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CommandTestBase.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CommandTestBase.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CommandTestBase.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CommandTestBase.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CookieCommandTestBase.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CookieCommandTestBase.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CookieCommandTestBase.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/CookieCommandTestBase.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTest.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTest.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTest.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTest.java
diff --git a/tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTestBase.java b/tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTestBase.java
similarity index 100%
rename from tools/all/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTestBase.java
rename to tools/ledger/src/test/java/org/apache/bookkeeper/tools/cli/helpers/DiscoveryCommandTestBase.java
diff --git a/tools/all/src/test/resources/log4j.properties b/tools/ledger/src/test/resources/log4j.properties
similarity index 100%
rename from tools/all/src/test/resources/log4j.properties
rename to tools/ledger/src/test/resources/log4j.properties
diff --git a/tools/pom.xml b/tools/pom.xml
index 2981bbb..c538a6a 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -27,6 +27,7 @@
   <packaging>pom</packaging>
   <modules>
     <module>framework</module>
+    <module>ledger</module>
     <module>all</module>
   </modules>
   <profiles>
diff --git a/tools/all/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup b/tools/stream/src/main/resources/commands
similarity index 80%
rename from tools/all/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup
rename to tools/stream/src/main/resources/commands
index 0147eca..070efbf 100644
--- a/tools/all/src/main/resources/META-INF/services/org.apache.bookkeeper.tools.framework.CommandGroup
+++ b/tools/stream/src/main/resources/commands
@@ -16,10 +16,6 @@
 # limitations under the License.
 #
 
-org.apache.bookkeeper.tools.cli.commands.BookieCommandGroup
-org.apache.bookkeeper.tools.cli.commands.BookiesCommandGroup
-org.apache.bookkeeper.tools.cli.commands.CookieCommandGroup
-org.apache.bookkeeper.tools.cli.commands.LedgerCommandGroup
 org.apache.bookkeeper.stream.cli.ClusterCommandGroup
 org.apache.bookkeeper.stream.cli.NamespaceCommandGroup
 org.apache.bookkeeper.stream.cli.TableAdminCommandGroup