Since module definition is essentially pluggable, a module can be defined in many different ways. However, JBoss Modules ships with two basic implemented strategies which are most commonly utilized.
The first strategy is the static filesystem repository approach. Modules are organized in a directory hierarchy on the filesystem which is derived from the name and version of the module. The content of the module's specific directory is comprised of a simple module descriptor and all of the content itself (JARs or loose files).
The second strategy is designed for direct JAR execution. It uses JAR MANIFEST.MF information to define simple dependencies and other module information, and is designed for executing JARs from the command line as well as situations where a JAR may be deployed in a container such as the JBoss Application Server.