1*f0340d8eSSorin Basca# JavaParser 2*f0340d8eSSorin Basca 3*f0340d8eSSorin Basca[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.javaparser%22%20AND%20a%3A%22javaparser-core%22) 4*f0340d8eSSorin Basca[](https://travis-ci.org/javaparser/javaparser) 5*f0340d8eSSorin Basca[](https://coveralls.io/github/javaparser/javaparser?branch=master) 6*f0340d8eSSorin Basca[](https://gitter.im/javaparser/javaparser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 7*f0340d8eSSorin Basca[](LICENSE) 8*f0340d8eSSorin Basca 9*f0340d8eSSorin BascaThis project contains a set of libraries implementing a Java 1.0 - Java 12 Parser with advanced analysis functionalities. 10*f0340d8eSSorin Basca 11*f0340d8eSSorin BascaOur main site is at [JavaParser.org](http://javaparser.org) 12*f0340d8eSSorin Basca 13*f0340d8eSSorin Basca## Setup 14*f0340d8eSSorin Basca 15*f0340d8eSSorin BascaThe project binaries are available in Maven Central. 16*f0340d8eSSorin Basca 17*f0340d8eSSorin BascaWe strongly advise users to adopt Maven, Gradle or another build system for their projects. 18*f0340d8eSSorin BascaIf you are not familiar with them we suggest taking a look at the maven quickstart projects 19*f0340d8eSSorin Basca([javaparser-maven-sample](https://github.com/javaparser/javaparser-maven-sample), 20*f0340d8eSSorin Basca[javasymbolsolver-maven-sample](https://github.com/javaparser/javasymbolsolver-maven-sample)). 21*f0340d8eSSorin Basca 22*f0340d8eSSorin BascaJust add the following to your maven configuration or tailor to your own dependency management system. 23*f0340d8eSSorin Basca 24*f0340d8eSSorin Basca[Please refer to the Migration Guide when upgrading from 2.5.1 to 3.0.0+](https://github.com/javaparser/javaparser/wiki/Migration-Guide) 25*f0340d8eSSorin Basca 26*f0340d8eSSorin Basca**Maven**: 27*f0340d8eSSorin Basca 28*f0340d8eSSorin Basca```xml 29*f0340d8eSSorin Basca<dependency> 30*f0340d8eSSorin Basca <groupId>com.github.javaparser</groupId> 31*f0340d8eSSorin Basca <artifactId>javaparser-symbol-solver-core</artifactId> 32*f0340d8eSSorin Basca <version>3.14.9</version> 33*f0340d8eSSorin Basca</dependency> 34*f0340d8eSSorin Basca``` 35*f0340d8eSSorin Basca 36*f0340d8eSSorin Basca**Gradle**: 37*f0340d8eSSorin Basca 38*f0340d8eSSorin Basca``` 39*f0340d8eSSorin Bascaimplementation 'com.github.javaparser:javaparser-symbol-solver-core:3.14.9' 40*f0340d8eSSorin Basca``` 41*f0340d8eSSorin Basca 42*f0340d8eSSorin BascaSince Version 3.5.10, the JavaParser project includes the JavaSymbolSolver. 43*f0340d8eSSorin BascaWhile JavaParser generates an Abstract Syntax Tree, JavaSymbolSolver analyzes that AST and is able to find 44*f0340d8eSSorin Bascathe relation between an element and its declaration (e.g. for a variable name it could be a parameter of a method, providing information about its type, position in the AST, ect). 45*f0340d8eSSorin Basca 46*f0340d8eSSorin BascaUsing the dependency above will add both JavaParser and JavaSymbolSolver to your project. If you only need the core functionality of parsing Java source code in order to traverse and manipulate the generated AST, you can reduce your projects boilerplate by only including JavaParser to your project: 47*f0340d8eSSorin Basca 48*f0340d8eSSorin Basca**Maven**: 49*f0340d8eSSorin Basca 50*f0340d8eSSorin Basca```xml 51*f0340d8eSSorin Basca<dependency> 52*f0340d8eSSorin Basca <groupId>com.github.javaparser</groupId> 53*f0340d8eSSorin Basca <artifactId>javaparser-core</artifactId> 54*f0340d8eSSorin Basca <version>3.14.9</version> 55*f0340d8eSSorin Basca</dependency> 56*f0340d8eSSorin Basca``` 57*f0340d8eSSorin Basca 58*f0340d8eSSorin Basca**Gradle**: 59*f0340d8eSSorin Basca 60*f0340d8eSSorin Basca``` 61*f0340d8eSSorin Bascaimplementation 'com.github.javaparser:javaparser-core:3.14.9' 62*f0340d8eSSorin Basca``` 63*f0340d8eSSorin Basca 64*f0340d8eSSorin BascaSince version 3.6.17 the AST can be serialized to JSON. 65*f0340d8eSSorin BascaThere is a separate module for this: 66*f0340d8eSSorin Basca 67*f0340d8eSSorin Basca**Maven**: 68*f0340d8eSSorin Basca 69*f0340d8eSSorin Basca```xml 70*f0340d8eSSorin Basca<dependency> 71*f0340d8eSSorin Basca <groupId>com.github.javaparser</groupId> 72*f0340d8eSSorin Basca <artifactId>javaparser-core-serialization</artifactId> 73*f0340d8eSSorin Basca <version>3.14.9</version> 74*f0340d8eSSorin Basca</dependency> 75*f0340d8eSSorin Basca``` 76*f0340d8eSSorin Basca 77*f0340d8eSSorin Basca**Gradle**: 78*f0340d8eSSorin Basca 79*f0340d8eSSorin Basca``` 80*f0340d8eSSorin Bascaimplementation 'com.github.javaparser:javaparser-core-serialization:3.14.9' 81*f0340d8eSSorin Basca``` 82*f0340d8eSSorin Basca 83*f0340d8eSSorin Basca## How To Compile Sources 84*f0340d8eSSorin Basca 85*f0340d8eSSorin BascaIf you checked out the project from GitHub you can build the project with maven using: 86*f0340d8eSSorin Basca 87*f0340d8eSSorin Basca``` 88*f0340d8eSSorin Bascamvn clean install 89*f0340d8eSSorin Basca``` 90*f0340d8eSSorin Basca 91*f0340d8eSSorin BascaIf you checkout the sources and want to view the project in an IDE, it is best to first generate some of the source files; otherwise you will get many compilation complaints in the IDE. (mvn clean install already does this for you.) 92*f0340d8eSSorin Basca 93*f0340d8eSSorin Basca``` 94*f0340d8eSSorin Bascamvn javacc:javacc 95*f0340d8eSSorin Basca``` 96*f0340d8eSSorin Basca 97*f0340d8eSSorin BascaIf you modify the code of the AST nodes, specifically if you add or remove fields or node classes, 98*f0340d8eSSorin Bascathe code generators will update a lot of code for you. 99*f0340d8eSSorin BascaThe `run_metamodel_generator.sh` script will rebuild the metamodel, 100*f0340d8eSSorin Bascawhich is used by the code generators which are run by `run_core_generators.sh` 101*f0340d8eSSorin BascaMake sure that `javaparser-core` at least compiles before you run these. 102*f0340d8eSSorin Basca 103*f0340d8eSSorin Basca## More information 104*f0340d8eSSorin Basca 105*f0340d8eSSorin Basca#### [JavaParser.org](https://javaparser.org) is the main information site. 106*f0340d8eSSorin Basca 107*f0340d8eSSorin Basca## License 108*f0340d8eSSorin Basca 109*f0340d8eSSorin BascaJavaParser is available either under the terms of the LGPL License or the Apache License. You as the user are entitled to choose the terms under which adopt JavaParser. 110*f0340d8eSSorin Basca 111*f0340d8eSSorin BascaFor details about the LGPL License please refer to [LICENSE.LGPL](ttps://github.com/javaparser/javaparser/blob/master/LICENSE.LGPL). 112*f0340d8eSSorin Basca 113*f0340d8eSSorin BascaFor details about the Apache License please refer to [LICENSE.APACHE](ttps://github.com/javaparser/javaparser/blob/master/LICENSE.APACHE). 114