Ok zrobiłem i działa tak jak chciałem. Układ modułów:

Zerknijcie czy dobrze, czy czegoś nie napisałem "nadmiarowo" w tych pomach albo czegoś zapomniałem:
pom.xml główny w module kchat-app:
Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<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>
<name>KChat Network</name>
<groupId>pl.cba.reallygrid.kchat</groupId>
<artifactId>kchat-app</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>kchat-server</module>
<module>kchat-client</module>
<module>kchat-shared</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>pl.cba.reallygrid.kchat</groupId>
<artifactId>kchat-server</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>pl.cba.reallygrid.kchat</groupId>
<artifactId>kchat-client</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>pl.cba.reallygrid.kchat</groupId>
<artifactId>kchat-shared</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
pom.xml w module kchat-server (pom w moduje kchat-client jest analogiczny):
Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>kchat-app</artifactId>
<groupId>pl.cba.reallygrid.kchat</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<name>KChat Network Server</name>
<artifactId>kchat-server</artifactId>
<dependencies>
<dependency>
<groupId>pl.cba.reallygrid.kchat</groupId>
<artifactId>kchat-shared</artifactId>
</dependency>
</dependencies>
</project>
pom.xml w module kchat-shared:
Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>kchat-app</artifactId>
<groupId>pl.cba.reallygrid.kchat</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>kchat-shared</artifactId>
</project>
== Edit: ==
Jedno pytanie mi się nasunęło po zauważeniu, że moduły kchat-shared, kchat-server i kchat-client mają to samo groupId
mianowicie: pl.cba.reallygrid.kchat
. Czy jest to zalecany sposób programowania modułowego czy też każdy moduł oprócz unikalnego artifactId
powinien mieć także unikalny groupId
?