blob: b7ac751fd051f3048dad4882d4f33e1a0503c872 [file] [log] [blame]
<!--
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>3.5.4</version>
</parent>
<artifactId>gremlin-console</artifactId>
<name>Apache TinkerPop :: Gremlin Console</name>
<dependencies>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-groovy</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>tinkergraph-gremlin</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<!-- commons-codec is a dependency of httpclient - excluded in root pom to bring all commons-codec versions inline -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-driver</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<optional>true</optional>
</dependency>
<!-- TESTING -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-server</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-test</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>1.56</version>
<scope>test</scope>
<classifier>standalone</classifier>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
<exclusion>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
</exclusion>
<exclusion>
<groupId>xmlunit</groupId>
<artifactId>xmlunit</artifactId>
</exclusion>
<exclusion>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</exclusion>
<exclusion>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<directory>${basedir}/target</directory>
<finalName>${project.artifactId}-${project.version}</finalName>
<resources>
<resource>
<directory>${basedir}/src/main/resources
</directory>
</resource>
</resources>
<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>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<attach>true</attach>
<descriptors>
<descriptor>src/assembly/standalone.xml</descriptor>
<descriptor>src/assembly/distribution.xml</descriptor>
</descriptors>
<finalName>apache-tinkerpop-${project.artifactId}-${project.version}</finalName>
<outputDirectory>target</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
<tarLongFileMode>warn</tarLongFileMode>
<archive>
<manifest>
<mainClass>org.apache.tinkerpop.gremlin.console.Console</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addTestSources</goal>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>compileTests</goal>
<goal>removeStubs</goal>
<goal>removeTestStubs</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>uber</shadedClassifierName>
<shadeSourcesContent>true</shadeSourcesContent>
<createSourcesJar>true</createSourcesJar>
<relocations>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>io.shaded.netty</shadedPattern>
</relocation>
</relocations>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"></transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resources>
<resource>LICENSE.txt</resource>
<resource>LICENSE</resource>
<resource>NOTICE.txt</resource>
<resource>NOTICE</resource>
<resource>licenses</resource>
</resources>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/LICENSE</resource>
<file>src/main/static/LICENSE</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/NOTICE</resource>
<file>src/main/static/NOTICE</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/foundation</resource>
<file>src/main/static/licenses/foundation</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/jbcrypt</resource>
<file>src/main/static/licenses/jbcrypt</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/jcabi-log</resource>
<file>src/main/static/licenses/jcabi-log</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/jcabi-manifests</resource>
<file>src/main/static/licenses/jcabi-manifests</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/jline2</resource>
<file>src/main/static/licenses/jline2</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/kryo</resource>
<file>src/main/static/licenses/kryo</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/minlog</resource>
<file>src/main/static/licenses/minlog</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/normalize</resource>
<file>src/main/static/licenses/normalize</file>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>META-INF/licenses/slf4j</resource>
<file>src/main/static/licenses/slf4j</file>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!-- activates the building of python components and requires that python be installed on the system. use
the .glv file in gremlin-python as an indicator to activate -->
<profile>
<id>console-integration-tests</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<!-- can't use variable here - maven no likey -->
<exists>../gremlin-python/.glv</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-python-reports-directory</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<skip>${skipIntegrationTests}</skip>
<target>
<mkdir dir="${project.build.directory}/python-reports"/>
<mkdir dir="${project.build.directory}/python/env"/>
</target>
</configuration>
</execution>
<!-- copy files in python directory to target/python and run virtual env to sandbox python.
there is no need to "activate" the virtualenv because all calls to python occur
directly from bin/ -->
<execution>
<id>setup-py-env</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<skip>${skipIntegrationTests}</skip>
<tasks>
<copy todir="${project.build.directory}/python">
<fileset dir="src/test/python"/>
</copy>
<exec dir="${project.build.directory}/python" executable="python3"
failonerror="true">
<arg line="--version"/>
</exec>
<exec dir="${project.build.directory}/python" executable="virtualenv"
failonerror="true">
<arg line="--version"/>
</exec>
<exec dir="${project.build.directory}/python" executable="virtualenv"
failonerror="true">
<arg line="--python=python3 env"/>
</exec>
</tasks>
</configuration>
</execution>
<execution>
<id>native-python-build</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<skip>${skipIntegrationTests}</skip>
<target>
<exec executable="env/bin/python" dir="${project.build.directory}/python"
failonerror="true">
<env key="PYTHONPATH" value=""/>
<arg line="setup.py build --build-lib ${project.build.outputDirectory}/Lib"/>
</exec>
</target>
</configuration>
</execution>
<execution>
<id>copy-gremlinsh</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<skip>${skipIntegrationTests}</skip>
<tasks>
<copy todir="${project.build.directory}/python/gremlin-console">
<fileset dir="${project.build.directory}/apache-tinkerpop-gremlin-console-${project.version}-standalone"/>
</copy>
</tasks>
</configuration>
</execution>
<!--
use pytest to execute native python tests - output of xunit output is configured in setup.cfg.
must run on integration tests because package phase has to execute to get the console binaries
available for testing
-->
<execution>
<id>native-python-test</id>
<phase>integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<skip>${skipIntegrationTests}</skip>
<target>
<exec executable="env/bin/python" dir="${project.build.directory}/python"
failonerror="true">
<env key="PYTHONPATH" value=""/>
<arg line="setup.py test"/>
</exec>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>docker-images</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>dockerImages</name>
</property>
</activation>
<build>
<plugins>
<!--
Deploying docker images will happen out of the normal jvm artifact deployment flow, so disable that
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<executions>
<execution>
<id>docker-image-build</id>
<goals>
<goal>build</goal>
</goals>
<configuration>
<tag>${project.version}</tag>
<buildArgs>
<GREMLIN_CONSOLE_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_CONSOLE_DIR>
</buildArgs>
</configuration>
</execution>
<execution>
<id>docker-image-tag-minor-version</id>
<goals>
<goal>tag</goal>
</goals>
<configuration>
<tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
<skip>${only.when.is.prerelease.version}</skip>
</configuration>
</execution>
<execution>
<id>docker-image-push</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<tag>${project.version}</tag>
<skip>${only.when.is.snapshot.used}</skip>
</configuration>
</execution>
<execution>
<id>docker-image-push-minor-version</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
<skip>${only.when.is.prerelease.version}</skip>
</configuration>
</execution>
</executions>
<configuration>
<repository>tinkerpop/gremlin-console</repository>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>