gerrit/Documentation/dev-eclipse.txt
David Pursehouse c20dff21ee Dev doc: Document the maxCompiledUnitsAtOnce setting in Eclipse
This setting is needed to make annotation processing work reliably.

See the related discussion on repo-discuss:

https://groups.google.com/d/msg/repo-discuss/rpv-ElAWr2Y/CbXj6NL2BwAJ

Change-Id: I7cf967a2207b6c9e5dd75de3647be3a71c9db948
2015-08-28 10:31:47 +09:00

137 lines
4.4 KiB
Plaintext

= Gerrit Code Review - Eclipse Setup
This document is about configuring Gerrit Code Review into an
Eclipse workspace for development and debugging with GWT.
Java 6 or later SDK is also required to run GWT's compiler and
runtime debugging environment.
[[setup]]
== Project Setup
In your Eclipse installation's `eclipse.ini` file, add the following line in
the `vmargs` section:
----
-DmaxCompiledUnitsAtOnce=10000
----
Without this setting, annotation processing does not work reliably and the
build is likely to fail with errors like:
----
Could not write generated class ... javax.annotation.processing.FilerException: Source file already created
----
In Eclipse, choose 'Import existing project' and select the `gerrit` project
from the current working directory.
Expand the `gerrit` project, right-click on the `buck-out` folder, select
'Properties', and then under 'Attributes' check 'Derived'.
Note that if you make any changes in the project configuration
that get saved to the `.project` file, for example adding Resource
Filters on a folder, they will be overwritten the next time you run
`tools/eclipse/project.py`.
[[Formatting]]
== Code Formatter Settings
Import `tools/GoogleFormat.xml` using Window -> Preferences ->
Java -> Code Style -> Formatter -> Import...
This will define the 'Google Format' profile, which the project
settings prefer when formatting source code.
== Site Initialization
Build once on the command line with
link:dev-buck.html#build[Buck] and then follow
link:dev-readme.html#init[Site Initialization] in the
Developer Setup guide to configure a local site for testing.
== Testing
=== Running the Daemon
Duplicate the existing launch configuration:
* In Eclipse select Run -> Debug Configurations ...
* Java Application -> `gerrit_daemon`
* Right click, Duplicate
* Modify the name to be unique.
* Switch to Arguments tab.
* Edit the `-d` program argument flag to match the path used during
'init'. The template launch configuration resolves to `../gerrit_testsite`
since that is what the documentation recommends.
* Switch to Common tab.
* Change Save as to be Local file.
* Close the Debug Configurations dialog and save the changes when prompted.
=== Running GWT Debug Mode
The `gerrit_gwt_debug` launch configuration uses GWT's
link:http://www.gwtproject.org/articles/superdevmode.html[Super Dev Mode].
* Make a local copy of the `gerrit_gwt_debug` configuration, using the
process described for `gerrit_daemon` above.
* Launch the local copy of `gerrit_gwt_debug` from the Eclipse debug menu.
* If debugging GWT for the first time:
** Open the link:http://localhost:9876/[codeserver URL] and add the `Dev Mode On`
and `Dev Mode Off` bookmarklet to your bookmark bar.
** Activate the source maps feature in your browser. Refer to the
link:https://developer.chrome.com/devtools/docs/javascript-debugging#source-maps[
Chrome] and
link:https://developer.mozilla.org/en-US/docs/Tools/Debugger#Use_a_source_map[
Firefox] developer documentation.
* Load the link:http://localhost:8080[Gerrit page].
* Open the source tab in developer tools.
* Click the `Dev Mode On` bookmark to incrementally recompile changed files.
* Select the `gerrit_ui` module to compile (the `Compile` button can also be used
as a bookmarklet).
* In the developer tools source tab, open a file and set a breakpoint.
* Navigate to the UI and confirm that the breakpoint is hit.
* To end the debugging session, click the `Dev Mode Off` bookmark.
.After changing the client side code:
* Hitting `F5` in the browser only reloads the last compile output, without
recompiling.
* To reflect your changes in the debug session, click `Dev Mode On` then `Compile`.
=== Running GWT Debug Mode for Gerrit plugins
A Gerrit plugin can expose GWT module and its implementation can be inspected
in the SDM debug session.
`codeserver` needs two additional inputs to expose the plugin module in the SDM
debug session: the module name and the source folder location. For example the
module name and source folder of `cookbook-plugin` should be added in the local
copy of the `gerrit_gwt_debug` configuration:
----
com.googlesource.gerrit.plugins.cookbook.HelloForm \
-src ${resource_loc:/gerrit}/plugins/cookbook-plugin/src/main/java \
-- --console-log [...]
----
After doing that, both the Gerrit core and plugin GWT modules can be activated
during SDM (debug session)[http://imgur.com/HFXZ5No].
GERRIT
------
Part of link:index.html[Gerrit Code Review]
SEARCHBOX
---------