mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 06:59:44 +07:00
95 lines
6.5 KiB
Markdown
95 lines
6.5 KiB
Markdown
# OpenIDE project
|
|
The OpenIDE project is largely based on the IntelliJ IDEA Community Edition by JetBrains. You can learn more about the project at https://openide.ru.
|
|
These instructions will help you build OpenIDE from source code, which is the basis for IntelliJ Platform development.
|
|
The following conventions will be used to refer to directories on your machine:
|
|
* `<USER_HOME>` is your home directory.
|
|
* `<IDEA_HOME>` is the root directory for the OpenIDE source code.
|
|
|
|
## Getting OpenIDE Source Code
|
|
OpenIDE source code is available from `<todo: link to source>` by either cloning or
|
|
downloading a zip file (based on a branch) into `<IDEA_HOME>`. The default is the *243* branch.
|
|
|
|
These Git operations can also be done through the [IntelliJ IDEA user interface](https://www.jetbrains.com/help/idea/using-git-integration.html).
|
|
|
|
_**Speed Tip:**_ If the complete repository history isn't needed, then using a shallow clone (`git clone --depth 1`) will save significant time.
|
|
|
|
_**On Windows:**_ Two git options are required to check out sources on Windows. Since it's a common source of Git issues on Windows anyway, those options could be set globally (execute those commands before cloning any of openide/android repositories):
|
|
|
|
* `git config --global core.longpaths true`
|
|
* `git config --global core.autocrlf input`
|
|
|
|
OpenIDE requires additional Android modules from separate Git repositories. To clone these repositories,
|
|
run one of the `getPlugins` scripts located in the `<IDEA_HOME>` directory. Use the `--shallow` argument if the complete repository history isn't needed.
|
|
These scripts clone their respective *master* branches. Make sure you are inside the `<IDEA_HOME>` directory when running those scripts, so the modules get cloned inside the `<IDEA_HOME>` directory.
|
|
* `getPlugins.sh` for Linux or macOS.
|
|
* `getPlugins.bat` for Windows.
|
|
|
|
_**Note:**_ Always `git checkout` the `openide` and `android` Git repositories to the same branches/tags.
|
|
|
|
## Building OpenIDE
|
|
Version 2024.3 or newer of OpenIDE is required to build and develop
|
|
for the IntelliJ Platform.
|
|
|
|
### Opening the OpenIDE Source Code for Build
|
|
Using OpenIDE **File | Open**, select the `<IDEA_HOME>` directory.
|
|
* If OpenIDE displays an error 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.
|
|
|
|
### OpenIDE Build Configuration
|
|
1. It's recommended to use JetBrains Runtime 17 to compile the project.
|
|
When you invoke **Build Project** for the first time, OpenIDE should suggest downloading it automatically.
|
|
2. 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. Make sure you have at least 8GB of RAM on your computer. With the bare minimum of RAM, disable "Compile independent modules in parallel"
|
|
option in [the compiler settings](https://www.jetbrains.com/help/idea/specifying-compilation-settings.html). With notably more memory
|
|
available, increase "User-local build process heap size" to 3000 - that will greatly reduce compilation time.
|
|
|
|
Note that it is important to use the variant of JetBrains Runtime **without JCEF**.
|
|
So, if for some reason `jbr-17` SDK points to an installation of JetBrains Runtime with JCEF, you need to change it:
|
|
ensure that OpenIDE is running in internal mode (by adding `idea.is.internal=true` to `idea.properties` file), navigate to `jbr-17`
|
|
item in Project Structure | SDKs, click on 'Browse' button, choose 'Download...' item and select version 17 and vendor 'JetBrains Runtime'.
|
|
|
|
### Building the OpenIDE Application Source Code
|
|
To build OpenIDE from source, choose **Build | Build Project** from the main menu.
|
|
|
|
To build installation packages, run the `installers.cmd` command 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)
|
|
|
|
Examples (`./` should be added only for Linux/macOS):
|
|
* Build installers only for current operating system: `./installers.cmd -Dintellij.build.target.os=current`
|
|
* Build source code _incrementally_ (do not build what was already built before): `./installers.cmd -Dintellij.build.incremental.compilation=true`
|
|
|
|
`installers.cmd` is used just to run [OpenSourceCommunityInstallersBuildTarget](build/src/OpenSourceCommunityInstallersBuildTarget.kt) from the command line.
|
|
You may call it directly from OpenIDE, see run configuration `Build OpenIDE Installers (current OS)` for an example.
|
|
|
|
#### 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):
|
|
`docker run --rm -it -v ${PWD}:/community $(docker build -q . --target build_env)`
|
|
|
|
## Running OpenIDE
|
|
To run the OpenIDE 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:
|
|
* Working dir: `<IDEA_HOME>/bin`
|
|
* VM options:
|
|
* `-ea`
|
|
|
|
You can find other helpful information at [https://www.jetbrains.com/opensource/idea](https://www.jetbrains.com/opensource/idea).
|
|
The "Contribute Code" section of that site describes how you can contribute to OpenIDE.
|
|
|
|
## Running OpenIDE on CI/CD environment
|
|
|
|
To run tests outside of OpenIDE, run the `tests.cmd` command in `<IDEA_HOME>` directory. `tests.cmd` will work on 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)
|
|
|
|
Examples (`./` should be added only for Linux/macOS):
|
|
* Build source code _incrementally_ (do not build what was already built before): `./tests.cmd -Dintellij.build.incremental.compilation=true`
|
|
* 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 OpenIDE, see run configuration `tests in community` for an example.
|