mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
154 lines
7.1 KiB
Markdown
154 lines
7.1 KiB
Markdown
# OpenIDE project
|
||
|
||
The OpenIDE project is largely based on the OpenIDE Community Edition by JetBrains. You can learn more about the project at https://openide.ru.
|
||
|
||
This repository is the open-source part of the JetBrains IDEs codebase.
|
||
It also serves as the basis for [IntelliJ Platform development](https://www.jetbrains.com/opensource/idea).
|
||
|
||
These instructions will help you build and run open source parts of OpenIDE.
|
||
|
||
The following conventions will be used to refer to directories on your machine:
|
||
* `<USER_HOME>` is your OS user's home directory.
|
||
* `<IDEA_HOME>` is the root directory for the **OpenIDE source code**.
|
||
|
||
___
|
||
## Getting the Source Code
|
||
|
||
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
|
||
- ~2GB free disk space
|
||
- Install [OpenIDE 2023.2](https://www.jetbrains.com/idea/download) or higher.
|
||
- For **Windows** set these git config to avoid common issues during cloning:
|
||
```
|
||
git config --global core.longpaths true
|
||
git config --global core.autocrlf input
|
||
```
|
||
|
||
#### Clone Main Repository
|
||
|
||
OpenIDE open source repository is available from the [Gitflic repository](https://gitflic.ru/project/openide/openide), which can be cloned or downloaded as a zip file (based on a branch) into `<IDEA_HOME>`.
|
||
|
||
You can [clone this project](https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html#clone-from-GitHub) directly using OpenIDE.
|
||
|
||
Alternatively, follow the steps below in a terminal:
|
||
|
||
```
|
||
git clone https://gitflic.ru/project/openide/openide.git
|
||
cd openide
|
||
```
|
||
|
||
> [!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 OpenIDE also supports creating shallow clone.
|
||
|
||
#### Get Android Modules
|
||
OpenIDE requires additional Android modules from separate Git repositories.
|
||
|
||
Run the following script from project root `<IDEA_HOME>` to get the required modules:
|
||
- Linux/macOS: `./getPlugins.sh`
|
||
- Windows: `getPlugins.bat`
|
||
|
||
> [!IMPORTANT]
|
||
>
|
||
> Always `git checkout` the `openide` and `android` Git repositories to the same branches/tags.
|
||
|
||
|
||
---
|
||
## Building OpenIDE
|
||
These instructions will help you build OpenIDE from source code, which is the basis for IntelliJ Platform development.
|
||
OpenIDE '**2024.3**' or newer is required.
|
||
|
||
### Opening the OpenIDE Source Code in the IDE
|
||
Using the latest OpenIDE, click '**File | Open**', select the `<IDEA_HOME>` directory.
|
||
If OpenIDE 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 OpenIDE.
|
||
|
||
|
||
### Build Configuration Steps
|
||
1. **JDK Setup**
|
||
|
||
- Use JetBrains Runtime 21 (without JCEF) to compile
|
||
- IDE will prompt to download it on the first build
|
||
> [!IMPORTANT]
|
||
>
|
||
> JetBrains Runtime **without** JCEF is required. If `jbr-21` 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 21 and vendor 'JetBrains Runtime'
|
||
> - To confirm if the JDK is correct, navigate to the SDK page with jbr-21 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 `<USER_HOME>/.m2/repository` directory.
|
||
|
||
3. **Memory Settings**
|
||
- 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 OpenIDE Application from Source
|
||
|
||
**To build OpenIDE from source**, choose '**Build | Build Project**' from the main menu.
|
||
|
||
**To build installation packages**, run the [installers.cmd](installers.cmd) script in `<IDEA_HOME>` directory. `installers.cmd` will work on both Windows and Unix systems.
|
||
Options to build installers are passed as system properties to `installers.cmd` command.
|
||
You may find the list of available properties in [BuildOptions.kt](platform/build-scripts/src/org/jetbrains/intellij/build/BuildOptions.kt)
|
||
|
||
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 can also call it directly from IDEA, using run configuration `Build OpenIDE Installers (current OS)`.
|
||
|
||
|
||
#### Dockerized Build Environment
|
||
To build installation packages inside a Docker container with preinstalled dependencies and tools, run the following command in `<IDEA_HOME>` directory (on Windows, use PowerShell):
|
||
```bash
|
||
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 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 OpenIDE
|
||
To run the OpenIDE 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 settings to the '**Run | Edit Configurations... | Templates | JUnit**' configuration tab:
|
||
* Working dir: `<IDEA_HOME>/bin`
|
||
* VM options: `-ea`
|
||
|
||
|
||
#### Running OpenIDE in CI/CD environment
|
||
|
||
To run tests outside of OpenIDE, run the `tests.cmd` command in `<IDEA_HOME>` directory.`tests.cmd` can be used in both Windows and Unix systems.
|
||
Options to run tests are passed as system properties to `tests.cmd` command.
|
||
You may find the list of available properties in [TestingOptions.kt](platform/build-scripts/src/org/jetbrains/intellij/build/TestingOptions.kt)
|
||
|
||
```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 can also call it directly from IDEA, see run configuration `tests` for an example. |