# JTS User Guide
## Project Structure
JTS consists of several Java modules, each one corresponds to a separate JAR file.
The core modules are:
* `jts-core` - geometry model, operations, algorithms, and spatial data structures
* `jts-io-common` - I/O classes for open spatial formats
The following modules depend on proprietary libraries, and are not built by default:
* `jts-io-ora` - Oracle reader and writer
* `jts-io-sde` - SDE reader and writer
The following modules are applications and data for testing and working with JTS
* `jts-tests` - The JTS XML test suite and the Test Runner application
* `jts-app` -The TestBuilder GUI, for working with JTS geometry interactively
## Using JTS with Maven
To include JTS in a Maven project, add a dependency block like the following:
```xml
1.16.1
org.locationtech.jts
jts-core
${jts.version}
```
JTS artifacts are available on maven central.
### Using JTS Snapshots
Our [build server](https://ci.eclipse.org/jts/) publishes to the LocationTech Maven repository. To include JTS in a project, add the following repositories to the pom:
```xml
locationtech-releases
https://repo.eclipse.org/content/groups/releases
false
jts-snapshots
https://repo.eclipse.org/content/repositories/jts-snapshots
false
true
```
The latest snapshot builds are now avaialble:
```xml
1.17.0-SNAPSHOT
org.locationtech.jts
jts-core
${jts.version}
```
### Using prior versions of JTS with Maven
Older versions are available on Maven Central:
JTS 1.14.0:
```xml
com.vividsolutions
jts-core
1.14.0
com.vividsolutions
jts-io
1.14.0
```
JTS 1.13:
```xml
com.vividsolutions
jts
1.13
```
Prior releases can also be downloaded from [Source Forge](https://sourceforge.net/projects/jts-topo-suite/files/jts/).
## Using JTS with Jigsaw Modules
JTS uses [#ModuleNameInManifest](http://openjdk.java.net/projects/jigsaw/spec/issues/#ModuleNameInManifest) to export a module name for each of the JARs published for use as a library. In this way, you can depend on the various JTS modules in your `module-info.java` in the following way:
```java
// module-info.java for project org.foo.baz
module org.foo.baz {
requires org.locationtech.jts; // jts-core
requires org.locationtech.jts.io; // jts-io-common
requires org.locationtech.jts.io.oracle; // jts-io-ora
requires org.locationtech.jts.io.sde; // jts-io-sde
}
```
## JTS System Properties
* `-Djts.overlay=ng` enables the use of OverlayNG in `Geometry` overlay methods. (*Note: in a future release this will become the default behaviour*)
## JTS Tools
JTS includes various application tools, which are documented [here](doc/TOOLS.md).