<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.gephi</groupId>
    <artifactId>gephi-plugin-parent</artifactId>
    <version>0.9.3</version>
    <packaging>pom</packaging>

    <name>gephi-plugins-parent</name>
    <description>Parent POM for all Gephi plugins</description>
    <inceptionYear>2015</inceptionYear>
    
    <url>http://github.com/gephi/gephi-plugins</url>
    
    <!-- SCM -->
    <scm>
        <connection>scm:git:git://github.com/gephi/gephi-plugins.git</connection>
        <developerConnection>scm:git:git@github.com:gephi/gephi-plugins.git</developerConnection>
        <url>https://github.com/gephi/gephi-plugins</url>
    </scm>
    
    <!-- License -->
    <licenses>
        <license>
            <name>Apache 2.0</name>
            <url>http://www.opensource.org/licenses/Apache-2.0</url>
            <comments>Apache License, Version 2.0</comments>
        </license>
    </licenses>
    
    <!-- Developers -->
    <developers>
        <developer>
            <id>mbastian</id>
            <name>Mathieu Bastian</name>
            <email>mathieu.bastian@gephi.org</email>
        </developer>
        <developer>
            <id>eduramiba</id>
            <name>Eduardo Ramos</name>
            <email>eduardo.ramos@gephi.org</email>
        </developer>
    </developers>

    <!-- Properties -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <gephi.version>0.9.3</gephi.version>
        <netbeans.version>RELEASE130</netbeans.version>

        <!-- Java compilation settings -->
        <javac.release>11</javac.release>
        <javac.xlint>-Xlint:all</javac.xlint>
        <javac.showDeprecation>true</javac.showDeprecation>
        <javac.showWarnings>true</javac.showWarnings>
        <javac.fork>true</javac.fork>

        <!-- Only needed for release profile -->
        <keystore.password/>
    </properties>

    <!-- Repositories -->
    <repositories>
        <repository>
            <id>oss-sonatype</id>
            <name>oss-sonatype</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <!-- Dependencies -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>utils-longtask</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>project-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-exporter-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>graph-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>preview-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-exporter-preview</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>preview-export-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>utils</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>datalab-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>visualization-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>preview-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>db-drivers</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-importer-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>project-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>ui-utils</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>ui-components</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>settings-upgrader</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>statistics-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>statistics-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>statistics-plugin-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>tools-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>algorithms-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>mostrecentfiles-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-project</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>visualization</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>tools-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>welcome-screen</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-context</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-progress</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>layout-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-generator-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-generator-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>generator-plugin-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-exporter-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-statistics</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>filters-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>layout-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-generate</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-window</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-branding</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>appearance-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-appearance</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>io-importer-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-datalab</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>filters-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>filters-impl</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>export-plugin-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-io-export</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>perspective-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>import-plugin-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>filters-plugin-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>datalab-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-layout</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-import</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-preview</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>appearance-plugin</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>appearance-plugin-ui</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-tools</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>timeline-api</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-timeline</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>directory-chooser</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>desktop-filters</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>core-library-wrapper</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.gephi</groupId>
                <artifactId>ui-library-wrapper</artifactId>
                <version>${gephi.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-dialogs</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-filesystems</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-util</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-util-ui</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-util-lookup</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-windows</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-modules</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-modules-sendopts</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-api-progress</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-api-progress-nb</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-nodes</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-awt</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-modules-settings</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-modules-options-api</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-swing-outline</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-explorer</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-api-annotations-common</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-swing-tabcontrol</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-openide-io</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.modules</groupId>
                <artifactId>org-netbeans-core-output2</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.modules</groupId>
                <artifactId>org-netbeans-modules-masterfs</artifactId>
                <version>${netbeans.version}</version>
            </dependency>
            <dependency>
                <groupId>org.netbeans.api</groupId>
                <artifactId>org-netbeans-modules-nbjunit</artifactId>
                <version>${netbeans.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <!-- Compiler -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.0</version>
                <configuration>
                    <release>${javac.release}</release>
                    <showDeprecation>${javac.showDeprecation}</showDeprecation>
                    <showWarnings>${javac.showWarnings}</showWarnings>
                    <fork>${javac.fork}</fork>
                    <compilerArgument>
                        ${javac.xlint}
                    </compilerArgument>
                </configuration>
            </plugin>

            <!-- NBM plugin -->
            <plugin>
                <groupId>org.apache.netbeans.utilities</groupId>
                <artifactId>nbm-maven-plugin</artifactId>
                <extensions>true</extensions>
                <version>4.5</version>
                <configuration>
                    <cluster>plugins</cluster>
                    <!-- This can be overridden in child POMs but is needed in most cases -->
                    <requiresRestart>true</requiresRestart>
                </configuration>
            </plugin>

            <!-- Jar plugin, required for NBM -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <!-- required since nbm-maven-plugin 3.0-->
                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    <profiles>
        <!-- Custom profile only used to build and package all modules at once -->
        <profile>
            <id>release</id>

            <!-- Override compile properties to be less verbose -->
            <properties>
                <javac.showDeprecation>false</javac.showDeprecation>
                <javac.showWarnings>false</javac.showWarnings>
                <javac.xlint>-Xlint:none</javac.xlint>
            </properties>

            <build>
                <plugins>
                    <!-- NBM plugin -->
                    <plugin>
                        <groupId>org.apache.netbeans.utilities</groupId>
                        <artifactId>nbm-maven-plugin</artifactId>
                        <configuration>
                            <!-- Keystore location. Run Maven with '-Dkeystore.password=' to specify the passphrase -->
                            <keystore>keystore.ks</keystore>
                            <keystorealias>gephi</keystorealias>
                            <keystorepassword>${keystore.password}</keystorepassword>
                        </configuration>
                        <executions>
                            <!-- Disable default-branding as it's only needed for the branding module -->
                            <execution>
                                <id>default-branding</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- Custom profile only used to release this pom to sonatype-->
        <profile>
            <id>release-pom</id>
            <build>
                <plugins>
                    <!-- GPG Signed Components -->
                    <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>
                        <configuration>
                            <gpgArguments>
                                <arg>--pinentry-mode</arg>
                                <arg>loopback</arg>
                            </gpgArguments>
                        </configuration>
                    </plugin>
                    
                    <!-- Nexus staging, https://oss.sonatype.org/ -->
                    <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://oss.sonatype.org/</nexusUrl>
                            <autoReleaseAfterClose>true</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <!-- Locations of the artifacts published -->
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>
</project>
