diff --git a/maven-java-11/multimodule-maven-project/daomodule/pom.xml b/maven-java-11/multimodule-maven-project/daomodule/pom.xml
new file mode 100644
index 0000000000..de9be656d4
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/daomodule/pom.xml
@@ -0,0 +1,14 @@
+
+
+ 4.0.0
+
+ com.baeldung.multimodule-maven-project
+ multimodule-maven-project
+ 1.0
+
+ com.baeldung.daomodule
+ daomodule
+ jar
+ 1.0
+ daomodule
+
diff --git a/maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java b/maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java
new file mode 100644
index 0000000000..f86ae8abb3
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java
@@ -0,0 +1,12 @@
+package com.baeldung.dao;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface Dao {
+
+ Optional findById(int id);
+
+ List findAll();
+
+}
diff --git a/maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java
new file mode 100644
index 0000000000..072d7ad007
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java
@@ -0,0 +1,3 @@
+module com.baeldung.dao {
+ exports com.baeldung.dao;
+}
diff --git a/maven-java-11/multimodule-maven-project/entitiymodule/pom.xml b/maven-java-11/multimodule-maven-project/entitiymodule/pom.xml
new file mode 100644
index 0000000000..8e700e62b5
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/entitiymodule/pom.xml
@@ -0,0 +1,18 @@
+
+
+ 4.0.0
+
+ com.baeldung.multimodule-maven-project
+ multimodule-maven-project
+ 1.0
+
+ com.baeldung.entitymodule
+ entitymodule
+ jar
+ 1.0
+ entitymodule
+
+ 11
+ 11
+
+
diff --git a/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java b/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java
new file mode 100644
index 0000000000..22022a2e6d
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java
@@ -0,0 +1,19 @@
+package com.baeldung.entity;
+
+public class User {
+
+ private final String name;
+
+ public User(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" + "name=" + name + '}';
+ }
+}
diff --git a/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java
new file mode 100644
index 0000000000..67a3097352
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java
@@ -0,0 +1,3 @@
+module com.baeldung.entity {
+ exports com.baeldung.entity;
+}
diff --git a/maven-java-11/multimodule-maven-project/mainppmodule/pom.xml b/maven-java-11/multimodule-maven-project/mainppmodule/pom.xml
new file mode 100644
index 0000000000..d2c94527f1
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/mainppmodule/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ com.baeldung.multimodule-maven-project
+ multimodule-maven-project
+ 1.0
+
+ com.baeldung.mainappmodule
+ mainappmodule
+ 1.0
+ jar
+ mainappmodule
+
+
+
+ com.baeldung.entitymodule
+ entitymodule
+ 1.0
+
+
+ com.baeldung.daomodule
+ daomodule
+ 1.0
+
+
+ com.baeldung.userdaomodule
+ userdaomodule
+ 1.0
+
+
+
diff --git a/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java b/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java
new file mode 100644
index 0000000000..0c0df7461b
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java
@@ -0,0 +1,19 @@
+package com.baeldung.mainapp;
+
+import com.baeldung.dao.Dao;
+import com.baeldung.entity.User;
+import com.baeldung.userdao.UserDao;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Application {
+
+ public static void main(String[] args) {
+ Map users = new HashMap<>();
+ users.put(1, new User("Julie"));
+ users.put(2, new User("David"));
+ Dao userDao = new UserDao(users);
+ userDao.findAll().forEach(System.out::println);
+ }
+
+}
diff --git a/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java
new file mode 100644
index 0000000000..c688fcf7de
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java
@@ -0,0 +1,6 @@
+module com.baeldung.mainapp {
+ requires com.baeldung.entity;
+ requires com.baeldung.userdao;
+ requires com.baeldung.dao;
+ uses com.baeldung.dao.Dao;
+}
diff --git a/maven-java-11/multimodule-maven-project/pom.xml b/maven-java-11/multimodule-maven-project/pom.xml
new file mode 100644
index 0000000000..f22541738c
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+ com.baeldung.multimodule-maven-project
+ multimodule-maven-project
+ 1.0
+ pom
+ multimodule-maven-project
+
+ com.baeldung.maven-java-11
+ maven-java-11
+ 1.0
+
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+ org.assertj
+ assertj-core
+ 3.12.2
+ test
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.0
+
+ 11
+ 11
+
+
+
+
+
+
+
+ entitymodule
+ daomodule
+ userdaomodule
+ mainappmodule
+
+
+
+ UTF-8
+
+
diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/pom.xml b/maven-java-11/multimodule-maven-project/userdaomodule/pom.xml
new file mode 100644
index 0000000000..b4fe7f0398
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/userdaomodule/pom.xml
@@ -0,0 +1,31 @@
+
+
+ 4.0.0
+
+ com.baeldung.multimodule-maven-project
+ multimodule-maven-project
+ 1.0
+
+ com.baeldung.userdaomodule
+ userdaomodule
+ 1.0
+ jar
+ userdaomodule
+
+
+ com.baeldung.entitymodule
+ entitymodule
+ 1.0
+
+
+ com.baeldung.daomodule
+ daomodule
+ 1.0
+
+
+ junit
+ junit
+ test
+
+
+
diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java b/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java
new file mode 100644
index 0000000000..1f1ea38a60
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java
@@ -0,0 +1,32 @@
+package com.baeldung.userdao;
+
+import com.baeldung.dao.Dao;
+import com.baeldung.entity.User;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+public class UserDao implements Dao {
+
+ private final Map users;
+
+ public UserDao() {
+ users = new HashMap<>();
+ }
+
+ public UserDao(Map users) {
+ this.users = users;
+ }
+
+ @Override
+ public List findAll() {
+ return new ArrayList<>(users.values());
+ }
+
+ @Override
+ public Optional findById(int id) {
+ return Optional.ofNullable(users.get(id));
+ }
+}
\ No newline at end of file
diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java
new file mode 100644
index 0000000000..f1cb217e23
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java
@@ -0,0 +1,6 @@
+module com.baeldung.userdao {
+ requires com.baeldung.entity;
+ requires com.baeldung.dao;
+ provides com.baeldung.dao.Dao with com.baeldung.userdao.UserDao;
+ exports com.baeldung.userdao;
+}
diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java b/maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java
new file mode 100644
index 0000000000..191d17ff32
--- /dev/null
+++ b/maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java
@@ -0,0 +1,36 @@
+package com.baeldung.userdao.test;
+
+import com.baeldung.dao.Dao;
+import com.baeldung.entity.User;
+import com.baeldung.userdao.UserDao;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import static org.junit.Assert.*;
+import static org.hamcrest.CoreMatchers.*;
+import org.junit.Before;
+import org.junit.Test;
+
+public class UserDaoUnitTest {
+
+ private Dao userDao;
+
+ @Before
+ public void setUpUserDaoInstance() {
+ Map users = new HashMap<>();
+ users.put(1, new User("Julie"));
+ users.put(2, new User("David"));
+ userDao = new UserDao(users);
+ }
+
+ @Test
+ public void givenUserDaoIntance_whenCalledFindById_thenCorrect() {
+ assertThat(userDao.findById(1), isA(Optional.class));
+ }
+
+ @Test
+ public void givenUserDaoIntance_whenCalledFindAll_thenCorrect() {
+ assertThat(userDao.findAll(), isA(List.class));
+ }
+}
diff --git a/maven-java-11/pom.xml b/maven-java-11/pom.xml
new file mode 100644
index 0000000000..4342fa740f
--- /dev/null
+++ b/maven-java-11/pom.xml
@@ -0,0 +1,22 @@
+
+
+ 4.0.0
+ com.baeldung.maven-java-11
+ maven-java-11
+ 1.0
+ pom
+ maven-java-11
+
+ parent-modules
+ com.baeldung
+ 1.0.0-SNAPSHOT
+
+
+ multimodule-maven-project
+
+
+ UTF-8
+ 11
+ 11
+
+
diff --git a/pom.xml b/pom.xml
index 901bc94f96..4590056154 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1170,6 +1170,7 @@
mapstruct
maven
+ maven-java-11
maven-archetype
maven-polyglot/maven-polyglot-json-extension