<?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.dspace</groupId>
    <artifactId>orcid-jaxb-api</artifactId>
    <version>2.1.0</version>

    <name>ORCID Java API generated via JAXB</name>
    <description>
        This ORCID Java API was generated via JAXB using the ORCID XSDs.
    </description>
    <url>https://github.com/DSpace/orcid-jaxb-api</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jaxb2-basics.version>0.9.5</jaxb2-basics.version>
    </properties>


    <profiles>
        <!-- Generate the ORCID Java API using JAXB and the ORCID XSD source files -->
        <profile>
            <id>generate-sources-from-jaxb</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2.maven2</groupId>
                        <artifactId>maven-jaxb2-plugin</artifactId>
                        <version>0.13.3</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>generate</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <!-- Generate a file header with timestamp -->
                            <noFileHeader>false</noFileHeader>
                            <!-- Delete generateDirectory before recreating -->
                            <removeOldOutput>true</removeOldOutput>
                            <!-- Add @Generated annotation to all generated source code -->
                            <markGenerated>true</markGenerated>
                            <!-- NOTE that we are generating directly into Java Source Directory! -->
                            <generateDirectory>${basedir}/src/main/java/</generateDirectory>
                            <!-- Location of our custom binding file -->
                            <bindingDirectory>${basedir}/src/main/resources/binding</bindingDirectory>
                            <!-- Location of XSDs copied from ORCID. See README for how-to -->
                            <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory>
                            <!-- The entire list of XSDs we want to use to generate Java source code -->
                            <schemaIncludes>
                                <include>common_2.1/*.xsd</include>
                                <include>record_2.1/*.xsd</include>
                            </schemaIncludes>
                            <episode>false</episode>
                            <args>
                                <arg>-Xsetters</arg>
                                <arg>-Xvalue-constructor</arg>
                                <arg>-XtoString</arg>
                                <arg>-extension</arg>
                                <arg>-Xnamespace-prefix</arg>
                            </args>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>org.glassfish.jaxb</groupId>
                                <artifactId>jaxb-core</artifactId>
                                <version>2.3.0</version>
                            </dependency>
                            <dependency>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics</artifactId>
                                <version>${jaxb2-basics.version}</version>
                            </dependency>
                            <dependency>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-value-constructor</artifactId>
                                <version>3.0</version>
                            </dependency>
                            <dependency>
                                <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-namespace-prefix</artifactId>
                                <version>1.3</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!--
         The 'release' profile is used by the 'maven-release-plugin' (see below)
         to actually perform a DSpace software release to Maven central.
         This profile contains settings which are ONLY enabled when performing
         a DSpace release. See also https://wiki.duraspace.org/display/DSPACE/Release+Procedure
        -->
        <profile>
            <id>release</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <!-- Configure Nexus plugin for new releases via Sonatype.
                       See: http://central.sonatype.org/pages/apache-maven.html -->
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>1.6.7</version>
                        <extensions>true</extensions>
                        <configuration>
                            <!-- In your settings.xml, your username/password
                                 MUST be specified for server 'ossrh' -->
                            <serverId>ossrh</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <!-- Require manual verification / release to Maven Central -->
                            <autoReleaseAfterClose>false</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <!-- For new releases, generate JavaDocs -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.10.3</version>
                        <configuration>
                            <!-- Never fail a build based on Javadoc errors -->
                            <failOnError>false</failOnError>
                        </configuration>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <configuration>
                                    <additionalparam>${javadoc.opts}</additionalparam>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Sign any new releases via GPG.
                         NOTE: you may optionall specify the "gpg.passphrase" in your 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>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!--
            If building with Java 8 (JDK 1.8), then disable the default 'doclint' validation.
            'doclint' validates all Javadoc comments (see http://openjdk.java.net/jeps/172).
            Unfortunately though, it also causes our release process to fail with Java 8,
            as JAXB doesn't seem to always generate all Javadoc comments.
            So, for now, we are disabling this check.
        -->
        <profile>
            <id>doclint-java8-disable</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <!-- Note: ${javadoc.opts} is passed to maven-javadoc-plugin in the 'release' profile -->
                <javadoc.opts>-Xdoclint:none</javadoc.opts>
            </properties>
        </profile>

    </profiles>

    <build>
        <plugins>
            <!-- Specify our settings for new releases via 'mvn release:*' -->
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <!-- During release:perform, enable the "release" profile (see above) -->
                    <releaseProfiles>release</releaseProfiles>
                     <goals>deploy</goals>
                     <!-- Suggest tagging the release in SCM as "dspace-[version]" -->
                     <tagNameFormat>orcid-jaxb-api-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- JAXB2 Commons -->
        <dependency>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>jaxb2-basics-runtime</artifactId>
            <version>${jaxb2-basics.version}</version>
        </dependency>
    </dependencies>

    <developers>
        <!-- ORCID created initial XSDs -->
        <developer>
           <name>ORCID</name>
           <email>support@orcid.org</email>
           <url>https://github.com/ORCID/ORCID-Source</url>
           <roles>
             <role>developer</role>
           </roles>
        </developer>
        <!-- DSpace Committers simply created JAXB configs -->
        <developer>
           <name>DSpace Committers</name>
           <email>dspace-devel@googlegroups.com</email>
           <url>https://wiki.duraspace.org/display/DSPACE/DSpace+Committers</url>
           <roles>
             <role>developer</role>
           </roles>
        </developer>
    </developers>

    <!-- ORCID XSDs are released under MIT License. This source is generated from them, so we inherit license -->
    <licenses>
        <license>
            <name>MIT License</name>
            <url>https://github.com/ORCID/ORCID-Source/blob/master/LICENSE</url>
            <distribution>manual</distribution>
            <comments>ORCID MIT-Style License</comments>
        </license>
    </licenses>

    <!-- Information about the SCM repository where source code exists. -->
    <scm>
        <connection>scm:git:git@github.com:DSpace/orcid-jaxb-api.git</connection>
        <developerConnection>scm:git:git@github.com:DSpace/orcid-jaxb-api.git</developerConnection>
        <url>git@github.com:DSpace/orcid-jaxb-api.git</url>
        <tag>orcid-jaxb-api-2.1.0</tag>
    </scm>

    <!-- Configure our release repositories to use Sonatype.
         See: http://central.sonatype.org/pages/apache-maven.html -->
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
</project>
