diff --git a/.gitignore b/.gitignore
index f904d2e..db18f71 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/nbproject/private/
/build/
-/dist/
\ No newline at end of file
+/dist/
+/target/
\ No newline at end of file
diff --git a/README.md b/README.md
index 5cffd66..590bdac 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,19 @@
#java-graphs
Algorithms that build k-nearest neighbors graph (k-nn graph): Brute-force, NN-Descent,...
-##Download
-https://github.com/tdebatty/java-graphs/releases
+##Installation
+
+Using maven:
+```
+
+ info.debatty
+ java-graphs
+ 0.1
+
+```
+
+Or from the [releases page](https://github.com/tdebatty/java-graphs/releases).
+
##NN-Descent
Implementation of NN-Descent, as proposed by Dong, Moses and Li; [Efficient k-nearest neighbor graph construction for generic similarity measures](http://portal.acm.org/citation.cfm?doid=1963405.1963487); Proceedings of the 20th international conference on World wide web.
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 61a230a..0000000
--- a/build.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Builds, tests, and runs the project graphs.
-
-
-
-
-
-
-
-
-
diff --git a/manifest.mf b/manifest.mf
deleted file mode 100644
index 328e8e5..0000000
--- a/manifest.mf
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-X-COMMENT: Main-Class will be added automatically by build
-
diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml
deleted file mode 100644
index e64a538..0000000
--- a/nbproject/build-impl.xml
+++ /dev/null
@@ -1,1390 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must set src.dir
- Must set build.dir
- Must set dist.dir
- Must set build.classes.dir
- Must set dist.javadoc.dir
- Must set build.test.classes.dir
- Must set build.test.results.dir
- Must set build.classes.excludes
- Must set dist.jar
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must set javac.includes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- No tests executed.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must set JVM to use for profiling in profiler.info.jvm
- Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select some files in the IDE or set javac.includes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- To run this application from the command line without Ant, try:
-
- java -jar "${dist.jar.resolved}"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set debug.class
-
-
-
-
- Must select one file in the IDE or set debug.class
-
-
-
-
- Must set fix.includes
-
-
-
-
-
-
-
-
-
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set profile.class
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
-
-
-
-
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
-
-
- Must select some files in the IDE or set test.includes
-
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
-
- Must select one file in the IDE or set applet.url
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select some files in the IDE or set javac.includes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Some tests failed; see details above.
-
-
-
-
-
-
-
-
- Must select some files in the IDE or set test.includes
-
-
-
- Some tests failed; see details above.
-
-
-
- Must select some files in the IDE or set test.class
- Must select some method in the IDE or set test.method
-
-
-
- Some tests failed; see details above.
-
-
-
-
- Must select one file in the IDE or set test.class
-
-
-
- Must select one file in the IDE or set test.class
- Must select some method in the IDE or set test.method
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set applet.url
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set applet.url
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties
deleted file mode 100644
index 3ecf4e3..0000000
--- a/nbproject/genfiles.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=65546f2a
-build.xml.script.CRC32=87c1dd2e
-build.xml.stylesheet.CRC32=8064a381@1.68.1.46
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=346f1500
-nbproject/build-impl.xml.script.CRC32=959c6a74
-nbproject/build-impl.xml.stylesheet.CRC32=5a01deb7@1.68.1.46
diff --git a/nbproject/project.properties b/nbproject/project.properties
deleted file mode 100644
index daa384d..0000000
--- a/nbproject/project.properties
+++ /dev/null
@@ -1,75 +0,0 @@
-annotation.processing.enabled=true
-annotation.processing.enabled.in.editor=false
-annotation.processing.processors.list=
-annotation.processing.run.all.processors=true
-annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
-application.title=java-graphs
-application.vendor=tibo
-build.classes.dir=${build.dir}/classes
-build.classes.excludes=**/*.java,**/*.form
-# This directory is removed when the project is cleaned:
-build.dir=build
-build.generated.dir=${build.dir}/generated
-build.generated.sources.dir=${build.dir}/generated-sources
-# Only compile against the classpath explicitly listed here:
-build.sysclasspath=ignore
-build.test.classes.dir=${build.dir}/test/classes
-build.test.results.dir=${build.dir}/test/results
-# Uncomment to specify the preferred debugger connection transport:
-#debug.transport=dt_socket
-debug.classpath=\
- ${run.classpath}
-debug.test.classpath=\
- ${run.test.classpath}
-# Files in build.classes.dir which should be excluded from distribution jar
-dist.archive.excludes=
-# This directory is removed when the project is cleaned:
-dist.dir=dist
-dist.jar=${dist.dir}/java-graphs.jar
-dist.javadoc.dir=${dist.dir}/javadoc
-endorsed.classpath=
-excludes=
-file.reference.java-graphs-src=src
-includes=**
-jar.compress=false
-javac.classpath=
-# Space-separated list of extra javac options
-javac.compilerargs=
-javac.deprecation=false
-javac.processorpath=\
- ${javac.classpath}
-javac.source=1.6
-javac.target=1.6
-javac.test.classpath=\
- ${javac.classpath}:\
- ${build.classes.dir}
-javac.test.processorpath=\
- ${javac.test.classpath}
-javadoc.additionalparam=
-javadoc.author=false
-javadoc.encoding=${source.encoding}
-javadoc.noindex=false
-javadoc.nonavbar=false
-javadoc.notree=false
-javadoc.private=false
-javadoc.splitindex=true
-javadoc.use=true
-javadoc.version=false
-javadoc.windowtitle=
-main.class=
-manifest.file=manifest.mf
-meta.inf.dir=${src.dir}/META-INF
-mkdist.disabled=false
-platform.active=default_platform
-run.classpath=\
- ${javac.classpath}:\
- ${build.classes.dir}
-# Space-separated list of JVM arguments used when running the project.
-# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
-# To set system properties for unit tests define test-sys-prop.name=value:
-run.jvmargs=
-run.test.classpath=\
- ${javac.test.classpath}:\
- ${build.test.classes.dir}
-source.encoding=UTF-8
-src.dir=${file.reference.java-graphs-src}
diff --git a/nbproject/project.xml b/nbproject/project.xml
deleted file mode 100644
index bd03a50..0000000
--- a/nbproject/project.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
- org.netbeans.modules.java.j2seproject
-
-
- java-graphs
-
-
-
-
-
-
-
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..9aeaa1f
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,112 @@
+
+
+
+
+ 4.0.0
+ info.debatty
+ java-graphs
+ 0.1
+ jar
+
+ ${project.groupId}:${project.artifactId}
+ https://github.com/tdebatty/java-graphs
+ Algorithms that build k-nearest neighbors graph (k-nn graph): Brute-force, NN-Descent,...
+
+
+ UTF-8
+
+
+
+
+ MIT License
+ http://www.opensource.org/licenses/mit-license.php
+
+
+
+
+ Thibault Debatty
+ thibault@debatty.info
+ debatty.info
+ http://debatty.info
+
+
+
+ scm:git:git@github.com:tdebatty/java-graphs.git
+ scm:git:git@github.com:tdebatty/java-graphs.git
+ git@github.com:tdebatty/java-graphs.git
+
+
+
+
+ ossrh
+ https://oss.sonatype.org/content/repositories/snapshots
+
+
+ ossrh
+ https://oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ 1.6.3
+ true
+
+ ossrh
+ https://oss.sonatype.org/
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.9.1
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.5
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+
+
+
+
diff --git a/src/info/debatty/java/graphs/Brute.java b/src/main/java/info/debatty/java/graphs/Brute.java
similarity index 100%
rename from src/info/debatty/java/graphs/Brute.java
rename to src/main/java/info/debatty/java/graphs/Brute.java
diff --git a/src/info/debatty/java/graphs/CallbackInterface.java b/src/main/java/info/debatty/java/graphs/CallbackInterface.java
similarity index 100%
rename from src/info/debatty/java/graphs/CallbackInterface.java
rename to src/main/java/info/debatty/java/graphs/CallbackInterface.java
diff --git a/src/info/debatty/java/graphs/Edge.java b/src/main/java/info/debatty/java/graphs/Edge.java
similarity index 100%
rename from src/info/debatty/java/graphs/Edge.java
rename to src/main/java/info/debatty/java/graphs/Edge.java
diff --git a/src/info/debatty/java/graphs/GraphBuilder.java b/src/main/java/info/debatty/java/graphs/GraphBuilder.java
similarity index 100%
rename from src/info/debatty/java/graphs/GraphBuilder.java
rename to src/main/java/info/debatty/java/graphs/GraphBuilder.java
diff --git a/src/info/debatty/java/graphs/NNDescent.java b/src/main/java/info/debatty/java/graphs/NNDescent.java
similarity index 100%
rename from src/info/debatty/java/graphs/NNDescent.java
rename to src/main/java/info/debatty/java/graphs/NNDescent.java
diff --git a/src/info/debatty/java/graphs/Neighbor.java b/src/main/java/info/debatty/java/graphs/Neighbor.java
similarity index 100%
rename from src/info/debatty/java/graphs/Neighbor.java
rename to src/main/java/info/debatty/java/graphs/Neighbor.java
diff --git a/src/info/debatty/java/graphs/NeighborList.java b/src/main/java/info/debatty/java/graphs/NeighborList.java
similarity index 100%
rename from src/info/debatty/java/graphs/NeighborList.java
rename to src/main/java/info/debatty/java/graphs/NeighborList.java
diff --git a/src/info/debatty/java/graphs/Node.java b/src/main/java/info/debatty/java/graphs/Node.java
similarity index 100%
rename from src/info/debatty/java/graphs/Node.java
rename to src/main/java/info/debatty/java/graphs/Node.java
diff --git a/src/info/debatty/java/graphs/SimilarityInterface.java b/src/main/java/info/debatty/java/graphs/SimilarityInterface.java
similarity index 100%
rename from src/info/debatty/java/graphs/SimilarityInterface.java
rename to src/main/java/info/debatty/java/graphs/SimilarityInterface.java
diff --git a/src/info/debatty/java/graphs/ThreadedNNDescent.java b/src/main/java/info/debatty/java/graphs/ThreadedNNDescent.java
similarity index 100%
rename from src/info/debatty/java/graphs/ThreadedNNDescent.java
rename to src/main/java/info/debatty/java/graphs/ThreadedNNDescent.java
diff --git a/src/info/debatty/java/util/BoundedPriorityQueue.java b/src/main/java/info/debatty/java/util/BoundedPriorityQueue.java
similarity index 100%
rename from src/info/debatty/java/util/BoundedPriorityQueue.java
rename to src/main/java/info/debatty/java/util/BoundedPriorityQueue.java