<?xml version="1.0" encoding="UTF-8"?>
<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>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>11</maven.compiler.source>
      <maven.compiler.target>11</maven.compiler.target>
      <failOnMissingWebXml>false</failOnMissingWebXml>
      <hotmoka.version>1.0.0</hotmoka.version>
      <takamaka.version>1.0.0</takamaka.version>
    </properties>

    <groupId>io.hotmoka</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>dev</version>
    <name>Hotmoka</name>
    <description>A network of nodes for blockchain or IoT, with smart contracts in Java.</description>
	<url>https://github.com/Hotmoka/hotmoka</url>

    <organization>
		<url>https://www.hotmoka.io</url>
		<name>Hotmoka</name>
	</organization>
	<inceptionYear>2019</inceptionYear>

	<licenses>
      <license>
		<name>The Apache License, Version 2.0</name>
		<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
	  </license>
	</licenses>

	<developers>
 	  <developer>
		<name>Fausto Spoto</name>
		<email>fausto.spoto@hotmoka.io</email>
		<organization>Hotmoka</organization>
		<organizationUrl>https://www.hotmoka.io</organizationUrl>
		<timezone>UTC+01:00</timezone>
	  </developer>
	</developers>

    <modules>
      <module>io-takamaka-code</module>
      <module>io-hotmoka-constants</module>
      <module>io-hotmoka-whitelisting</module>
      <module>io-hotmoka-verification</module>
      <module>io-hotmoka-instrumentation</module>
      <module>io-hotmoka-beans</module>
      <module>io-hotmoka-nodes</module>
      <module>io-hotmoka-views</module>
      <module>io-hotmoka-network</module>
      <module>io-hotmoka-service</module>
      <module>io-hotmoka-ws-client</module>
      <module>io-hotmoka-remote</module>
      <module>io-hotmoka-crypto</module>
      <module>io-hotmoka-patricia</module>
      <module>io-hotmoka-local</module>
      <module>io-hotmoka-tools</module>
	  <module>io-hotmoka-stores</module>
      <module>io-hotmoka-memory</module>
	  <module>io-hotmoka-xodus</module>
      <module>io-hotmoka-tendermint-abci</module>
      <module>io-hotmoka-tendermint</module>
      <!-- <module>io-hotmoka-takamaka</module>
	  <module>io-hotmoka-runs</module>
      <module>io-hotmoka-examples</module>
      <module>io-hotmoka-tests</module> -->
    </modules>

    <distributionManagement>
      <snapshotRepository>
        <id>ossrh</id>
        <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
      </snapshotRepository>
      <repository>
        <id>ossrh</id>
        <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
      </repository>
    </distributionManagement>

    <scm>
      <connection>scm:git:git://github.com/Hotmoka/hotmoka.git</connection>
      <developerConnection>scm:git:git@github.com:Hotmoka/hotmoka.git</developerConnection>
      <url>https://github.com/Hotmoka/hotmoka</url>
      <tag>HEAD</tag>
    </scm>

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
		  <version>3.1.0</version>
		  <configuration>
		    <failOnError>false</failOnError>
		    <filesets>
		      <fileset>
		        <directory>modules</directory>
		        <includes>
		          <include>**/*</include>
		        </includes>
		        <followSymlinks>false</followSymlinks>
		      </fileset>
		      <fileset>
		        <directory>docs</directory>
		        <includes>
		          <include>**/*</include>
		        </includes>
		        <followSymlinks>false</followSymlinks>
		      </fileset>
		    </filesets>
		  </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
		  <version>3.8.1</version>
		  <configuration>
		    <release>11</release>
		  </configuration>
        </plugin>
        <plugin>
		  <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.2</version>
          <executions>
            <execution>
              <id>copy-unnamed-module</id>
              <phase>package</phase>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${project.parent.basedir}/modules/unnamed</outputDirectory>
                <excludeArtifactIds>
                  <!-- we exclude all modules built by Maven: their build will put them at the right place -->
				  io-takamaka-code,
                  io-hotmoka-constants,
                  io-hotmoka-instrumentation,
                  io-hotmoka-verification,
                  io-hotmoka-whitelisting,
                  io-hotmoka-beans,
                  io-hotmoka-crypto,
                  io-hotmoka-network,
                  io-hotmoka-service,
                  io-hotmoka-remote,
                  io-hotmoka-nodes,
                  io-hotmoka-views,
                  io-hotmoka-memory,
                  io-hotmoka-patricia,
                  io-hotmoka-service,
                  io-hotmoka-remote,
                  io-hotmoka-tendermint-abci,
                  io-hotmoka-tendermint,
                  io-hotmoka-xodus,
                  io-hotmoka-ws-client,
                  io-hotmoka-stores,
                  io-hotmoka-tools,
                  io-hotmoka-takamaka,
                  io-hotmoka-runs,
                  io-hotmoka-local,

                  <!-- we exclude all modules that go into the explicit folder -->
                  it-univr-bcel,
                  gson,
                  nv-websocket-client
                  bcprov-jdk15on,
                  picocli,

                  <!--  we exclude all modules that go into the automatic folder -->
                  bcel,
                  io-hotmoka-tendermint-abci,
                  io-hotmoka-xodus,
                  commons-cli,
                  grpc-stub,
                  protobuf-java,
                  spring-aop,
                  spring-beans,
                  spring-boot,
                  spring-boot-autoconfigure,
                  spring-boot-starter,
                  spring-boot-starter-json,
                  spring-boot-starter-tomcat,
                  spring-boot-starter-web,
                  spring-boot-starter-websocket,
                  spring-context,
                  spring-core,
                  spring-expression,
                  spring-jcl,
                  spring-messaging,
                  spring-web,
                  spring-webmvc,
                  spring-websocket,
                  tomcat-embed-core,
                  tomcat-embed-websocket,
                  slf4j-api,

                  <!-- we exclude all modules that are only used for testing -->
                  junit-jupiter,
                  junit-jupiter-api,
                  junit-jupiter-engine,
                  junit-jupiter-params,
                  junit-platform-commons,
                  junit-platform-engine,
                  maven-model,
                  plexus-utils
                </excludeArtifactIds>
              </configuration>
            </execution>
            <execution>
              <id>copy-automatic-modules</id>
              <phase>package</phase>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${project.parent.basedir}/modules/automatic</outputDirectory>
                <includeArtifactIds>
                  bcel,
                  io-hotmoka-tendermint-abci,
                  io-hotmoka-xodus,
                  commons-cli,
                  grpc-stub,
                  protobuf-java,
                  spring-aop,
                  spring-beans,
                  spring-boot,
                  spring-boot-autoconfigure,
                  spring-boot-starter,
                  spring-boot-starter-tomcat,
                  spring-boot-starter-web,
                  spring-boot-starter-websocket,
                  spring-context,
                  spring-core,
                  spring-expression,
                  spring-jcl,
                  spring-messaging,
                  spring-web,
                  spring-webmvc,
                  spring-websocket,
                  tomcat-embed-core,
                  tomcat-embed-websocket,
                  slf4j-api
                </includeArtifactIds>
              </configuration>
            </execution>
            <execution>
              <id>copy-explicit-modules</id>
              <phase>package</phase>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${project.parent.basedir}/modules/explicit</outputDirectory>
                <includeArtifactIds>
                  it-univr-bcel,
                  gson,
                  bcprov-jdk15on,
                  picocli
                </includeArtifactIds>
              </configuration>
            </execution>
          </executions>
        </plugin>
		<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.22.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M4</version>
          <configuration>
            <includes>
              <include>*.java</include>
            </includes>
	        <systemProperties>
    	      <property>
        	     <name>cheapTests</name>
            	 <value>${cheapTests}</value>
       	 	  </property>
         	</systemProperties>
     	  </configuration>
        </plugin>
        <plugin>
  		  <groupId>org.apache.maven.plugins</groupId>
    	  <artifactId>maven-source-plugin</artifactId>
    	  <version>3.2.0</version>
    	  <executions>
        	<execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
        	</execution>
    	  </executions>
	    </plugin>
	    <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.2.0</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.sonatype.plugins</groupId>
          <artifactId>nexus-staging-maven-plugin</artifactId>
          <version>1.6.8</version>
          <extensions>true</extensions>
          <configuration>
            <serverId>ossrh</serverId>
            <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
            <autoReleaseAfterClose>true</autoReleaseAfterClose>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
          <executions>
            <execution>
              <id>sign-artifacts</id>
              <phase>verify</phase>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <outputDirectory>docs</outputDirectory>
            <finalName>hotmoka-${hotmoka.version}</finalName>
            <additionalJOptions>
		        <additionalJOption>-Xmaxerrs</additionalJOption>
        		<additionalJOption>65536</additionalJOption>
        		<additionalJOption>-Xmaxwarns</additionalJOption>
        		<additionalJOption>65536</additionalJOption>
      		</additionalJOptions>
          </configuration>
          <executions>
            <execution>
              <id>aggregate</id>
              <goals>
                <goal>aggregate</goal>
              </goals>
              <phase>site</phase>
              <configuration>
              </configuration>
            </execution>
          </executions>
        </plugin> -->
      </plugins>
    </build>
</project>