You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/04/29 22:25:45 UTC
[1/3] tinkerpop git commit: TINKERPOP-786 Add option for no default
method generation on GremlinDsl
Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-786 946c52c9f -> 1f7b5e12a
TINKERPOP-786 Add option for no default method generation on GremlinDsl
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dccafd30
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dccafd30
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dccafd30
Branch: refs/heads/TINKERPOP-786
Commit: dccafd3078f2cbf24a13fed02f0feef22013bfff
Parents: 946c52c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat Apr 29 06:40:59 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat Apr 29 06:40:59 2017 -0400
----------------------------------------------------------------------
.../process/traversal/dsl/GremlinDsl.java | 13 +++
.../traversal/dsl/GremlinDslProcessor.java | 88 ++++++++++----------
.../traversal/dsl/GremlinDslProcessorTest.java | 8 ++
.../dsl/SocialNoDefaultMethodsTraversalDsl.java | 37 ++++++++
4 files changed, 104 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dccafd30/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
index 15b93d6..df96007 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDsl.java
@@ -60,4 +60,17 @@ public @interface GremlinDsl {
* this value is not supplied the generated "source" will simply extend from {@link GraphTraversalSource}.
*/
public String traversalSource() default "org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource";
+
+ /**
+ * When set to {@code true}, which is the default, the following methods will be generated to the DSL
+ * implementation of the {@link GraphTraversalSource}:
+ *
+ * <ul>
+ * <li>{@link GraphTraversalSource#addV()}</li>
+ * <li>{@link GraphTraversalSource#addV(String)}</li>
+ * <li>{@link GraphTraversalSource#V(Object...)}</li>
+ * <li>{@link GraphTraversalSource#E(Object...)}</li>
+ * </ul>
+ */
+ public boolean generateDefaultMethods() default true;
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dccafd30/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
index 9e23410..f8a3266 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
@@ -177,48 +177,50 @@ public class GremlinDslProcessor extends AbstractProcessor {
}
}
- // override methods that return GraphTraversal
- traversalSourceClass.addMethod(MethodSpec.methodBuilder("addV")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
- .addStatement("clone.getBytecode().addStep($T.addV)", GraphTraversal.Symbols.class)
- .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
- .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, null))", ctx.traversalClassName, AddVertexStartStep.class)
- .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Vertex.class), ClassName.get(Vertex.class)))
- .build());
- traversalSourceClass.addMethod(MethodSpec.methodBuilder("addV")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addParameter(String.class, "label")
- .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
- .addStatement("clone.getBytecode().addStep($T.addV, label)", GraphTraversal.Symbols.class)
- .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
- .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, label))", ctx.traversalClassName, AddVertexStartStep.class)
- .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Vertex.class), ClassName.get(Vertex.class)))
- .build());
- traversalSourceClass.addMethod(MethodSpec.methodBuilder("V")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addParameter(Object[].class, "vertexIds")
- .varargs(true)
- .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
- .addStatement("clone.getBytecode().addStep($T.V, vertexIds)", GraphTraversal.Symbols.class)
- .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
- .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, $T.class, true, vertexIds))", ctx.traversalClassName, GraphStep.class, Vertex.class)
- .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Vertex.class), ClassName.get(Vertex.class)))
- .build());
- traversalSourceClass.addMethod(MethodSpec.methodBuilder("E")
- .addModifiers(Modifier.PUBLIC)
- .addAnnotation(Override.class)
- .addParameter(Object[].class, "edgeIds")
- .varargs(true)
- .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
- .addStatement("clone.getBytecode().addStep($T.E, edgeIds)", GraphTraversal.Symbols.class)
- .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
- .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, $T.class, true, edgeIds))", ctx.traversalClassName, GraphStep.class, Edge.class)
- .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Edge.class), ClassName.get(Edge.class)))
- .build());
+ if (ctx.generateDefaultMethods) {
+ // override methods that return GraphTraversal
+ traversalSourceClass.addMethod(MethodSpec.methodBuilder("addV")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
+ .addStatement("clone.getBytecode().addStep($T.addV)", GraphTraversal.Symbols.class)
+ .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
+ .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, null))", ctx.traversalClassName, AddVertexStartStep.class)
+ .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Vertex.class), ClassName.get(Vertex.class)))
+ .build());
+ traversalSourceClass.addMethod(MethodSpec.methodBuilder("addV")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addParameter(String.class, "label")
+ .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
+ .addStatement("clone.getBytecode().addStep($T.addV, label)", GraphTraversal.Symbols.class)
+ .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
+ .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, label))", ctx.traversalClassName, AddVertexStartStep.class)
+ .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Vertex.class), ClassName.get(Vertex.class)))
+ .build());
+ traversalSourceClass.addMethod(MethodSpec.methodBuilder("V")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addParameter(Object[].class, "vertexIds")
+ .varargs(true)
+ .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
+ .addStatement("clone.getBytecode().addStep($T.V, vertexIds)", GraphTraversal.Symbols.class)
+ .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
+ .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, $T.class, true, vertexIds))", ctx.traversalClassName, GraphStep.class, Vertex.class)
+ .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Vertex.class), ClassName.get(Vertex.class)))
+ .build());
+ traversalSourceClass.addMethod(MethodSpec.methodBuilder("E")
+ .addModifiers(Modifier.PUBLIC)
+ .addAnnotation(Override.class)
+ .addParameter(Object[].class, "edgeIds")
+ .varargs(true)
+ .addStatement("$N clone = this.clone()", ctx.traversalSourceClazz)
+ .addStatement("clone.getBytecode().addStep($T.E, edgeIds)", GraphTraversal.Symbols.class)
+ .addStatement("$N traversal = new $N(clone)", ctx.defaultTraversalClazz, ctx.defaultTraversalClazz)
+ .addStatement("return ($T) traversal.asAdmin().addStep(new $T(traversal, $T.class, true, edgeIds))", ctx.traversalClassName, GraphStep.class, Edge.class)
+ .returns(ParameterizedTypeName.get(ctx.traversalClassName, ClassName.get(Edge.class), ClassName.get(Edge.class)))
+ .build());
+ }
final JavaFile traversalSourceJavaFile = JavaFile.builder(ctx.packageName, traversalSourceClass.build()).build();
traversalSourceJavaFile.writeTo(filer);
@@ -393,12 +395,14 @@ public class GremlinDslProcessor extends AbstractProcessor {
private final ClassName defaultTraversalClassName;
private final ClassName graphTraversalAdminClassName;
private final TypeElement traversalSourceDslType;
+ private final boolean generateDefaultMethods;
public Context(final TypeElement dslElement) {
annotatedDslType = dslElement;
// gets the annotation on the dsl class/interface
GremlinDsl gremlinDslAnnotation = dslElement.getAnnotation(GremlinDsl.class);
+ generateDefaultMethods = gremlinDslAnnotation.generateDefaultMethods();
traversalSourceDslType = elementUtils.getTypeElement(gremlinDslAnnotation.traversalSource());
packageName = getPackageName(dslElement, gremlinDslAnnotation);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dccafd30/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
index d0d7d6f..982ec5b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
@@ -56,4 +56,12 @@ public class GremlinDslProcessorTest {
.processedWith(new GremlinDslProcessor())
.compilesWithoutError();
}
+
+ @Test
+ public void shouldCompileWithNoDefaultMethods() {
+ ASSERT.about(javaSource())
+ .that(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialNoDefaultMethodsTraversalDsl.java")))
+ .processedWith(new GremlinDslProcessor())
+ .compilesWithoutError();
+ }
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dccafd30/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java b/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java
new file mode 100644
index 0000000..4eb15bd
--- /dev/null
+++ b/gremlin-core/src/test/resources/org/apache/tinkerpop/gremlin/process/traversal/dsl/SocialNoDefaultMethodsTraversalDsl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.dsl;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.GremlinDsl;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@GremlinDsl(generateDefaultMethods = false)
+public interface SocialNoDefaultMethodsTraversalDsl<S, E> extends GraphTraversal.Admin<S, E> {
+ public default GraphTraversal<S, Vertex> knows(final String personName) {
+ return out("knows").hasLabel("person").has("name", personName);
+ }
+
+ public default <E2 extends Number> GraphTraversal<S, E2> meanAgeOfFriends() {
+ return out("knows").hasLabel("person").values("age").mean();
+ }
+}
[2/3] tinkerpop git commit: TINKERPOP-786 Bumped to 0.10 of google
compile-test
Posted by sp...@apache.org.
TINKERPOP-786 Bumped to 0.10 of google compile-test
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/59a6e3e3
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/59a6e3e3
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/59a6e3e3
Branch: refs/heads/TINKERPOP-786
Commit: 59a6e3e314a0ff5a52fdefea1e5ab399c475dae7
Parents: dccafd3
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat Apr 29 06:53:15 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat Apr 29 06:53:15 2017 -0400
----------------------------------------------------------------------
gremlin-core/pom.xml | 6 ++-
.../traversal/dsl/GremlinDslProcessorTest.java | 41 ++++++++++----------
2 files changed, 25 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59a6e3e3/gremlin-core/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index 989bf83..0efadfa 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -104,21 +104,23 @@ limitations under the License.
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
- <version>0.8</version>
+ <version>0.10</version>
<scope>test</scope>
</dependency>
+ <!--
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<version>0.25</version>
<exclusions>
- <!-- truth comes in through compile-testing and has a self-conflict - produces further conflict with hadoop-gremlin -->
+ truth comes in through compile-testing and has a self-conflict - produces further conflict with hadoop-gremlin
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
+-->
</dependencies>
<build>
<directory>${basedir}/target</directory>
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/59a6e3e3/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
index 982ec5b..5df010d 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessorTest.java
@@ -18,13 +18,14 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.dsl;
+import com.google.testing.compile.Compilation;
import com.google.testing.compile.JavaFileObjects;
import org.junit.Test;
import javax.tools.StandardLocation;
-import static com.google.common.truth.Truth.ASSERT;
-import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource;
+import static com.google.testing.compile.CompilationSubject.assertThat;
+import static com.google.testing.compile.Compiler.javac;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
@@ -33,35 +34,35 @@ public class GremlinDslProcessorTest {
@Test
public void shouldCompileToDefaultPackage() {
- ASSERT.about(javaSource())
- .that(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialTraversalDsl.java")))
- .processedWith(new GremlinDslProcessor())
- .compilesWithoutError();
+ Compilation compilation = javac()
+ .withProcessors(new GremlinDslProcessor())
+ .compile(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialTraversalDsl.java")));
+ assertThat(compilation).succeededWithoutWarnings();
}
@Test
public void shouldCompileAndMovePackage() {
- ASSERT.about(javaSource())
- .that(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialMoveTraversalDsl.java")))
- .processedWith(new GremlinDslProcessor())
- .compilesWithoutError()
- .and()
- .generatesFileNamed(StandardLocation.SOURCE_OUTPUT, "org.apache.tinkerpop.gremlin.process.traversal.dsl.social", "SocialMoveTraversal.java");
+ Compilation compilation = javac()
+ .withProcessors(new GremlinDslProcessor())
+ .compile(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialMoveTraversalDsl.java")));
+ assertThat(compilation).succeededWithoutWarnings();
+ assertThat(compilation)
+ .generatedFile(StandardLocation.SOURCE_OUTPUT, "org.apache.tinkerpop.gremlin.process.traversal.dsl.social", "SocialMoveTraversal.java");
}
@Test
public void shouldCompileTraversalAndTraversalSourceToDefaultPackage() {
- ASSERT.about(javaSource())
- .that(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialPackageTraversalDsl.java")))
- .processedWith(new GremlinDslProcessor())
- .compilesWithoutError();
+ Compilation compilation = javac()
+ .withProcessors(new GremlinDslProcessor())
+ .compile(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialPackageTraversalDsl.java")));
+ assertThat(compilation).succeededWithoutWarnings();
}
@Test
public void shouldCompileWithNoDefaultMethods() {
- ASSERT.about(javaSource())
- .that(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialNoDefaultMethodsTraversalDsl.java")))
- .processedWith(new GremlinDslProcessor())
- .compilesWithoutError();
+ Compilation compilation = javac()
+ .withProcessors(new GremlinDslProcessor())
+ .compile(JavaFileObjects.forResource(GremlinDsl.class.getResource("SocialNoDefaultMethodsTraversalDsl.java")));
+ assertThat(compilation).succeededWithoutWarnings();
}
}
[3/3] tinkerpop git commit: TINKERPOP-786 Removed some commented out
config in the pom.xml
Posted by sp...@apache.org.
TINKERPOP-786 Removed some commented out config in the pom.xml
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1f7b5e12
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1f7b5e12
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1f7b5e12
Branch: refs/heads/TINKERPOP-786
Commit: 1f7b5e12af5a105c10fefa6a06b7c5c1a9ea78eb
Parents: 59a6e3e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat Apr 29 06:57:46 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat Apr 29 06:57:46 2017 -0400
----------------------------------------------------------------------
gremlin-core/pom.xml | 14 --------------
1 file changed, 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1f7b5e12/gremlin-core/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index 0efadfa..f3bff75 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -107,20 +107,6 @@ limitations under the License.
<version>0.10</version>
<scope>test</scope>
</dependency>
- <!--
- <dependency>
- <groupId>com.google.truth</groupId>
- <artifactId>truth</artifactId>
- <version>0.25</version>
- <exclusions>
- truth comes in through compile-testing and has a self-conflict - produces further conflict with hadoop-gremlin
- <exclusion>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
--->
</dependencies>
<build>
<directory>${basedir}/target</directory>