This is an automated email from the ASF dual-hosted git repository. okram pushed a commit to branch tp4 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 08be42f34b3e5068a08363e18a78e90aff3288e2 Author: Marko A. Rodriguez <[email protected]> AuthorDate: Sun Mar 3 08:37:10 2019 -0700 first organizational push on tp4. basic structure, pom.xmls up and running, and some basic code for play. --- .gitignore | 5 + README.asciidoc | 21 ++ gremlin-core/pom.xml | 46 +++++ .../tinkerpop/gremlin/language/GremlinCore.java | 29 +++ .../apache/tinkerpop/gremlin/machine/Bytecode.java | 42 ++++ .../tinkerpop/gremlin/machine/Instruction.java | 47 +++++ .../tinkerpop/gremlin/machine/Traversal.java | 45 +++++ .../tinkerpop/gremlin/machine/Traverser.java | 45 +++++ .../gremlin/machine/coefficients/Coefficients.java | 36 ++++ .../machine/coefficients/LongCoefficients.java | 50 +++++ .../gremlin/machine/functions/MapFunction.java | 45 +++++ .../tinkerpop/gremlin/machine/TraversalTest.java | 36 ++++ pom.xml | 217 +++++++++++++++++++++ 13 files changed, 664 insertions(+) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad8c63c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.iml +*.ipr +*.iws +target/ +fileTemplates/ diff --git a/README.asciidoc b/README.asciidoc index 1eaec1a..aba1b44 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -15,3 +15,24 @@ See the License for the specific language governing permissions and limitations under the License. //// == TinkerPop4 + +* gremlin-core: A collection of Gremlin machine and language components +* gremlin-data +** gremlin-graphs +*** gremlin-neo4j: A Neo4j implementation of the Gremlin graph primitives +*** gremlin-tinkergraph: A TinkerGraph implementation of the Gremlin graph primitives +* gremlin-machines +** gremlin-beam: Apache Beam implementation of the Gremlin traversal machine +** gremlin-akka: Akka implementation of the Gremlin traversal machine +** gremlin-pipes: Java iterator implementation of the Gremlin traversal machine +* gremlin-languages +** gremlin-variants +*** gremlin-groovy: Groovy implementation of the Gremlin traversal language +*** gremlin-python: Python implementation of the Gremlin traversal language +*** gremlin-javascript: JavaScript implementation of the Gremlin traversal language +*** gremlin-dotnet: C# implementation of the Gremlin traversal language +** gremlin-uniques +*** gremlin-sparql: A SPARQL to Gremlin bytecode compiler +*** gremlin-sql: An SQL to Gremlin bytecode compiler +*** gremlin-cypher: A Cypher to Gremlin bytecode compiler +* gremlin-test: language test suite \ No newline at end of file diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml new file mode 100644 index 0000000..b92f8fd --- /dev/null +++ b/gremlin-core/pom.xml @@ -0,0 +1,46 @@ +<!-- +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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>tinkerpop</artifactId> + <groupId>org.apache.tinkerpop</groupId> + <version>4.0-SNAPSHOT</version> + </parent> + <name>Apache TinkerPop :: Gremlin Core</name> + <artifactId>gremlin-core</artifactId> + <build> + <directory>${basedir}/target</directory> + <finalName>${project.artifactId}-${project.version}</finalName> + <testResources> + <testResource> + <directory>${basedir}/src/test/resources + </directory> + </testResource> + </testResources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/GremlinCore.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/GremlinCore.java new file mode 100644 index 0000000..f876aaa --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/GremlinCore.java @@ -0,0 +1,29 @@ +/* + * 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.language; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public interface GremlinCore { + + public default GremlinCore select() { + return null; + } +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Bytecode.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Bytecode.java new file mode 100644 index 0000000..5334fd0 --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Bytecode.java @@ -0,0 +1,42 @@ +/* + * 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.machine; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public class Bytecode<C> { + + public List<Instruction<C>> instructions; + + public Bytecode() { + this.instructions = new ArrayList<>(); + } + + public void addInstruction(final C coefficient, final String op, final Object... args) { + this.instructions.add(new Instruction<>(coefficient, op, args)); + } + + public List<Instruction<C>> getInstructions() { + return this.instructions; + } +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Instruction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Instruction.java new file mode 100644 index 0000000..dfc9d0a --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Instruction.java @@ -0,0 +1,47 @@ +/* + * 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.machine; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public class Instruction<C> { + + private final C coefficient; + private final String op; + private final Object[] args; + + public Instruction(final C coefficient, final String op, final Object... args) { + this.coefficient = coefficient; + this.op = op; + this.args = args; + } + + public C getCoefficient() { + return this.coefficient; + } + + public String getOp() { + return this.op; + } + + public Object[] getArgs() { + return this.args; + } +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Traversal.java new file mode 100644 index 0000000..72da3c2 --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Traversal.java @@ -0,0 +1,45 @@ +/* + * 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.machine; + +import java.util.function.Function; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public class Traversal<C, A, B> { + + private final Bytecode<C> bytecode; + private C currentCoefficient; + + public Traversal(final C unity) { + this.currentCoefficient = unity; + this.bytecode = new Bytecode<>(); + } + + public <E> Traversal<C, A, E> map(final Function<B, E> mapFunction) { + this.bytecode.addInstruction(this.currentCoefficient, "map", mapFunction); + return (Traversal) this; + } + + public Bytecode<C> getBytecode() { + return this.bytecode; + } + +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Traverser.java new file mode 100644 index 0000000..6c0712c --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/Traverser.java @@ -0,0 +1,45 @@ +/* + * 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.machine; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public class Traverser<C, A> { + + private final C coefficient; + private final A object; + + public Traverser(final C coefficient, final A object) { + this.coefficient = coefficient; + this.object = object; + } + + public C getCoefficient() { + return this.coefficient; + } + + public A getObject() { + return this.object; + } + + public <B> Traverser<C, B> split(final C coefficient, final B object) { + return new Traverser<>(coefficient, object); + } +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/coefficients/Coefficients.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/coefficients/Coefficients.java new file mode 100644 index 0000000..d6fcb15 --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/coefficients/Coefficients.java @@ -0,0 +1,36 @@ +/* + * 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.machine.coefficients; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public interface Coefficients<C> { + + public C sum(final C coefficientA, final C coefficientB); + + public C multiply(final C coefficientA, final C coefficientB); + + public C unity(); + + public C zero(); + + public Long count(final Long coefficient); + +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/coefficients/LongCoefficients.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/coefficients/LongCoefficients.java new file mode 100644 index 0000000..d59c52c --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/coefficients/LongCoefficients.java @@ -0,0 +1,50 @@ +/* + * 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.machine.coefficients; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public final class LongCoefficients implements Coefficients<Long> { + + @Override + public final Long sum(final Long coefficientA, final Long coefficientB) { + return coefficientA + coefficientB; + } + + @Override + public final Long multiply(final Long coefficientA, final Long coefficientB) { + return coefficientA * coefficientB; + } + + @Override + public final Long unity() { + return 1L; + } + + @Override + public final Long zero() { + return 0L; + } + + @Override + public final Long count(final Long coefficient) { + return coefficient; + } +} diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/functions/MapFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/functions/MapFunction.java new file mode 100644 index 0000000..35d5b12 --- /dev/null +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/machine/functions/MapFunction.java @@ -0,0 +1,45 @@ +/* + * 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.machine.functions; + +import org.apache.tinkerpop.gremlin.machine.Traverser; +import org.apache.tinkerpop.gremlin.machine.coefficients.Coefficients; + +import java.util.function.Function; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public class MapFunction<C, A, B> implements Function<Traverser<C, A>, Traverser<C, B>> { + + private final C coefficient; + private final Coefficients<C> coefficients; + private final Function<A, B> mapFunction; + + public MapFunction(final Coefficients<C> coefficients, final C coefficient, final Function<A, B> mapFunction) { + this.coefficients = coefficients; + this.coefficient = coefficient; + this.mapFunction = mapFunction; + } + + @Override + public Traverser<C, B> apply(final Traverser<C, A> traverser) { + return traverser.split(this.coefficients.multiply(traverser.getCoefficient(), this.coefficient), this.mapFunction.apply(traverser.getObject())); + } +} diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/machine/TraversalTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/machine/TraversalTest.java new file mode 100644 index 0000000..30322a1 --- /dev/null +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/machine/TraversalTest.java @@ -0,0 +1,36 @@ +/* + * 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.machine; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public class TraversalTest { + + @Test + public void shouldHaveBytecode() { + final Traversal<Long, Integer, Integer> traversal = new Traversal<>(1L); + traversal.map(a -> a + 1); + assertEquals("map", traversal.getBytecode().getInstructions().get(0).getOp()); + } +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..dee708e --- /dev/null +++ b/pom.xml @@ -0,0 +1,217 @@ +<!-- +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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>21</version> + </parent> + <groupId>org.apache.tinkerpop</groupId> + <artifactId>tinkerpop</artifactId> + <version>4.0-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache TinkerPop</name> + <description>A Distributed Virtual Machine and Language</description> + <url>http://tinkerpop.apache.org/</url> + <mailingLists> + <mailingList> + <name>Users</name> + <subscribe>http://groups.google.com/group/gremlin-users</subscribe> + <unsubscribe>http://groups.google.com/group/gremlin-users</unsubscribe> + <archive>http://groups.google.com/group/gremlin-users/topics</archive> + </mailingList> + <mailingList> + <name>Developers</name> + <subscribe>[email protected]</subscribe> + <unsubscribe>[email protected]</unsubscribe> + <archive>[email protected]</archive> + </mailingList> + </mailingLists> + <inceptionYear>2019</inceptionYear> + <licenses> + <license> + <name>Apache 2</name> + <url>http://www.opensource.org/licenses/Apache-2.0</url> + </license> + </licenses> + <organization> + <name>Apache Software Foundation</name> + <url>http://www.apache.org/</url> + </organization> + <developers> + <developer> + <name>Marko A. Rodriguez</name> + <email>[email protected]</email> + <url>http://markorodriguez.com</url> + </developer> + </developers> + <prerequisites> + <maven>3.2.5</maven> + </prerequisites> + <modules> + <module>gremlin-core</module> + </modules> + <scm> + <connection>scm:git:[email protected]:apache/tinkerpop.git</connection> + <developerConnection>scm:git:[email protected]:apache/tinkerpop.git</developerConnection> + <url>https://github.com/apache/tinkerpop</url> + </scm> + <properties> + <junit.version>5.4.0</junit.version> + </properties> + <dependencies> + <!-- TESTING --> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>5.4.0</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-engine</artifactId> + <version>5.4.0</version> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <directory>${basedir}/target</directory> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.4.1</version> + <executions> + <execution> + <id>enforce-all</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <DependencyConvergence/> + <requireJavaVersion> + <version>[11.0,)</version> + </requireJavaVersion> + <requireMavenVersion> + <version>[3.2.5,)</version> + </requireMavenVersion> + </rules> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>0.12</version> + <executions> + <execution> + <id>rat-checks</id> + <phase>validate</phase> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + <configuration> + <excludeSubProjects>false</excludeSubProjects> + <excludes> + <exclude>fileTemplates/</exclude> + <exclude>**/*.iml</exclude> + <exclude>**/target/**</exclude> + </excludes> + <licenses> + <license implementation="org.apache.rat.analysis.license.ApacheSoftwareLicense20"/> + </licenses> + </configuration> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.0</version> + <configuration> + <source>11</source> + <target>11</target> + <compilerArgs> + <arg>-parameters</arg> + </compilerArgs> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.22.1</version> + <configuration> + <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory} -Dis.testing=true + </argLine> + <excludes> + <exclude>**/*IntegrateTest.java</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + <version>2.22.1</version> + <executions> + <execution> + <id>integration-test</id> + <goals> + <goal>integration-test</goal> + </goals> + <configuration> + <includes> + <include>**/*IntegrateTest.java</include> + </includes> + <skipTests>${skipIntegrationTests}</skipTests> + <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dhost=localhost -Dport=8182 + -Dbuild.dir=${project.build.directory} -Dis.testing=true + </argLine> + <summaryFile>target/failsafe-reports/failsafe-integration.xml</summaryFile> + </configuration> + </execution> + <execution> + <id>verify-integration-test</id> + <goals> + <goal>verify</goal> + </goals> + <configuration> + <skipTests>${skipIntegrationTests}</skipTests> + <summaryFiles> + <summaryFile>target/failsafe-reports/failsafe-integration.xml</summaryFile> + </summaryFiles> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </pluginManagement> + </build> +</project> \ No newline at end of file
