diff --git a/README.md b/README.md index c73da89e91fb..998703daa982 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,22 @@ [![official JetBrains project](http://jb.gg/badges/official.svg)](https://github.com/JetBrains/.github/blob/main/profile/README.md) [![Build status](https://github.com/JetBrains/intellij-community/workflows/IntelliJ%20IDEA/badge.svg)](https://github.com/JetBrains/intellij-community/actions/workflows/IntelliJ_IDEA.yml) -# IntelliJ IDEA Community Edition +# IntelliJ IDEA Open Source -IntelliJ IDEA Community Edition is a free IDE built on open-source code that provides essential features for Java and Kotlin enthusiasts. +This repository is the open-source part of the IntelliJ IDEA codebase. +It also serves as the basis for [IntelliJ Platform development](https://www.jetbrains.com/opensource/idea). -These instructions will help you build IntelliJ IDEA Community Edition from source code, which is the basis for [IntelliJ Platform development](https://www.jetbrains.com/opensource/idea). If you are new to the community and would like to contribute code or help others learn, see [CONTRIBUTING.md](https://github.com/dextro67/intellij-community/blob/master/CONTRIBUTING.md) to get started. +These instructions will help you build IntelliJ IDEA from source code. + +If you are new to the community and would like to contribute code or help others learn, see [CONTRIBUTING.md](https://github.com/JetBrains/intellij-community/blob/master/CONTRIBUTING.md) to get started. The following conventions will be used to refer to directories on your machine: * `` is your OS user's home directory. * `` is the root directory for the **IntelliJ source code**. ___ -## Getting the IntelliJ Source Code +## Getting the IntelliJ IDEA Source Code -This section will guide you to get the project source faster, avoid common issues in git config and other steps before opening it in the IDE. +This section will guide you through getting the project sources and help avoid common issues in git config and other steps before opening it in the IDE. #### Prerequisites - [Git](https://git-scm.com/) installed @@ -27,68 +30,72 @@ This section will guide you to get the project source faster, avoid common issue #### Clone Main Repository -IntelliJ IDEA Community Edition source code is available from [github repository](https://github.com/JetBrains/intellij-community) by either cloning or -downloading a zip file (based on a branch) into ``. The **master** (_default_) branch contains the source code which will be used to create the next major version of IntelliJ IDEA. The branch names -and build numbers for older releases of IntelliJ IDEA can be found on the page of -[Build Number Ranges](https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html). +IntelliJ IDEA source code is available from the [GitHub repository](https://github.com/JetBrains/intellij-community), which can be cloned or downloaded as a zip file (based on a branch) into ``. +The **master** (_default_) branch contains the source code which will be used to create the next major version of IntelliJ IDEA. +The branch names and build numbers for older releases of IntelliJ IDEA can be found on the +[Build Number Ranges](https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html) page. -You can directly [checkout this project](https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html#clone-from-GitHub) using an installed IntelliJ IDEA. Or you may follow the steps below for terminal. +You can [clone this project](https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html#clone-from-GitHub) directly using IntelliJ IDEA. + +Alternatively, follow the steps below in a terminal: ``` git clone https://github.com/JetBrains/intellij-community.git cd intellij-community ``` -#### Get Android Modules -IntelliJ IDEA Community Edition requires additional Android modules from separate Git repositories. +> [!TIP] +> - **For faster download**: If the complete repository history isn't needed, create [shallow clone](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthdepth) +> To download only the latest revision of the repository, add `--depth 1` option after `clone`. +> - Cloning in IntelliJ IDEA also supports creating shallow clone. -Run the following script from project root `` to get the required module: +#### Get Android Modules +IntelliJ IDEA requires additional Android modules from separate Git repositories. + +Run the following script from project root `` to get the required modules: - Linux/macOS: `./getPlugins.sh` - Windows: `getPlugins.bat` > [!IMPORTANT] -> ##### Always `git checkout` the `intellij-community` and `android` Git repositories to the same branches/tags. - -> [!TIP] -> - **For faster download**: If the complete repository history isn't needed add `--depth 1` after `clone`. -> - If the complete repository history isn't needed add `--shallow` flag for faster download +> +> Always `git checkout` the `intellij-community` and `android` Git repositories to the same branches/tags. --- -## Building IntelliJ Community Edition -These instructions will help you build IntelliJ IDEA Community Edition from source code, which is the basis for IntelliJ Platform development. -Version '**2023.2**' or newer of IntelliJ IDEA Community Edition or IntelliJ IDEA Ultimate Edition is required to build and develop -for the IntelliJ Platform. +## Building IntelliJ IDEA +These instructions will help you build IntelliJ IDEA from source code, which is the basis for IntelliJ Platform development. +IntelliJ IDEA '**2023.2**' or newer is required. -### Opening the IntelliJ Source Code in the IDE -Using the latest IntelliJ IDEA IDE , click '**File | Open**', select the `` directory. -If IntelliJ IDEA displays an message about a missing or out of date required plugin (e.g. Kotlin), +### Opening the IntelliJ IDEA Source Code in the IDE +Using the latest IntelliJ IDEA, click '**File | Open**', select the `` directory. +If IntelliJ IDEA displays a message about a missing or out-of-date required plugin (e.g. Kotlin), [enable, upgrade, or install that plugin](https://www.jetbrains.com/help/idea/managing-plugins.html) and restart IntelliJ IDEA. ### Build Configuration Steps 1. **JDK Setup** - Use JetBrains Runtime 17 (without JCEF) to compile - - IDE will prompt to download it on first build + - IDE will prompt to download it on the first build > [!IMPORTANT] -> JetBrains Runtime **without** JCEF is required. If `jbr-17` SDK points to JCEF version,change it to the non-JCEF version: -> - Add `idea.is.internal=true` to `idea.properties` +> +> JetBrains Runtime **without** JCEF is required. If `jbr-17` SDK points to JCEF version, change it to the non-JCEF version: +> - Add `idea.is.internal=true` to `idea.properties` and restart the IDE. > - Go to '**Project Structure | SDKs**' > - Click 'Browse' → 'Download...' > - Select version 17 and vendor 'JetBrains Runtime' -> - To confirm if the JDK is correct, navigate to the SDK page with jbr-17 selected. Search for `jcef`, it should **_not_** yield a result. +> - To confirm if the JDK is correct, navigate to the SDK page with jbr-17 selected. Search for `jcef`, it should **_NOT_** yield a result. 2. **Maven Configuration** : If the **Maven** plugin is disabled, [add the path variable](https://www.jetbrains.com/help/idea/absolute-path-variables.html) "**MAVEN_REPOSITORY**" pointing to `/.m2/repository` directory. 3. **Memory Settings** - - Ensure minimum **8GB** RAM on your computer. - - With minimum RAM configure: Disable "**Compile independent modules in parallel**" in '**Settings | Build, Execution, Deployment | Compiler**'. - - With a notably higher available RAM: Increase "**User-local heap size**" to `3000`. + - Ensure a minimum **8GB** RAM on your computer. + - With the minimum RAM, disable "**Compile independent modules in parallel**" in '**Settings | Build, Execution, Deployment | Compiler**'. + - With notably higher available RAM, Increase "**User-local heap size**" to `3000`. -### Building the IntelliJ Application from Source +### Building the IntelliJ IDEA Application from Source -**To build IntelliJ IDEA Community Edition from source**, choose '**Build | Build Project**' from the main menu. +**To build IntelliJ IDEA from source**, choose '**Build | Build Project**' from the main menu. **To build installation packages**, run the [installers.cmd](installers.cmd) script in `` directory. `installers.cmd` will work on both Windows and Unix systems. Options to build installers are passed as system properties to `installers.cmd` command. @@ -98,13 +105,16 @@ Installer build examples: ```bash # Build installers only for current operating system: ./installers.cmd -Dintellij.build.target.os=current - +``` +```bash # Build source code _incrementally_ (do not build what was already built before): ./installers.cmd -Dintellij.build.incremental.compilation=true ``` -**Tip**: The `installers.cmd` is used to run [OpenSourceCommunityInstallersBuildTarget](build/src/OpenSourceCommunityInstallersBuildTarget.kt) from the command line. -You may call it directly from IDEA, using run configuration `Build IDEA Community Installers (current OS)`. +>[!TIP] +> +> The `installers.cmd` is used to run [OpenSourceCommunityInstallersBuildTarget](build/src/OpenSourceCommunityInstallersBuildTarget.kt) from the command line. +You can also call it directly from IDEA, using run configuration `Build IDEA Community Installers (current OS)`. #### Dockerized Build Environment @@ -113,17 +123,18 @@ To build installation packages inside a Docker container with preinstalled depen docker run --rm -it --user "$(id -u)" --volume "${PWD}:/community" "$(docker build --quiet . --target intellij_idea)" ``` > [!NOTE] +> > Please remember to specify the `--user "$(id -u)"` argument for the container's user to match the host's user. -> This is required not to affect the permissions of the checked-out repository, the build output and the mounted Maven cache, if any. - +> This prevents issues with permissions for the checked-out repository, the build output, and the mounted Maven cache, if any. +> To reuse the existing Maven cache from the host system, add the following option to `docker run` command: `--volume "$HOME/.m2:/home/ide_builder/.m2"` --- ## Running IntelliJ IDEA -To run the IntelliJ IDEA built from source, choose '**Run | Run**' from the main menu. This will use the preconfigured run configuration `IDEA`. +To run the IntelliJ IDEA that was built from source, choose '**Run | Run**' from the main menu. This will use the preconfigured run configuration `IDEA`. -To run tests on the build, apply these setting to the '**Run | Edit Configurations... | Templates | JUnit**' configuration tab: +To run tests on the build, apply these settings to the '**Run | Edit Configurations... | Templates | JUnit**' configuration tab: * Working dir: `/bin` * VM options: `-ea` @@ -137,10 +148,11 @@ You may find the list of available properties in [TestingOptions.kt](platform/bu ```bash # Build source code _incrementally_ (do not build what was already built before): ` ./tests.cmd -Dintellij.build.incremental.compilation=true - +``` +```bash #Run a specific test: ./tests.cmd -Dintellij.build.test.patterns=com.intellij.util.ArrayUtilTest ``` `tests.cmd` is used just to run [CommunityRunTestsBuildTarget](build/src/CommunityRunTestsBuildTarget.kt) from the command line. -You may call it directly from IDEA, see run configuration `tests in community` for an example. \ No newline at end of file +You can also call it directly from IDEA, see run configuration `tests in community` for an example. \ No newline at end of file