diff --git a/.gitignore b/.gitignore
index ca03ce79c..d7727ef55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,7 @@ target
.project
.idea
artifactrepo
+apt_generated
# Windows image file caches
Thumbs.db
diff --git a/hawkbit-artifact-repository-filesystem/.gitignore b/hawkbit-artifact-repository-filesystem/.gitignore
deleted file mode 100644
index d10db0bcb..000000000
--- a/hawkbit-artifact-repository-filesystem/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/artifactrepo/*
-/.apt_generated/
diff --git a/hawkbit-artifact/hawkbit-artifact-api/README.md b/hawkbit-artifact/hawkbit-artifact-api/README.md
new file mode 100644
index 000000000..49dc970ba
--- /dev/null
+++ b/hawkbit-artifact/hawkbit-artifact-api/README.md
@@ -0,0 +1,3 @@
+# hawkBit Artifact API
+
+Various internal interfaces artifact API classes.
\ No newline at end of file
diff --git a/hawkbit-artifact/hawkbit-artifact-api/pom.xml b/hawkbit-artifact/hawkbit-artifact-api/pom.xml
new file mode 100644
index 000000000..d648cf997
--- /dev/null
+++ b/hawkbit-artifact/hawkbit-artifact-api/pom.xml
@@ -0,0 +1,46 @@
+
+
+ 4.0.0
+
+ org.eclipse.hawkbit
+ hawkbit-artifact-parent
+ ${revision}
+
+
+ hawkbit-artifact-api
+ hawkBit :: Artifact Repository :: API
+
+
+
+ org.springframework.boot
+ spring-boot
+
+
+ org.springframework.security
+ spring-security-config
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+
+
+
+
+ io.github.classgraph
+ classgraph
+ test
+
+
+
\ No newline at end of file
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactRepository.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactRepository.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactRepository.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactRepository.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStoreException.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStoreException.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStoreException.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStoreException.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/HashNotMatchException.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/HashNotMatchException.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/HashNotMatchException.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/HashNotMatchException.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/AbstractDbArtifact.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/model/AbstractDbArtifact.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/AbstractDbArtifact.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/model/AbstractDbArtifact.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ApiType.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ApiType.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ApiType.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ApiType.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrl.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrl.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrl.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrl.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandler.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandler.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandler.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandler.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandlerProperties.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandlerProperties.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandlerProperties.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ArtifactUrlHandlerProperties.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62Util.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62Util.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62Util.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62Util.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandler.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandler.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandler.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandler.java
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholder.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholder.java
similarity index 100%
rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholder.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholder.java
diff --git a/hawkbit-core/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62UtilTest.java b/hawkbit-artifact/hawkbit-artifact-api/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62UtilTest.java
similarity index 100%
rename from hawkbit-core/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62UtilTest.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/Base62UtilTest.java
diff --git a/hawkbit-core/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandlerTest.java b/hawkbit-artifact/hawkbit-artifact-api/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandlerTest.java
similarity index 100%
rename from hawkbit-core/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandlerTest.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/PropertyBasedArtifactUrlHandlerTest.java
diff --git a/hawkbit-core/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholderTest.java b/hawkbit-artifact/hawkbit-artifact-api/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholderTest.java
similarity index 100%
rename from hawkbit-core/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholderTest.java
rename to hawkbit-artifact/hawkbit-artifact-api/src/test/java/org/eclipse/hawkbit/artifact/repository/urlhandler/URLPlaceholderTest.java
diff --git a/hawkbit-artifact-repository-filesystem/README.md b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/README.md
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/README.md
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/README.md
diff --git a/hawkbit-artifact-repository-filesystem/pom.xml b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/pom.xml
similarity index 92%
rename from hawkbit-artifact-repository-filesystem/pom.xml
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/pom.xml
index 92c8a330b..04f965c27 100644
--- a/hawkbit-artifact-repository-filesystem/pom.xml
+++ b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/pom.xml
@@ -14,18 +14,20 @@
4.0.0
org.eclipse.hawkbit
- hawkbit-parent
+ hawkbit-artifact-parent
${revision}
+
hawkbit-artifact-repository-filesystem
hawkBit :: Artifact Repository :: Filesystem
org.eclipse.hawkbit
- hawkbit-core
+ hawkbit-artifact-api
${project.version}
+
org.springframework
spring-core
diff --git a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFileNotFoundException.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFileNotFoundException.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFileNotFoundException.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFileNotFoundException.java
diff --git a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystem.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystem.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystem.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystem.java
diff --git a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemConfiguration.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemConfiguration.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemConfiguration.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemConfiguration.java
diff --git a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemProperties.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemProperties.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemProperties.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemProperties.java
diff --git a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java
diff --git a/hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepositoryTest.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepositoryTest.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepositoryTest.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepositoryTest.java
diff --git a/hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemTest.java b/hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemTest.java
similarity index 100%
rename from hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemTest.java
rename to hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/test/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemTest.java
diff --git a/hawkbit-artifact/pom.xml b/hawkbit-artifact/pom.xml
new file mode 100644
index 000000000..ae0b9825a
--- /dev/null
+++ b/hawkbit-artifact/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+ org.eclipse.hawkbit
+ hawkbit-parent
+ ${revision}
+
+
+ hawkbit-artifact-parent
+ hawkBit :: Artifact Repository
+ pom
+
+
+ hawkbit-artifact-api
+ hawkbit-artifact-repository-filesystem
+
+
\ No newline at end of file
diff --git a/hawkbit-core/.gitignore b/hawkbit-core/.gitignore
deleted file mode 100644
index c71ea97ab..000000000
--- a/hawkbit-core/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/.apt_generated/
diff --git a/hawkbit-core/pom.xml b/hawkbit-core/pom.xml
index 747a02e7f..8fb24906c 100644
--- a/hawkbit-core/pom.xml
+++ b/hawkbit-core/pom.xml
@@ -17,6 +17,7 @@
hawkbit-parent
${revision}
+
hawkbit-core
hawkBit :: Core
@@ -30,10 +31,6 @@
spring-security-config
-
- org.slf4j
- slf4j-api
-
jakarta.validation
jakarta.validation-api
diff --git a/hawkbit-repository/hawkbit-repository-api/pom.xml b/hawkbit-repository/hawkbit-repository-api/pom.xml
index 221e1ab5f..d6fae0754 100644
--- a/hawkbit-repository/hawkbit-repository-api/pom.xml
+++ b/hawkbit-repository/hawkbit-repository-api/pom.xml
@@ -21,11 +21,17 @@
hawkBit :: Repository :: API
+
+ org.eclipse.hawkbit
+ hawkbit-artifact-api
+ ${project.version}
+
org.eclipse.hawkbit
hawkbit-security-core
${project.version}
+
com.fasterxml.jackson.core
jackson-annotations
diff --git a/hawkbit-rest-core/pom.xml b/hawkbit-rest-core/pom.xml
index 3c0f610f1..4500c82e3 100644
--- a/hawkbit-rest-core/pom.xml
+++ b/hawkbit-rest-core/pom.xml
@@ -27,6 +27,11 @@
hawkbit-core
${project.version}
+
+ org.eclipse.hawkbit
+ hawkbit-artifact-api
+ ${project.version}
+
org.apache.commons
commons-lang3
diff --git a/pom.xml b/pom.xml
index fdd04a071..5566dc145 100644
--- a/pom.xml
+++ b/pom.xml
@@ -136,8 +136,8 @@
hawkbit-security-core
hawkbit-security-integration
hawkbit-http-security
+ hawkbit-artifact
hawkbit-repository
- hawkbit-artifact-repository-filesystem
hawkbit-autoconfigure
hawkbit-rest-core
@@ -798,6 +798,10 @@
+
+ org.slf4j
+ slf4j-api
+
org.projectlombok
lombok