blob: 6a9c080a5b6c1106b024987bb77dd99cc6572793 [file]
<!--
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>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-dotnet</artifactId>
<version>3.7.7-SNAPSHOT</version>
</parent>
<artifactId>gremlin-dotnet-source</artifactId>
<name>Apache TinkerPop :: Gremlin.Net - Source</name>
<packaging>${packaging.type}</packaging>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
<type>pom</type>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<id>update-version</id>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<property>
<name>projectBaseDir</name>
<value>${project.basedir}</value>
</property>
<property>
<name>mavenVersion</name>
<value>${project.version}</value>
</property>
</properties>
<scripts>
<script>
def platformAgnosticBaseDirPath = project.basedir.getAbsolutePath().replace("\\", "/")
def file = new File(platformAgnosticBaseDirPath + "/Gremlin.Net/Gremlin.Net.csproj")
file.write(file.getText("UTF-8").replaceFirst(/&lt;Version&gt;(.*)&lt;\/Version&gt;/, "&lt;Version&gt;" + mavenVersion + "&lt;/Version&gt;"))
file = new File(platformAgnosticBaseDirPath + "/Gremlin.Net.Template/Gremlin.Net.Template.csproj")
file.write(file.getText("UTF-8").replaceFirst(/Gremlin\.Net\" Version="(.*)"/, "Gremlin.Net\" Version=\"" + mavenVersion + "\""))
file = new File(platformAgnosticBaseDirPath + "/Gremlin.Net.Template/Gremlin.Net.Template.nuspec")
file.write(file.getText("UTF-8").replaceFirst(/&lt;version&gt;(.*)&lt;\/version&gt;/, "&lt;version&gt;" + mavenVersion + "&lt;/version&gt;"))
</script>
</scripts>
</configuration>
</execution>
</executions>
</plugin>
<!--
there is no point to building/deploying the jvm stuff - there is no java source really - just poms
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<configuration>
<file>Gremlin.Net/Driver/Tokens.cs</file>
<replacements>
<replacement>
<token>GremlinVersion = ".*"</token>
<value>GremlinVersion = "${project.version}"</value>
</replacement>
</replacements>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>gremlin-dotnet-standard</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<packaging.type>pom</packaging.type>
</properties>
</profile>
<!-- activates the building of .NET components and requires that the .NET SDK be installed on the system -->
<profile>
<id>gremlin-dotnet</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<exists>.glv</exists>
</file>
</activation>
<properties>
<packaging.type>dotnet-library</packaging.type>
</properties>
<build>
<directory>${basedir}/target</directory>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.eobjects.build</groupId>
<artifactId>dotnet-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<packEnabled>true</packEnabled>
<nugetPushEnabled>false</nugetPushEnabled>
<nugetAddEnabled>false</nugetAddEnabled>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>docfx</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<!-- update docfx if necessary -->
<exec executable="dotnet" failonerror="true">
<arg line="dotnet tool restore"/>
</exec>
<exec executable="dotnet" failonerror="true">
<arg line="docfx docfx.json"/>
</exec>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>gremlin-dotnet-src-skipped-warning</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<missing>.glv</missing>
</file>
</activation>
<properties>
<packaging.type>pom</packaging.type>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.github.ekryd.echo-maven-plugin</groupId>
<artifactId>echo-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>skipped-gremlin-dotnet-src-warning</id>
<phase>validate</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>
Skipping gremlin-dotnet build. Activate by creating files tinkerpop/gremlin-dotnet/src/.glv and tinkerpop/gremlin-dotnet/test/.glv
</message>
<level>WARNING</level>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
Provides a way to deploy the Gremlin.Net GLV to nuget. This cannot be part of the standard maven execution
because nuget does not have a staging environment like sonatype for releases. As soon as the release is
published it is public. In our release workflow, deploy occurs prior to vote on the release and we can't
make this stuff public until the vote is over.
-->
<profile>
<id>glv-dotnet-deploy</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>nuget</name>
</property>
</activation>
<properties>
<packaging.type>dotnet-library</packaging.type>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>pack-dotnet-template</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<exec executable="dotnet" failonerror="true">
<arg line="pack Gremlin.Net.Template/Gremlin.Net.Template.csproj --configuration Release --output ."/>
</exec>
</target>
</configuration>
</execution>
<execution>
<id>deploy-nuget</id>
<phase>deploy</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!--
the NuGet API key is passed explicitly via the "api-key" option, sourced
from the "nuget.apiKey" Maven property, which the release manager must set
with "-Dnuget.apiKey=..." when running "mvn deploy -Dnuget".
-->
<fail unless="nuget.apiKey">
Deploying to NuGet requires an API key. Please supply one with "-Dnuget.apiKey=[your-api-key]" when running "mvn deploy -Dnuget".
</fail>
<exec executable="dotnet" failonerror="true">
<arg line="nuget push Gremlin.Net/bin/Gremlin.Net.${project.version}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${nuget.apiKey}"/>
</exec>
<exec executable="dotnet" failonerror="true">
<arg line="nuget push Gremlin.Net.Template.${project.version}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${nuget.apiKey}"/>
</exec>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-core</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
<type>pom</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<id>generate-dsl</id>
<phase>deploy</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<scripts>
<script><![CDATA[
// prevent SNAPSHOT deployment for .NET
def versionToUse = '${project.version}'
if (versionToUse.endsWith("-SNAPSHOT"))
throw new RuntimeException("Current version is a SNAPSHOT which can not be deployed to nuget")
]]>
</script>
</scripts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>