- What is a project?
- Project format and files
- Directory-based format
- File-based format
- Converting the project format
What is a project?
A project is a top-level organizational unit for your development work in IntelliJ IDEA. In its finished form, a project may represent a complete software solution.
A project is a collection of:
- Your work results: source code, build scripts, configuration files, documentation, artifacts, etc.
- SDKs and libraries that you use to develop, compile, run and test your code.
- Project settings that represent your working preferences in the context of a project.
A project has one or more modules as its parts.
Project format and files
IntelliJ IDEA stores the configuration data for projects and their components in plain text XML files making it easy to manage and share project configuration data with others.
When the directory-based format is used, there is a
.idea directory in the project directory.
.idea directory contains a set of configuration files (
.xml). Each file contains only a portion of configuration data pertaining to a certain functional area which is reflected in the name of a file, for example,
Almost all of the files contain information core to the project itself, such as names and locations of its component modules, compiler settings, etc. Thus, these files may (and should) be kept under version control.
The exception is the file
workspace.xml. It stores your personal settings such as placement and positions of your windows, your VCS and History settings, and other data pertaining to the development environment. So it's unlikely that you'd want to share this file with your colleagues.
If the file-based format is used, there are two configuration files in the project directory. One of the files has the
.ipr extension and stores the core project information. The other file has the
.iws extension and stores your personal workspace settings.
.iws file shouldn't be placed under version control while the
.ipr file should.
The file-based format can be converted into the directory-based, see Converting the project format.