<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>

    <groupId>org.cloudsimplus</groupId>
    <artifactId>cloudsimplus-automation</artifactId>
    <version>8.0.0</version>
    <packaging>jar</packaging>

    <name>CloudSim Plus Automation</name>
    <description>Autonomously builds and runs Cloud Computing simulation environments in CloudSim Plus from an YAML file.</description>
    <url>https://github.com/manoelcampos/cloudsim-plus-automation</url>

    <organization>
        <name>Universidade da Beira Interior (UBI) - Instituto Federal de Educação Ciência e Tecnologia do Tocantins (IFTO)</name>
        <url>http://www.ubi.pt http://www.ifto.edu.br</url>
    </organization>

    <licenses>
        <license>
            <name>GPLv3</name>
            <url>http://www.gnu.org/licenses/lgpl-3.0.txt</url>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Manoel Campos da Silva Filho</name>
            <email>mcampos@ifto.edu.br</email>
            <organization>Instituto Federal de Educação Ciência e Tecnologia do Tocantins (IFTO)</organization>
            <organizationUrl>http://www.ifto.edu.br</organizationUrl>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:git@github.com:cloudsimplus/cloudsimplus-automation.git</connection>
        <developerConnection>scm:git:git@github.com:cloudsimplus/cloudsimplus-automation.git</developerConnection>
        <url>git@github.com:cloudsimplus/cloudsimplus-automation.git</url>
    </scm>

    <issueManagement>
        <url>https://github.com/cloudsimplus/cloudsimplus-automation/issues</url>
        <system>GitHub Issues</system>
    </issueManagement>

    <profiles>
        <profile>
            <!--
             A profile used to execute all goals required to deploy
             the project to the Maven Central.
             To execute use: mvn clean deploy -P sonatype

             To check the deployed artifact and probably release it to maven central
             you should visit https://oss.sonatype.org.
             MAKE SURE YOU ARE LOGGED IN TO SEE YOUR DEPLOYMENTS.
             -->
            <id>sonatype</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>3.2.1</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.5.0</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>

                        <configuration>
                            <failOnError>false</failOnError>
                        </configuration>
                    </plugin>

                    <!--
                     Signs the generated jar using GPG, as required for deploying at the Maven Central.
                     Configurations are defined into the local repo settings.xml
                    -->
                    <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>
                                <configuration>
                                    <!-- Prevent `gpg` from using pinentry programs
                                    and avoid "gpg: signing failed: Inappropriate ioctl for device" error. -->
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <!--
                    Plugin to deploy to the maven central using a Sonatype account.
                    Credentials are defined into the local repo settings.xml
                    -->
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>1.6.13</version>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>ossrh</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <!--If the artifact will be automatically released to maven central
                            after the upload to sonatype.-->
                            <autoReleaseAfterClose>false</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <showDeprecation>true</showDeprecation>
                    <release>17</release>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <!-- Adds dependencies to classpath into the manifest file inside the jar !-->
                            <addClasspath>true</addClasspath>

                            <!-- Defines that the dependencies will follow the same
                             hierarchical directory structure of a maven repository !-->
                            <classpathLayoutType>repository</classpathLayoutType>

                            <!-- Defines the root folder where the dependencies are. In this case
                             is the the root of the local maven repository. !-->
                            <classpathPrefix>${user.home}/.m2/repository/</classpathPrefix>
                            <mainClass>org.cloudsimplus.automation.Start</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <!-- Creates a "uber jar" that includes all external dependencies
            inside it. By this way, the jar can be run directly in any
            computer with a regular JVM installed. -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- Keep the original jar file and generate a new shaded jar (the uber jar) -->
                    <shadedArtifactAttached>true</shadedArtifactAttached>
                    <!-- The suffix to add to the shaded jar -->
                    <shadedClassifierName>with-dependencies</shadedClassifierName>
                </configuration>
            </plugin>

            <!--
            Adds License Information to project source and binaries using com.mycila.maven-license-plugin.
            https://dzone.com/articles/adding-license-information.

            To add missing license information for source files run:
            mvn license:format
            -->
            <plugin>
                <groupId>com.mycila.maven-license-plugin</groupId>
                <artifactId>maven-license-plugin</artifactId>
                <version>1.10.b1</version>
                <inherited>true</inherited>
                <configuration>
                    <header>COPYRIGHT</header>
                    <aggregate>true</aggregate>
                    <properties>
                        <project>${project.name}</project>
                        <founder>${project.organization.name}</founder>
                        <year>${project.inceptionYear}</year>
                        <website>${project.url}</website>
                    </properties>

                    <mapping>
                        <java>SLASHSTAR_STYLE</java>
                    </mapping>

                    <strictCheck>true</strictCheck>
                    <failIfMissing>false</failIfMissing>

                    <excludes>
                        <exclude>**/src/main/java/cloudreports/models/**</exclude>
                        <exclude>**/package-info.java</exclude>
                        <exclude>**/src/test/resources/**</exclude>
                        <exclude>**/src/main/resources/**</exclude>
                        <exclude>**/*.md</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.yml</exclude>
                        <exclude>**/LICENSE</exclude>
                        <exclude>**/COPYRIGHT</exclude>
                        <exclude>**/*.pdf</exclude>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.uml</exclude>
                        <exclude>**/*.iml</exclude>
                        <exclude>**/.idea/**</exclude>
                        <exclude>**/.gitignore</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--
                            Checks for missing license header in source files.
                            You can use "format" to add missing headers or
                            call manually using: mvn license:format
                            -->
                            <goal>check</goal>
                        </goals>
                        <phase>process-sources</phase>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.mycila</groupId>
                        <artifactId>licenses</artifactId>
                        <version>1</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.cloudsimplus</groupId>
            <artifactId>cloudsim-plus</artifactId>
            <version>${project.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.esotericsoftware.yamlbeans</groupId>
            <artifactId>yamlbeans</artifactId>
            <version>1.12</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>1.4</version>
        </dependency>
    </dependencies>
</project>
