<?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}tools/xalan2jdoc.jar${path.separator}serializer/target/classes${path.separator}xalan/target/classes${path.separator}"
    </stylebook.classpath>
  </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>
  </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>
          <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>../build</outputDirectory>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.11.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </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 the ./build directory, which
           is normally not present except in the parent module.
      -->
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.3.1</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>./build</directory>
              <followSymlinks>false</followSymlinks>
            </fileset>
          </filesets>
        </configuration>
      </plugin>

      <!-- 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>3.1.0</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>

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

    </plugins>
  </build>

  <dependencyManagement>
    <dependencies>
      <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>
    </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>
