A module is a discrete unit of functionality which you can compile, run, test and debug independently.
Modules contain everything that is required for their specific tasks:
- source code,
- build scripts,
- unit tests,
- deployment descriptors,
- and documentation.
However, modules exist and are functional only in the context of a project. Depending on the logical and functional requirements to the project, you can create:
- a single-module
- or a multi-module project.
File > Project Structure > Module
Storage (iml file)
Configuration information for a module is stored in a .iml module file. By default, such a file is located in the module's content root folder.
Development teams, normally, share the .iml module files through version control.
The information about modules the project includes is stored in %module_name%.iml files. Module files are created for each module.
Content root is a folder that contains all the files that make up your module.
Folders within a content root can be assigned to the following categories:
- Source roots (content must be compiled)
- Generated source roots (the generated source roots are not suggested as target folders on certain wizard)
- Test source roots (code intended for testing)
- Generated test source roots
- Resource roots (only in Java modules) During the build process, all the contents of the resource folders are copied to the output folder as is.
- Test resource roots
- Excluded roots (IDEA will Ignore)
A facet represents certain configuration, specific for a particular framework/technology, associated with a moduel. A module can have multiple facets.
|Encapsulates core functionality for building Java applications. The functionality of a Java module can be expanded by adding facets.
|Facilitates development of IntelliJ IDEA plugins. Supports IntelliJ IDEA SDK configuration and run configurations for running a dedicated IntelliJ IDEA instance for plugin debugging.
|Provides facilities for developing J2ME mobile applications, including support for various Mobile JDK and J2ME-oriented run configurations.
|This module type is intended for developing Adobe Flash platform-targeted content (applications and libraries for web (Flash Player), desktop (Adobe AIR) and mobile devices (AIR mobile)).
|Encapsulates core functionality for developing Android applications.
|Provides facilities for managing Maven projects, executing Maven goals, downloading artifacts.
|Provides facilities for Grails application development.
|Provides facilities for Griffon application development.
|The following module types are available provided that the corresponding plugins are downloaded and enabled:
|Provides facilities for creating Ruby projects and Rails applications.
|Provides facilities for Python, Django and Google App Engine development.