<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- KNOWN ISSUES:
       "Production" tgz/zip files need to be copied to ant-like build/
       xalan-test integration

       Footnote: To get dependency tree from a multi-module project, use the
       command "mvn compile dependency:tree" so everything is in scope.
  -->
  <packaging>pom</packaging>

  <modelVersion>4.0.0</modelVersion>
  <groupId>xalan</groupId>
  <artifactId>xalan-project</artifactId>
  <version>2.7.3</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <stylebook.classpath>
      "stylebook/stylebook-1.0-b3_xalan-2.jar${path.separator}serializer/target/classes${path.separator}xalan/target/classes${path.separator}"
    </stylebook.classpath>
    <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
    <exec-maven-plugin.version>3.1.0</exec-maven-plugin.version>
  </properties>

  <modules>
    <module>serializer</module>
    <module>xalan</module>
    <module>samples</module>
    <!-- The binary mode of maven-assembly-plugin needs to run after all the
         other modules have created their artifacts. Standard solution to
         achieve this sequencing is to make it a separate module which
         depends on all the others. See
         https://maven.apache.org/plugins/maven-assembly-plugin/faq.html#module-binaries
         -->
    <module>distribution</module>
  </modules>

  <profiles>
    <profile>
      <id>jdk8</id>
      <activation>
        <jdk>[,9)</jdk>
      </activation>
      <properties>
        <xalan.taglet.artifactId>xalan2jtaglet</xalan.taglet.artifactId>
      </properties>
      <modules>
        <module>xalan2jtaglet</module>
      </modules>
    </profile>
    <profile>
      <id>jdk9+</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <properties>
        <xalan.taglet.artifactId>xalan2jtaglet_jdk9</xalan.taglet.artifactId>
      </properties>
      <modules>
        <module>xalan2jtaglet_jdk9</module>
      </modules>
    </profile>
    <profile>
      <id>create-docs</id>
      <activation>
        <!--
          Activate by default. Workaround for 'activeByDefault', which is broken
          by design, see https://issues.apache.org/jira/browse/MNG-4917.
        -->
        <jdk>[1,)</jdk>
      </activation>
      <build>
        <plugins>
          <!-- StyleBook processing.
               NOTE: Stylebook as it has been calls System.exit() on its way out.
               That means running exec:java will malfunction since it'll blow out
               the entire Maven process. Workaround is to invoke Stylebook from
               the command line with exec:exec. Proper fix is to remove that
               behavior from Stylebook's code and have it exit more cleanly,
               or to have exec optionally fork a process for java.
               The latter is in development.
               -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>${exec-maven-plugin.version}</version>
            <inherited>false</inherited> <!-- Run only in xalan-project parent -->
            <executions>
              <execution>
                <id>Xalan2 design documentation</id>
                <phase>package</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>java</executable>
                  <commandlineArgs>-cp ${stylebook.classpath} org.apache.stylebook.StyleBook
                  loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=./target/site/design/
                  ./stylebook/sources/xalandesign.xml ./stylebook/style</commandlineArgs>
                </configuration>
              </execution>

              <execution>
                <id>Xalan2 compiled (xsltc) documentation</id>
                <phase>package</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>java</executable>
                  <commandlineArgs>-cp ${stylebook.classpath} org.apache.stylebook.StyleBook
                  loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=./target/site/xsltc/
                  ./stylebook/sources/xsltc.xml ./stylebook/style</commandlineArgs>
                </configuration>
              </execution>
              <execution>
                <id>Xalan2 interpretive documentation</id>
                <phase>package</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>java</executable>
                  <commandlineArgs>-cp ${stylebook.classpath} org.apache.stylebook.StyleBook
                  loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=./target/site/xalan
                  ./stylebook/sources/xalan-jsite.xml ./stylebook/style</commandlineArgs>
                </configuration>
              </execution>

              <!-- Diff tells me that the -jlocal output is almost
                   identical to the -jsite output despite the slight
                   difference in the .xml files used as their
                   sources. (The only effective difference appears to be
                   that -jlocal doesn't produce the index or charter
                   documents.)  I'm not convinced that's enough difference
                   to merit generating both, but until I better grok why
                   this duplication was done in the first place I'm
                   hesitant to remove it. (jkesselm, 20231105) -->
              <execution>
                <id>Xalan2 interpretive documentation, local</id>
                <phase>package</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>java</executable>
                  <commandlineArgs>-cp ${stylebook.classpath} org.apache.stylebook.StyleBook
                  loaderConfig=sbk:/style/loaderdesign.xml targetDirectory=./target/site/xalan/local
                  ./stylebook/sources/xalan-jlocal.xml ./stylebook/style</commandlineArgs>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>integration-tests</id>
      <activation>
        <!--
          Activate by default. Workaround for 'activeByDefault', which is broken
          by design, see https://issues.apache.org/jira/browse/MNG-4917.
        -->
        <jdk>[1,)</jdk>
      </activation>
      <modules>
        <module>integration-tests</module>
      </modules>
    </profile>
  </profiles>

  <build>
    <pluginManagement>
      <!-- Standardized configuration for plugins used by child modules,
           though not invoked by parent module -->
      <plugins>
        <!-- Copy produced jarfile up to xalan-java/build/,
             renaming to remove the version number, for
             backward compatibility with things build for the
             Ant builds.
        -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.6.1</version>
          <executions>
            <execution>
              <id>copy-artifact</id>
              <phase>package</phase>
              <goals>
                <goal>copy</goal>
              </goals>
              <configuration>
                <artifactItems>
                  <artifactItem>
                    <!-- Copy built artifact to ../build -->
                    <groupId>${project.groupId}</groupId>
                    <artifactId>${project.artifactId}</artifactId>
                    <version>${project.version}</version>
                    <type>${project.packaging}</type>
                  </artifactItem>
                  <artifactItem>
                    <!-- Also copy without the "-${project.version}" suffix
                         (but with the filetype), for backward compatibility
                         with Ant build's behavior
                    -->
                    <groupId>${project.groupId}</groupId>
                    <artifactId>${project.artifactId}</artifactId>
                    <version>${project.version}</version>
                    <type>${project.packaging}</type>
                    <!-- stripVersion does not seem to do what's needed, so: -->
                    <destFileName>${project.artifactId}.${project.packaging}</destFileName>
                  </artifactItem>
                </artifactItems>
                <outputDirectory>${rootlocation}/build</outputDirectory>
              </configuration>
            </execution>
            <execution>
              <id>copy-dependencies</id>
              <phase>package</phase>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${rootlocation}/lib</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
                <!-- Our own artifacts are in 'build' already -->
                <excludeGroupIds>xalan</excludeGroupIds>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${maven-compiler-plugin.version}</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <!-- Unit tests -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <!-- Integration tests using our own packaged JARs -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-invoker-plugin</artifactId>
          <version>3.6.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.5.0</version>
          <executions>
            <execution>
              <id>root-location</id>
              <goals>
                <goal>rootlocation</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>

    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
      <resource>
        <directory>META-INF</directory>
        <includes>
          <include>LICENSE.txt</include>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
      <resource>
        <directory>resources</directory>
        <includes>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.7.1</version>
      </plugin>

      <!-- Maven finds this without assistance, but grumbles about
           unspecified plugin version, so... -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.4.5</version>
      </plugin>

      <!-- During cleaning phase, empty directories ./build and ./lib, which
           are normally not present except in the parent module.
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>./build</directory>
              <followSymlinks>false</followSymlinks>
            </fileset>
            <fileset>
              <directory>./lib</directory>
              <followSymlinks>false</followSymlinks>
            </fileset>
          </filesets>
        </configuration>
      </plugin>

      <!-- Two more files to copy to the site directory -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/site/xsltc</outputDirectory>
              <resources>
                <resource>
                  <directory>stylebook/sources/xsltc</directory>
                  <includes>
                    <include>README.x*</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
      </plugin>

    </plugins>
  </build>

  <dependencyManagement>
    <dependencies>

      <!-- Our own modules -->
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>serializer</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>samples</artifactId>
        <version>${project.version}</version>
      </dependency>

      <!-- Test dependencies -->
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.10.1</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>5.10.1</version>
        <scope>test</scope>
      </dependency>
      <dependency>
      <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.6.0</version>
        <configuration>

          <!-- Mute "missing" javadoc errors. We have lots of 'em, and
               they're a distraction from simply getting the Maven
               build up and running. Open a jira task to fix this
               later. GONK. -->
          <doclint>none</doclint>

          <groups>
            <group>
              <title>XPath</title>
              <packages>org.apache.xpath*</packages>
            </group>
            <group>
              <title>Document Table Model (DTM)</title>
              <packages>org.apache.xml.dtm*</packages>
            </group>
            <group>
              <title>Utilities</title>
              <packages>org.apache.xml.utils*</packages>
            </group>
            <group>
              <title>Xalan Other</title>
              <packages>org.apache.xalan.client:org:org.apache.xalan.extensions:org.apache.xalan.res:org.apache.xalan.stree:org.apache.xalan.trace:org.apache.xalan.xslt</packages>
            </group>
            <group>
              <title>Xalan Extensions</title>
              <packages>org.apache.xalan.lib*</packages>
            </group>
            <group>
              <title>Serializers</title>
              <packages>org.apache.xml.serialize*:org.apache.xalan.serialize</packages>
            </group>
            <group>
              <title>SAX 2</title>
              <packages>org.xml.sax*</packages>
            </group>
            <group>
              <title>DOM 2</title>
              <packages>org.w3c.dom*</packages>
            </group>
            <group>
              <title>XSLTC Core</title>
              <packages>org.apache.xalan.xsltc*</packages>
            </group>
          </groups>

          <!-- Locally provided taglet; see xalan2jtaglet and
               xalan2jtaglet_jdk9 modules
          -->
          <taglets>
            <taglet>
              <tagletClass>xalan2jtaglet.XSLUsageTag</tagletClass>
            </taglet>
          </taglets>
          <tagletArtifact>
            <groupId>xalan</groupId>
            <artifactId>${xalan.taglet.artifactId}</artifactId>
            <version>${project.version}</version>
          </tagletArtifact>

          <!-- FIXME: Without this exclude, the build only works if module
                      'xalan2jtaglet' was first installed locally or deployed to
                       a remote repository. I.e., we have to use something like
                      'mvn clean install site', at least for the taglet module.
                      'mvn clean package site' on top level is not enough for a
                       build when the local Maven repo is clean.
          -->
          <excludePackageNames>xalan2jtaglet</excludePackageNames>
          <!-- Necessary when building on JDK 9+ -->
          <source>1.8</source>
        </configuration>

        <reportSets>
          <reportSet>
            <id>aggregate</id>
            <inherited>false</inherited>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
          <reportSet>
            <id>default</id>
            <reports>
              <report>javadoc</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

</project>
