You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ts...@apache.org on 2022/08/07 13:01:33 UTC

[camel-k] 03/09: chore(cli): further refactor kamel local cmds

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

tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit f204d16164506335377009dab483832ca3d61bfc
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Thu Jul 28 18:43:06 2022 +0900

    chore(cli): further refactor kamel local cmds
---
 pkg/cmd/local_build.go          |   9 +-
 pkg/cmd/local_inspect.go        |   2 +-
 pkg/cmd/local_run.go            |  12 +-
 pkg/cmd/local_util.go           | 167 +++++++--------------------
 pkg/cmd/local_util_container.go |  10 +-
 pkg/cmd/local_util_dirs.go      | 244 ++++++++++++++++++++++++++++++++++++++++
 pkg/util/docker/docker.go       |  32 +++---
 pkg/util/util.go                | 156 -------------------------
 8 files changed, 316 insertions(+), 316 deletions(-)

diff --git a/pkg/cmd/local_build.go b/pkg/cmd/local_build.go
index 079bf0dc3..181f58979 100644
--- a/pkg/cmd/local_build.go
+++ b/pkg/cmd/local_build.go
@@ -160,7 +160,7 @@ func (o *localBuildCmdOptions) run(cmd *cobra.Command, args []string) error {
 	var dependenciesList, propertyFilesList []string
 	routeFiles := args
 	if !o.BaseImage {
-		dependencies, err := GetDependencies(o.Context, args, o.Dependencies, o.MavenRepositories, true)
+		dependencies, err := getDependencies(o.Context, args, o.Dependencies, o.MavenRepositories, true)
 		if err != nil {
 			return err
 		}
@@ -176,12 +176,13 @@ func (o *localBuildCmdOptions) run(cmd *cobra.Command, args []string) error {
 
 		dependenciesList = dependencies
 		propertyFilesList = propertyFiles
+
 		if o.IntegrationDirectory != "" {
 			// Create dependencies subdirectory.
 			localDependenciesDirectory := getCustomDependenciesDir(o.IntegrationDirectory)
 
 			// Copy dependencies in persistent IntegrationDirectory/dependencies
-			dependenciesList, err = CopyIntegrationFilesToDirectory(dependencies, localDependenciesDirectory)
+			dependenciesList, err = copyIntegrationFilesToDirectory(dependencies, localDependenciesDirectory)
 			if err != nil {
 				return err
 			}
@@ -195,7 +196,7 @@ func (o *localBuildCmdOptions) run(cmd *cobra.Command, args []string) error {
 			localPropertiesDirectory := getCustomPropertiesDir(o.IntegrationDirectory)
 
 			// Copy dependencies in persistent IntegrationDirectory/dependencies
-			propertyFilesList, err = CopyIntegrationFilesToDirectory(propertyFiles, localPropertiesDirectory)
+			propertyFilesList, err = copyIntegrationFilesToDirectory(propertyFiles, localPropertiesDirectory)
 			if err != nil {
 				return err
 			}
@@ -204,7 +205,7 @@ func (o *localBuildCmdOptions) run(cmd *cobra.Command, args []string) error {
 			localRoutesDirectory := getCustomRoutesDir(o.IntegrationDirectory)
 
 			// Copy routes in persistent IntegrationDirectory/dependencies
-			routeFiles, err = CopyIntegrationFilesToDirectory(args, localRoutesDirectory)
+			routeFiles, err = copyIntegrationFilesToDirectory(args, localRoutesDirectory)
 			if err != nil {
 				return err
 			}
diff --git a/pkg/cmd/local_inspect.go b/pkg/cmd/local_inspect.go
index f5e523bc1..1c180d56b 100644
--- a/pkg/cmd/local_inspect.go
+++ b/pkg/cmd/local_inspect.go
@@ -87,7 +87,7 @@ func (o *localInspectCmdOptions) init() error {
 }
 
 func (o *localInspectCmdOptions) run(cmd *cobra.Command, args []string) error {
-	dependencies, err := GetDependencies(o.Context, args, o.Dependencies, o.MavenRepositories, o.AllDependencies)
+	dependencies, err := getDependencies(o.Context, args, o.Dependencies, o.MavenRepositories, o.AllDependencies)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/cmd/local_run.go b/pkg/cmd/local_run.go
index ad6f77ce3..951e455f3 100644
--- a/pkg/cmd/local_run.go
+++ b/pkg/cmd/local_run.go
@@ -25,8 +25,6 @@ import (
 
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
-
-	"github.com/apache/camel-k/pkg/util"
 )
 
 func newCmdLocalRun(localCmdOptions *LocalCmdOptions) (*cobra.Command, *localRunCmdOptions) {
@@ -171,7 +169,7 @@ func (o *localRunCmdOptions) run(cmd *cobra.Command, args []string) error {
 		// <integration_directory>/../quarkus/quarkus-application.dat
 		// <integration_directory>/../quarkus/generated-bytecode.jar
 		localQuarkusDir := getCustomQuarkusDir(o.IntegrationDirectory)
-		err = CopyQuarkusAppFiles(localDependenciesDirectory, localQuarkusDir)
+		err = copyQuarkusAppFiles(localDependenciesDirectory, localQuarkusDir)
 		if err != nil {
 			return err
 		}
@@ -179,7 +177,7 @@ func (o *localRunCmdOptions) run(cmd *cobra.Command, args []string) error {
 		// The dependency jar files need to be at a specific location i.e.:
 		// <integration_directory>/../lib/main/*.jar
 		localLibDirectory := getCustomLibDir(o.IntegrationDirectory)
-		err = CopyLibFiles(localDependenciesDirectory, localLibDirectory)
+		err = copyLibFiles(localDependenciesDirectory, localLibDirectory)
 		if err != nil {
 			return err
 		}
@@ -187,12 +185,12 @@ func (o *localRunCmdOptions) run(cmd *cobra.Command, args []string) error {
 		// The Camel K jar file needs to be at a specific location i.e.:
 		// <integration_directory>/../app/camel-k-integration-X.X.X{-SNAPSHOT}.jar
 		localAppDirectory := getCustomAppDir(o.IntegrationDirectory)
-		err = CopyAppFile(localDependenciesDirectory, localAppDirectory)
+		err = copyAppFile(localDependenciesDirectory, localAppDirectory)
 		if err != nil {
 			return err
 		}
 	} else {
-		computedDependencies, err := GetDependencies(o.Context, args, o.Dependencies, o.MavenRepositories, true)
+		computedDependencies, err := getDependencies(o.Context, args, o.Dependencies, o.MavenRepositories, true)
 		if err != nil {
 			return err
 		}
@@ -238,7 +236,7 @@ func (o *localRunCmdOptions) run(cmd *cobra.Command, args []string) error {
 			return err
 		}
 	} else {
-		propertiesDir := util.GetLocalPropertiesDir()
+		propertiesDir := getLocalPropertiesDir()
 		if hasIntegrationDir {
 			propertiesDir = getCustomPropertiesDir(o.IntegrationDirectory)
 		}
diff --git a/pkg/cmd/local_util.go b/pkg/cmd/local_util.go
index 3ecd9adc7..67ea7f905 100644
--- a/pkg/cmd/local_util.go
+++ b/pkg/cmd/local_util.go
@@ -44,8 +44,8 @@ var acceptedDependencyTypes = []string{
 	"github", "gitlab", "bitbucket", "gitee", "azure",
 }
 
-// GetDependencies resolves and gets the list of dependencies from catalog and sources.
-func GetDependencies(ctx context.Context, args []string, additionalDependencies []string, repositories []string, allDependencies bool) ([]string, error) {
+// getDependencies resolves and gets the list of dependencies from catalog and sources.
+func getDependencies(ctx context.Context, args []string, additionalDependencies []string, repositories []string, allDependencies bool) ([]string, error) {
 	// Fetch existing catalog or create new one if one does not already exist
 	catalog, err := createCamelCatalog(ctx)
 	if err != nil {
@@ -114,7 +114,7 @@ func getTransitiveDependencies(ctx context.Context, catalog *camel.RuntimeCatalo
 		return nil, err
 	}
 
-	mc := maven.NewContext(util.MavenWorkingDirectory)
+	mc := maven.NewContext(MavenWorkingDirectory)
 	mc.LocalRepository = ""
 
 	if len(repositories) > 0 {
@@ -150,27 +150,31 @@ func getTransitiveDependencies(ctx context.Context, catalog *camel.RuntimeCatalo
 	return transitiveDependencies, nil
 }
 
-func getRegularFilesInDir(directory string) ([]string, error) {
+func getRegularFilesInDir(directory string, dirnameInPath bool) ([]string, error) {
 	var dirFiles []string
 	files, err := ioutil.ReadDir(directory)
+	if err != nil {
+		return nil, err
+	}
+
 	for _, file := range files {
 		fileName := file.Name()
 
 		// Do not include hidden files or sub-directories.
 		if !file.IsDir() && !strings.HasPrefix(fileName, ".") {
-			dirFiles = append(dirFiles, path.Join(directory, fileName))
+			if dirnameInPath {
+				dirFiles = append(dirFiles, path.Join(directory, fileName))
+			} else {
+				dirFiles = append(dirFiles, fileName)
+			}
 		}
 	}
 
-	if err != nil {
-		return nil, err
-	}
-
 	return dirFiles, nil
 }
 
 func getLocalBuildDependencies(integrationDirectory string) ([]string, error) {
-	locallyBuiltDependencies, err := getRegularFilesInDir(getCustomDependenciesDir(integrationDirectory))
+	locallyBuiltDependencies, err := getRegularFilesInDir(getCustomDependenciesDir(integrationDirectory), true)
 	if err != nil {
 		return nil, err
 	}
@@ -178,7 +182,7 @@ func getLocalBuildDependencies(integrationDirectory string) ([]string, error) {
 }
 
 func getLocalBuildProperties(integrationDirectory string) ([]string, error) {
-	locallyBuiltProperties, err := getRegularFilesInDir(getCustomPropertiesDir(integrationDirectory))
+	locallyBuiltProperties, err := getRegularFilesInDir(getCustomPropertiesDir(integrationDirectory), true)
 	if err != nil {
 		return nil, err
 	}
@@ -186,7 +190,7 @@ func getLocalBuildProperties(integrationDirectory string) ([]string, error) {
 }
 
 func getLocalBuildRoutes(integrationDirectory string) ([]string, error) {
-	locallyBuiltRoutes, err := getRegularFilesInDir(getCustomRoutesDir(integrationDirectory))
+	locallyBuiltRoutes, err := getRegularFilesInDir(getCustomRoutesDir(integrationDirectory), true)
 	if err != nil {
 		return nil, err
 	}
@@ -347,17 +351,15 @@ func validatePropertyFile(fileName string) error {
 func updateIntegrationProperties(properties []string, propertyFiles []string, hasIntegrationDir bool) ([]string, error) {
 	// Create properties directory under Maven working directory.
 	// This ensures that property files of different integrations do not clash.
-	err := util.CreateLocalPropertiesDirectory()
-	if err != nil {
+	if err := createLocalPropertiesDirectory(); err != nil {
 		return nil, err
 	}
 
 	// Relocate properties files to this integration's property directory.
 	relocatedPropertyFiles := []string{}
 	for _, propertyFile := range propertyFiles {
-		relocatedPropertyFile := path.Join(util.GetLocalPropertiesDir(), path.Base(propertyFile))
-		_, err = util.CopyFile(propertyFile, relocatedPropertyFile)
-		if err != nil {
+		relocatedPropertyFile := path.Join(getLocalPropertiesDir(), path.Base(propertyFile))
+		if _, err := util.CopyFile(propertyFile, relocatedPropertyFile); err != nil {
 			return nil, err
 		}
 		relocatedPropertyFiles = append(relocatedPropertyFiles, relocatedPropertyFile)
@@ -366,9 +368,8 @@ func updateIntegrationProperties(properties []string, propertyFiles []string, ha
 	if !hasIntegrationDir {
 		// Output list of properties to property file if any CLI properties were given.
 		if len(properties) > 0 {
-			propertyFilePath := path.Join(util.GetLocalPropertiesDir(), "CLI.properties")
-			err = ioutil.WriteFile(propertyFilePath, []byte(strings.Join(properties, "\n")), 0o600)
-			if err != nil {
+			propertyFilePath := path.Join(getLocalPropertiesDir(), "CLI.properties")
+			if err := ioutil.WriteFile(propertyFilePath, []byte(strings.Join(properties, "\n")), 0o600); err != nil {
 				return nil, err
 			}
 			relocatedPropertyFiles = append(relocatedPropertyFiles, propertyFilePath)
@@ -381,7 +382,7 @@ func updateIntegrationProperties(properties []string, propertyFiles []string, ha
 func updateIntegrationDependencies(dependencies []string) error {
 	// Create dependencies directory under Maven working directory.
 	// This ensures that dependencies will be removed after they are not needed.
-	err := util.CreateLocalDependenciesDirectory()
+	err := createLocalDependenciesDirectory()
 	if err != nil {
 		return err
 	}
@@ -391,9 +392,9 @@ func updateIntegrationDependencies(dependencies []string) error {
 		var targetPath string
 		basePath := util.SubstringFrom(dependency, util.QuarkusDependenciesBaseDirectory)
 		if basePath != "" {
-			targetPath = path.Join(util.GetLocalDependenciesDir(), basePath)
+			targetPath = path.Join(getLocalDependenciesDir(), basePath)
 		} else {
-			targetPath = path.Join(util.GetLocalDependenciesDir(), path.Base(dependency))
+			targetPath = path.Join(getLocalDependenciesDir(), path.Base(dependency))
 		}
 		_, err = util.CopyFile(dependency, targetPath)
 		if err != nil {
@@ -405,13 +406,13 @@ func updateIntegrationDependencies(dependencies []string) error {
 }
 
 func updateIntegrationRoutes(routes []string) error {
-	err := util.CreateLocalRoutesDirectory()
+	err := createLocalRoutesDirectory()
 	if err != nil {
 		return err
 	}
 
 	for _, route := range routes {
-		_, err = util.CopyFile(route, path.Join(util.GetLocalRoutesDir(), path.Base(route)))
+		_, err = util.CopyFile(route, path.Join(getLocalRoutesDir(), path.Base(route)))
 		if err != nil {
 			return err
 		}
@@ -421,104 +422,42 @@ func updateIntegrationRoutes(routes []string) error {
 }
 
 func updateQuarkusDirectory() error {
-	err := util.CreateLocalQuarkusDirectory()
+	err := createLocalQuarkusDirectory()
 	if err != nil {
 		return err
 	}
 
 	// ignore error if custom dir doesn't exist
-	_ = CopyQuarkusAppFiles(util.CustomQuarkusDirectoryName, util.GetLocalQuarkusDir())
+	_ = copyQuarkusAppFiles(util.CustomQuarkusDirectoryName, getLocalQuarkusDir())
 
 	return nil
 }
 
 func updateAppDirectory() error {
-	err := util.CreateLocalAppDirectory()
+	err := createLocalAppDirectory()
 	if err != nil {
 		return err
 	}
 
 	// ignore error if custom dir doesn't exist
-	_ = CopyAppFile(util.CustomAppDirectoryName, util.GetLocalAppDir())
+	_ = copyAppFile(util.CustomAppDirectoryName, getLocalAppDir())
 
 	return nil
 }
 
 func updateLibDirectory() error {
-	err := util.CreateLocalLibDirectory()
+	err := createLocalLibDirectory()
 	if err != nil {
 		return err
 	}
 
 	// ignore error if custom dir doesn't exist
-	_ = CopyLibFiles(util.CustomLibDirectoryName, util.GetLocalLibDir())
-
-	return nil
-}
-
-func createMavenWorkingDirectory() error {
-	// Create local Maven context
-	temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")
-	if err != nil {
-		return err
-	}
-
-	// Set the Maven directory to the default value
-	util.MavenWorkingDirectory = temporaryDirectory
-
-	return nil
-}
-
-func deleteMavenWorkingDirectory() error {
-	// Remove directory used for computing the dependencies
-	return os.RemoveAll(util.MavenWorkingDirectory)
-}
-
-func getCustomDependenciesDir(integrationDirectory string) string {
-	return path.Join(integrationDirectory, "dependencies")
-}
-
-func getCustomPropertiesDir(integrationDirectory string) string {
-	return path.Join(integrationDirectory, "properties")
-}
-
-func getCustomRoutesDir(integrationDirectory string) string {
-	return path.Join(integrationDirectory, "routes")
-}
-
-func getCustomQuarkusDir(integrationDirectory string) string {
-	parentDir := path.Dir(strings.TrimSuffix(integrationDirectory, "/"))
-	return path.Join(parentDir, "quarkus")
-}
-
-func getCustomLibDir(integrationDirectory string) string {
-	parentDir := path.Dir(strings.TrimSuffix(integrationDirectory, "/"))
-	return path.Join(parentDir, "lib/main")
-}
-
-func getCustomAppDir(integrationDirectory string) string {
-	parentDir := path.Dir(strings.TrimSuffix(integrationDirectory, "/"))
-	return path.Join(parentDir, "app")
-}
-
-func deleteLocalIntegrationDirs(integrationDirectory string) error {
-	dirs := []string{
-		getCustomQuarkusDir(integrationDirectory),
-		getCustomLibDir(integrationDirectory),
-		getCustomAppDir(integrationDirectory),
-	}
-
-	for _, dir := range dirs {
-		err := os.RemoveAll(dir)
-		if err != nil {
-			return err
-		}
-	}
+	_ = copyLibFiles(util.CustomLibDirectoryName, getLocalLibDir())
 
 	return nil
 }
 
-func CopyIntegrationFilesToDirectory(files []string, directory string) ([]string, error) {
+func copyIntegrationFilesToDirectory(files []string, directory string) ([]string, error) {
 	// Create directory if one does not already exist
 	if err := util.CreateDirectory(directory); err != nil {
 		return nil, err
@@ -538,15 +477,14 @@ func CopyIntegrationFilesToDirectory(files []string, directory string) ([]string
 	return relocatedFilesList, nil
 }
 
-func CopyQuarkusAppFiles(localDependenciesDirectory string, localQuarkusDir string) error {
+func copyQuarkusAppFiles(localDependenciesDirectory string, localQuarkusDir string) error {
 	// Create directory if one does not already exist
-	err := util.CreateDirectory(localQuarkusDir)
-	if err != nil {
+	if err := util.CreateDirectory(localQuarkusDir); err != nil {
 		return err
 	}
 
 	// Transfer all files with a .dat extension and all files with a *-bytecode.jar suffix.
-	files, err := getRegularFileNamesInDir(localDependenciesDirectory)
+	files, err := getRegularFilesInDir(localDependenciesDirectory, false)
 	if err != nil {
 		return err
 	}
@@ -564,14 +502,13 @@ func CopyQuarkusAppFiles(localDependenciesDirectory string, localQuarkusDir stri
 	return nil
 }
 
-func CopyLibFiles(localDependenciesDirectory string, localLibDirectory string) error {
+func copyLibFiles(localDependenciesDirectory string, localLibDirectory string) error {
 	// Create directory if one does not already exist
-	err := util.CreateDirectory(localLibDirectory)
-	if err != nil {
+	if err := util.CreateDirectory(localLibDirectory); err != nil {
 		return err
 	}
 
-	fileNames, err := getRegularFileNamesInDir(localDependenciesDirectory)
+	fileNames, err := getRegularFilesInDir(localDependenciesDirectory, false)
 	if err != nil {
 		return err
 	}
@@ -588,14 +525,13 @@ func CopyLibFiles(localDependenciesDirectory string, localLibDirectory string) e
 	return nil
 }
 
-func CopyAppFile(localDependenciesDirectory string, localAppDirectory string) error {
+func copyAppFile(localDependenciesDirectory string, localAppDirectory string) error {
 	// Create directory if one does not already exist
-	err := util.CreateDirectory(localAppDirectory)
-	if err != nil {
+	if err := util.CreateDirectory(localAppDirectory); err != nil {
 		return err
 	}
 
-	fileNames, err := getRegularFileNamesInDir(localDependenciesDirectory)
+	fileNames, err := getRegularFilesInDir(localDependenciesDirectory, false)
 	if err != nil {
 		return err
 	}
@@ -613,22 +549,3 @@ func CopyAppFile(localDependenciesDirectory string, localAppDirectory string) er
 
 	return nil
 }
-
-func getRegularFileNamesInDir(directory string) ([]string, error) {
-	var dirFiles []string
-	files, err := ioutil.ReadDir(directory)
-	for _, file := range files {
-		fileName := file.Name()
-
-		// Do not include hidden files or sub-directories.
-		if !file.IsDir() && !strings.HasPrefix(fileName, ".") {
-			dirFiles = append(dirFiles, fileName)
-		}
-	}
-
-	if err != nil {
-		return nil, err
-	}
-
-	return dirFiles, nil
-}
diff --git a/pkg/cmd/local_util_container.go b/pkg/cmd/local_util_container.go
index 64e9dd886..e03824b7c 100644
--- a/pkg/cmd/local_util_container.go
+++ b/pkg/cmd/local_util_container.go
@@ -35,8 +35,8 @@ import (
 
 // Local Docker file system management functions.
 
+// createDockerBaseWorkingDirectory creates local docker base directory.
 func createDockerBaseWorkingDirectory() error {
-	// Create local docker base directory.
 	temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "docker-base-")
 	if err != nil {
 		return err
@@ -48,13 +48,13 @@ func createDockerBaseWorkingDirectory() error {
 	return nil
 }
 
+// deleteDockerBaseWorkingDirectory removes directory used for computing the base dependencies.
 func deleteDockerBaseWorkingDirectory() error {
-	// Remove directory used for computing the dependencies.
 	return os.RemoveAll(docker.BaseWorkingDirectory)
 }
 
+// createDockerWorkingDirectory creates local docker directory.
 func createDockerWorkingDirectory() error {
-	// Create local docker base directory.
 	temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "docker-")
 	if err != nil {
 		return err
@@ -66,8 +66,8 @@ func createDockerWorkingDirectory() error {
 	return nil
 }
 
+// deleteDockerWorkingDirectory removes directory used for computing the integration dependencies.
 func deleteDockerWorkingDirectory() error {
-	// Remove directory used for computing the dependencies.
 	return os.RemoveAll(docker.IntegrationWorkingDirectory)
 }
 
@@ -180,7 +180,7 @@ func createAndBuildIntegrationImage(ctx context.Context, containerRegistry strin
 	}
 
 	// Get the Docker command arguments for building the base image and create the command.
-	args := docker.BuildIntegrationImageArgs(image)
+	args := docker.BuildIntegrationImageArgs(image, MavenWorkingDirectory)
 	cmd := exec.CommandContext(ctx, "docker", args...)
 
 	// Set stdout and stderr.
diff --git a/pkg/cmd/local_util_dirs.go b/pkg/cmd/local_util_dirs.go
new file mode 100644
index 000000000..7d0311d12
--- /dev/null
+++ b/pkg/cmd/local_util_dirs.go
@@ -0,0 +1,244 @@
+/*
+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.
+*/
+
+package cmd
+
+import (
+	"io/ioutil"
+	"os"
+	"path"
+	"strings"
+
+	"github.com/apache/camel-k/pkg/util"
+)
+
+// MavenWorkingDirectory is the directory used by Maven for an invocation of the kamel local command.
+// By default, a temporary folder will be used.
+var MavenWorkingDirectory = ""
+
+// createMavenWorkingDirectory creates local Maven working directory.
+func createMavenWorkingDirectory() error {
+	temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")
+	if err != nil {
+		return err
+	}
+
+	// Set the Maven directory to the default value
+	MavenWorkingDirectory = temporaryDirectory
+
+	return nil
+}
+
+// deleteMavenWorkingDirectory removes local Maven working directory.
+func deleteMavenWorkingDirectory() error {
+	return os.RemoveAll(MavenWorkingDirectory)
+}
+
+// getLocalDependenciesDir returns <mavenWorkingDirectory>/dependencies.
+func getLocalDependenciesDir() string {
+	return path.Join(MavenWorkingDirectory, util.DefaultDependenciesDirectoryName)
+}
+
+func createLocalDependenciesDirectory() error {
+	// Do not create a directory unless the maven directory contains a valid value.
+	if MavenWorkingDirectory == "" {
+		return nil
+	}
+
+	directoryExists, err := util.DirectoryExists(getLocalDependenciesDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		if err := os.MkdirAll(getLocalDependenciesDir(), 0o700); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// getLocalPropertiesDir returns <mavenWorkingDirectory>/properties.
+func getLocalPropertiesDir() string {
+	return path.Join(MavenWorkingDirectory, util.DefaultPropertiesDirectoryName)
+}
+
+func createLocalPropertiesDirectory() error {
+	// Do not create a directory unless the maven directory contains a valid value.
+	if MavenWorkingDirectory == "" {
+		return nil
+	}
+
+	directoryExists, err := util.DirectoryExists(getLocalPropertiesDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		err := os.MkdirAll(getLocalPropertiesDir(), 0o700)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// getLocalRoutesDir returns <mavenWorkingDirectory>/routes.
+func getLocalRoutesDir() string {
+	return path.Join(MavenWorkingDirectory, util.DefaultRoutesDirectoryName)
+}
+
+func createLocalRoutesDirectory() error {
+	// Do not create a directory unless the maven directory contains a valid value.
+	if MavenWorkingDirectory == "" {
+		return nil
+	}
+
+	directoryExists, err := util.DirectoryExists(getLocalRoutesDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		if err := os.MkdirAll(getLocalRoutesDir(), 0o700); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// getLocalQuarkusDir returns <mavenWorkingDirectory>/quarkus.
+func getLocalQuarkusDir() string {
+	return path.Join(MavenWorkingDirectory, util.CustomQuarkusDirectoryName)
+}
+
+func createLocalQuarkusDirectory() error {
+	// Do not create a directory unless the maven directory contains a valid value.
+	if MavenWorkingDirectory == "" {
+		return nil
+	}
+
+	directoryExists, err := util.DirectoryExists(getLocalQuarkusDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		if err := os.MkdirAll(getLocalQuarkusDir(), 0o700); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// getLocalAppDir returns <mavenWorkingDirectory>/app.
+func getLocalAppDir() string {
+	return path.Join(MavenWorkingDirectory, util.CustomAppDirectoryName)
+}
+
+func createLocalAppDirectory() error {
+	// Do not create a directory unless the maven directory contains a valid value.
+	if MavenWorkingDirectory == "" {
+		return nil
+	}
+
+	directoryExists, err := util.DirectoryExists(getLocalAppDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		if err := os.MkdirAll(getLocalAppDir(), 0o700); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// getLocalLibDir returns <mavenWorkingDirectory>/lib/main.
+func getLocalLibDir() string {
+	return path.Join(MavenWorkingDirectory, util.CustomLibDirectoryName)
+}
+
+func createLocalLibDirectory() error {
+	// Do not create a directory unless the maven directory contains a valid value.
+	if MavenWorkingDirectory == "" {
+		return nil
+	}
+
+	directoryExists, err := util.DirectoryExists(getLocalLibDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		if err := os.MkdirAll(getLocalLibDir(), 0o700); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func getCustomDependenciesDir(dir string) string {
+	return path.Join(dir, util.DefaultDependenciesDirectoryName)
+}
+
+func getCustomPropertiesDir(dir string) string {
+	return path.Join(dir, util.DefaultPropertiesDirectoryName)
+}
+
+func getCustomRoutesDir(dir string) string {
+	return path.Join(dir, util.DefaultRoutesDirectoryName)
+}
+
+func getCustomQuarkusDir(dir string) string {
+	parentDir := path.Dir(strings.TrimSuffix(dir, "/"))
+	return path.Join(parentDir, util.CustomQuarkusDirectoryName)
+}
+
+func getCustomLibDir(dir string) string {
+	parentDir := path.Dir(strings.TrimSuffix(dir, "/"))
+	return path.Join(parentDir, util.CustomLibDirectoryName)
+}
+
+func getCustomAppDir(dir string) string {
+	parentDir := path.Dir(strings.TrimSuffix(dir, "/"))
+	return path.Join(parentDir, "app")
+}
+
+func deleteLocalIntegrationDirs(dir string) error {
+	dirs := []string{
+		getCustomQuarkusDir(dir),
+		getCustomLibDir(dir),
+		getCustomAppDir(dir),
+	}
+
+	for _, dir := range dirs {
+		err := os.RemoveAll(dir)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
diff --git a/pkg/util/docker/docker.go b/pkg/util/docker/docker.go
index 38bf8a0e9..a053434c9 100644
--- a/pkg/util/docker/docker.go
+++ b/pkg/util/docker/docker.go
@@ -92,31 +92,27 @@ func CreateIntegrationImageDockerFile(integrationRunCmd *exec.Cmd, startsFromLoc
 	return nil
 }
 
-// BuildBaseImageArgs --.
+// BuildBaseImageArgs constructs the docker command:
+//
+// docker build -f <BaseWorkingDirectory>/Dockerfile -t <dockerRegistry>/<BaseImageName> <BaseWorkingDirectory>.
+//
 func BuildBaseImageArgs() []string {
-	// Construct the docker command:
-	//
-	// docker build -f <BaseWorkingDirectory>/Dockerfile -t <dockerRegistry>/<BaseImageName> <BaseWorkingDirectory>
-	//
-	// Add register
 	return BuildImageArgs(BaseWorkingDirectory, GetBaseImagePath(), BaseWorkingDirectory)
 }
 
-// BuildIntegrationImageArgs --.
-func BuildIntegrationImageArgs(imagePath string) []string {
-	// Construct the docker command:
-	//
-	// docker build -f <BaseWorkingDirectory>/Dockerfile -t <imagePath> <MavenWorkingDirectory>
-	//
-	return BuildImageArgs(IntegrationWorkingDirectory, imagePath, util.MavenWorkingDirectory)
+// BuildIntegrationImageArgs constructs the docker command:
+//
+// docker build -f <BaseWorkingDirectory>/Dockerfile -t <imagePath> <mavenWorkingDirectory>.
+//
+func BuildIntegrationImageArgs(imagePath string, mavenWorkingDirectory string) []string {
+	return BuildImageArgs(IntegrationWorkingDirectory, imagePath, mavenWorkingDirectory)
 }
 
-// RunIntegrationImageArgs --.
+// RunIntegrationImageArgs constructs the docker command:
+//
+// docker run --network=<network-name> --env LAZY_ENV_VAR=value <dockerRegistry>/<ImageName>.
+//
 func RunIntegrationImageArgs(imagePath string) ([]string, error) {
-	// Construct the docker command:
-	//
-	// docker run --network=<network-name> --env LAZY_ENV_VAR=value <dockerRegistry>/<ImageName>
-	//
 	return RunImageArgs(imagePath, latestTag)
 }
 
diff --git a/pkg/util/util.go b/pkg/util/util.go
index 45e02c0b9..878c5913d 100644
--- a/pkg/util/util.go
+++ b/pkg/util/util.go
@@ -44,10 +44,6 @@ import (
 
 // Directories and file names:
 
-// MavenWorkingDirectory is the directory used by Maven for an invocation of the kamel local command.
-// By default, a temporary folder will be used.
-var MavenWorkingDirectory = ""
-
 // DefaultDependenciesDirectoryName --.
 const DefaultDependenciesDirectoryName = "dependencies"
 
@@ -479,158 +475,6 @@ func WriteToFile(filePath string, fileContents string) error {
 	return nil
 }
 
-// Local directories:
-
-// GetLocalPropertiesDir -- <mavenWorkingDirectory>/properties.
-func GetLocalPropertiesDir() string {
-	return path.Join(MavenWorkingDirectory, DefaultPropertiesDirectoryName)
-}
-
-// GetLocalDependenciesDir --<mavenWorkingDirectory>/dependencies.
-func GetLocalDependenciesDir() string {
-	return path.Join(MavenWorkingDirectory, DefaultDependenciesDirectoryName)
-}
-
-// GetLocalRoutesDir -- <mavenWorkingDirectory>/routes.
-func GetLocalRoutesDir() string {
-	return path.Join(MavenWorkingDirectory, DefaultRoutesDirectoryName)
-}
-
-// GetLocalQuarkusDir -- <mavenWorkingDirectory>/quarkus.
-func GetLocalQuarkusDir() string {
-	return path.Join(MavenWorkingDirectory, CustomQuarkusDirectoryName)
-}
-
-// GetLocalAppDir -- <mavenWorkingDirectory>/app.
-func GetLocalAppDir() string {
-	return path.Join(MavenWorkingDirectory, CustomAppDirectoryName)
-}
-
-// GetLocalLibDir -- <mavenWorkingDirectory>/lib/main.
-func GetLocalLibDir() string {
-	return path.Join(MavenWorkingDirectory, CustomLibDirectoryName)
-}
-
-func CreateLocalPropertiesDirectory() error {
-	// Do not create a directory unless the maven directory contains a valid value.
-	if MavenWorkingDirectory == "" {
-		return nil
-	}
-
-	directoryExists, err := DirectoryExists(GetLocalPropertiesDir())
-	if err != nil {
-		return err
-	}
-
-	if !directoryExists {
-		err := os.MkdirAll(GetLocalPropertiesDir(), 0o700)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func CreateLocalDependenciesDirectory() error {
-	// Do not create a directory unless the maven directory contains a valid value.
-	if MavenWorkingDirectory == "" {
-		return nil
-	}
-
-	directoryExists, err := DirectoryExists(GetLocalDependenciesDir())
-	if err != nil {
-		return err
-	}
-
-	if !directoryExists {
-		err := os.MkdirAll(GetLocalDependenciesDir(), 0o700)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func CreateLocalRoutesDirectory() error {
-	// Do not create a directory unless the maven directory contains a valid value.
-	if MavenWorkingDirectory == "" {
-		return nil
-	}
-
-	directoryExists, err := DirectoryExists(GetLocalRoutesDir())
-	if err != nil {
-		return err
-	}
-
-	if !directoryExists {
-		err := os.MkdirAll(GetLocalRoutesDir(), 0o700)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func CreateLocalQuarkusDirectory() error {
-	// Do not create a directory unless the maven directory contains a valid value.
-	if MavenWorkingDirectory == "" {
-		return nil
-	}
-
-	directoryExists, err := DirectoryExists(GetLocalQuarkusDir())
-	if err != nil {
-		return err
-	}
-
-	if !directoryExists {
-		err := os.MkdirAll(GetLocalQuarkusDir(), 0o700)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func CreateLocalAppDirectory() error {
-	// Do not create a directory unless the maven directory contains a valid value.
-	if MavenWorkingDirectory == "" {
-		return nil
-	}
-
-	directoryExists, err := DirectoryExists(GetLocalAppDir())
-	if err != nil {
-		return err
-	}
-
-	if !directoryExists {
-		err := os.MkdirAll(GetLocalAppDir(), 0o700)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func CreateLocalLibDirectory() error {
-	// Do not create a directory unless the maven directory contains a valid value.
-	if MavenWorkingDirectory == "" {
-		return nil
-	}
-
-	directoryExists, err := DirectoryExists(GetLocalLibDir())
-	if err != nil {
-		return err
-	}
-
-	if !directoryExists {
-		err := os.MkdirAll(GetLocalLibDir(), 0o700)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
 func GetEnvironmentVariable(variable string) (string, error) {
 	value, isPresent := os.LookupEnv(variable)
 	if !isPresent {