In your parent POM add
<modules>
<module>submodule3</module>
</modules>
It will then build the submodule 3 pom, so you may need to configure the maven assembly plugin in the submodule3 pom too
If these are already there, try binding the assembly to the package phase like so:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>package</id>
<goals>
<goal>assembly</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
Do this for both parent and sub module. Then run mvn clean package
instead of mvn assembly:assembly
at the top level.
If you needto be able to run a build but NOT run the assembly, you can create a profile for the assembly and add this to that profile. E.g.
<profiles>
<profile>
<id>assembly</id>
<build>
<plugins>
<!-- Put assembly Plugin here -->
</plugins>
</build>
</profile>
</profiles>
Now ehen you run mvn clean package, it won't run the assembly.
But if you run with the assembly profile like this:
mvn clean package -P assembly
it will.