blob: 30c378fb4eac1c68ee470d4bc4a440cc0c58b5fd [file] [view]
# google-java-format
`google-java-format` is a program that reformats Java source code to comply with
[Google Java Style][].
[Google Java Style]: https://google.github.io/styleguide/javaguide.html
## Using the formatter
### from the command-line
[Download the formatter](https://github.com/google/google-java-format/releases)
and run it with:
```
java -jar /path/to/google-java-format-1.1-all-deps.jar <options> [files...]
```
The formatter can act on whole files, on limited lines (`--lines`), on specific
ofsets (`--offset`), passing through to standard-out (default) or altered
in-place (`--replace`).
To reformat changed lines in a specific patch, use
[`google-java-format-diff.py`]
(https://github.com/google/google-java-format/blob/master/scripts/google-java-format-diff.py)
***Note:*** *There is no configurability as to the formatter's algorithm for
formatting. This is a deliberate design decision to unify our code formatting on
a single format.*
### IntelliJ
A [google-java-format IntelliJ plugin](https://plugins.jetbrains.com/plugin/8527)
is available from the plugin repository.
The plugin adds a `Reformat with google-java-format` action to the Code menu.
The first time the action is used, the plugin substitutes the default
CodeStyleManager with an implementation that uses `google-java-format` on Java
files. Until IntelliJ is restarted, the `Reformat code` action will also
`google-java-format`.
There is an [open bug](https://devnet.jetbrains.com/thread/464297) against
IntelliJ to add support for configuring external formatters.
### as a library
The formatter can be used in software which generates java to output more
legible java code. Just include the library in your maven/gradle/etc.
configuration.
#### Maven
```xml
<dependency>
<groupId>com.google.googlejavaformat</groupId>
<artifactId>google-java-format</artifactId>
<version>1.1</version>
</dependency>
```
#### Gradle
```groovy
dependencies {
compile 'com.google.googlejavaformat:google-java-format:1.0'
}
```
You can then use the formatter through the `formatSource` methods. E.g.
```java
String formattedSource = new Formatter().formatSource(sourceString);
```
or
```java
CharSource source = ...
CharSink output = ...
new Formatter().formatSource(source, output);
```
Your starting point should be the instance methods of
`com.google.googlejavaformat.java.Formatter`.
## Building from source
mvn install
## Contributing
Please see [the contributors guide](CONTRIBUTING.md) for details.
## License
```text
Copyright 2015 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.
```