xref: /aosp_15_r20/external/javaparser/readme.md (revision f0340d8e30c177f9125cc02e7b512609509b136e)
1*f0340d8eSSorin Basca# JavaParser
2*f0340d8eSSorin Basca
3*f0340d8eSSorin Basca[![Maven Central](https://img.shields.io/maven-central/v/com.github.javaparser/javaparser-core.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.javaparser%22%20AND%20a%3A%22javaparser-core%22)
4*f0340d8eSSorin Basca[![Build Status](https://travis-ci.org/javaparser/javaparser.svg?branch=master)](https://travis-ci.org/javaparser/javaparser)
5*f0340d8eSSorin Basca[![Coverage Status](https://coveralls.io/repos/javaparser/javaparser/badge.svg?branch=master&service=github)](https://coveralls.io/github/javaparser/javaparser?branch=master)
6*f0340d8eSSorin Basca[![Join the chat at https://gitter.im/javaparser/javaparser](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/javaparser/javaparser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
7*f0340d8eSSorin Basca[![License LGPL-3/Apache-2.0](https://img.shields.io/badge/license-LGPL--3%2FApache--2.0-blue.svg)](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