blob: a94dd7b4ded4eccc882a2b8a52be3a220e4779fd [file] [log] [blame]
Yuxuan 'fishy' Wang61698b12013-12-20 12:55:51 -08001= Gerrit Code Review - Eclipse Setup
Shawn O. Pearced2b73db2009-01-09 11:55:47 -08002
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -08003This document is about configuring Gerrit Code Review into an
David Ostrovsky7163dac2017-07-29 06:49:38 +02004Eclipse workspace for development.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -08005
David Ostrovsky7163dac2017-07-29 06:49:38 +02006Java 8 or later SDK is require
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -08007
David Pursehouse2b16f6a2015-08-28 09:38:50 +09008[[setup]]
9== Project Setup
10
Eryk Szymanski6c5e6432017-04-24 10:32:52 +020011In your Eclipse installation's link:https://wiki.eclipse.org/Eclipse.ini[`eclipse.ini`] file,
12add the following line in the `vmargs` section:
David Pursehousec20dff22015-08-28 09:41:14 +090013
14----
15 -DmaxCompiledUnitsAtOnce=10000
16----
17
18Without this setting, annotation processing does not work reliably and the
19build is likely to fail with errors like:
20
21----
22 Could not write generated class ... javax.annotation.processing.FilerException: Source file already created
23----
24
David Pursehouse1023b262016-08-19 16:26:43 +090025and
26
27----
28 AutoAnnotation_Commands_named cannot be resolved to a type
29----
30
Eryk Szymanski49c76f52017-04-24 10:12:01 +020031First, generate the Eclipse project by running the `tools/eclipse/project.py` script.
32Then, in Eclipse, choose 'Import existing project' and select the `gerrit` project
David Pursehouse2b16f6a2015-08-28 09:38:50 +090033from the current working directory.
34
David Ostrovskyfdbfcad2016-11-15 06:35:29 -080035Expand the `gerrit` project, right-click on the `eclipse-out` folder, select
David Pursehouse2b16f6a2015-08-28 09:38:50 +090036'Properties', and then under 'Attributes' check 'Derived'.
37
38Note that if you make any changes in the project configuration
39that get saved to the `.project` file, for example adding Resource
40Filters on a folder, they will be overwritten the next time you run
41`tools/eclipse/project.py`.
42
Sven Selberg4076e822017-12-21 15:41:02 +010043=== Eclipse project with custom plugins ===
44
45To add custom plugins to the eclipse project add them to `tools/bzl/plugins.bzl`
46the same way you would when
47link:dev-build-plugins.html#_bundle_custom_plugin_in_release_war[bundling in release.war]
48and run `tools/eclipse/project.py`.
49
David Ostrovsky8aae31c2018-06-25 23:45:15 +020050[[Newer Java versions]]
51
52Java 9 and later are supported, but some adjustments must be done, because
53Java 8 is still the default:
54
55* Add JRE, e.g.: directory: /usr/lib64/jvm/java-9-openjdk, name: java-9-openjdk-9
Marco Miller0b7e9982019-11-01 13:29:08 -040056* Change execution environment for gerrit project to: JavaSE-9 (java-9-openjdk-9)
David Ostrovsky8aae31c2018-06-25 23:45:15 +020057* Check that compiler compliance level in gerrit project is set to: 9
David Pursehouse2b16f6a2015-08-28 09:38:50 +090058
Martin Fick081fa512011-08-12 11:22:45 -060059[[Formatting]]
Yuxuan 'fishy' Wang61698b12013-12-20 12:55:51 -080060== Code Formatter Settings
Shawn O. Pearcee89544b2009-04-28 07:59:44 -070061
David Ostrovsky248b7092017-02-09 22:13:44 +010062To format source code, Gerrit uses the
63link:https://github.com/google/google-java-format[`google-java-format`]
Dave Borowitz3efa1052019-01-28 07:21:29 -080064tool (version 1.7), which automatically formats code to follow the
David Ostrovsky248b7092017-02-09 22:13:44 +010065style guide. See link:dev-contributing.html#style[Code Style] for the
66instruction how to set up command line tool that uses this formatter.
67The Eclipse plugin is provided that allows to format with the same
68formatter from within the Eclipse IDE. See
69link:https://github.com/google/google-java-format#eclipse[Eclipse plugin]
70for details how to install it. It's important to use the same plugin version
71as the `google-java-format` script.
Shawn O. Pearcee89544b2009-04-28 07:59:44 -070072
Yuxuan 'fishy' Wang61698b12013-12-20 12:55:51 -080073== Site Initialization
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080074
David Ostrovskydcee5722013-05-15 00:10:55 +020075Build once on the command line with
David Ostrovskyfdbfcad2016-11-15 06:35:29 -080076link:dev-bazel.html#build[Bazel] and then follow
David Pursehouse6de7ee22013-05-20 11:08:51 +090077link:dev-readme.html#init[Site Initialization] in the
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080078Developer Setup guide to configure a local site for testing.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080079
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080080
Yuxuan 'fishy' Wang61698b12013-12-20 12:55:51 -080081== Testing
Shawn O. Pearce8d2f1842009-05-13 07:59:04 -070082
Yuxuan 'fishy' Wang61698b12013-12-20 12:55:51 -080083=== Running the Daemon
Shawn O. Pearce8d2f1842009-05-13 07:59:04 -070084
David Pursehouse584af672013-05-20 11:15:18 +090085Duplicate the existing launch configuration:
Shawn O. Pearce8d2f1842009-05-13 07:59:04 -070086
David Pursehouse44eed242015-01-08 11:42:35 +090087* In Eclipse select Run -> Debug Configurations ...
Shawn Pearcecda21212013-11-28 20:49:42 -080088* Java Application -> `gerrit_daemon`
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080089* Right click, Duplicate
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080090* Modify the name to be unique.
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080091* Switch to Arguments tab.
Shawn O. Pearce955d00e2009-12-19 13:38:19 -080092* Edit the `-d` program argument flag to match the path used during
David Pursehouse44eed242015-01-08 11:42:35 +090093 'init'. The template launch configuration resolves to `../gerrit_testsite`
Shawn O. Pearce955d00e2009-12-19 13:38:19 -080094 since that is what the documentation recommends.
Shawn O. Pearced2b73db2009-01-09 11:55:47 -080095
Shawn O. Pearce18f1f7f2009-12-16 11:32:39 -080096* Switch to Common tab.
97* Change Save as to be Local file.
David Pursehouse3800abd2013-05-08 09:24:29 +010098* Close the Debug Configurations dialog and save the changes when prompted.
Shawn O. Pearce06b48c32009-05-10 16:21:05 -070099
Shawn O. Pearce5500e692009-05-28 15:55:01 -0700100GERRIT
101------
102Part of link:index.html[Gerrit Code Review]
Yuxuan 'fishy' Wang99cb68d2013-10-31 17:26:00 -0700103
104SEARCHBOX
105---------