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

  <groupId>org.apache.xmlgraphics</groupId>
  <artifactId>fop-core</artifactId>
  <name>Apache FOP Core</name>
  <description>XML Graphics Format Object Processor</description>

  <parent>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>fop-parent</artifactId>
    <version>2.10</version>
  </parent>

  <properties>
    <fop.hyph.version>2.0</fop.hyph.version>
  </properties>
    
  <dependencies>
    <!-- batik deps -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-anim</artifactId>
      <version>${batik.version}</version>
      <exclusions>
          <exclusion>
              <groupId>xalan</groupId>
              <artifactId>xalan</artifactId>
          </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-awt-util</artifactId>
      <version>${batik.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-bridge</artifactId>
      <version>${batik.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-extension</artifactId>
      <version>${batik.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-gvt</artifactId>
      <version>${batik.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-transcoder</artifactId>
      <version>${batik.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>batik-codec</artifactId>
      <version>${batik.version}</version>
    </dependency>    
    <!-- fop deps -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>fop-events</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>fop-util</artifactId>
      <version>${project.version}</version>
    </dependency>
    <!-- xgc deps -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>xmlgraphics-commons</artifactId>
      <version>${xmlgraphics.commons.version}</version>
    </dependency>
    <!-- xmlgraphics external deps -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${commons.io.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>${commons.logging.version}</version>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>${ant.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>fontbox</artifactId>
      <version>2.0.27</version>
    </dependency>
    <dependency>
      <groupId>javax.media</groupId>
      <artifactId>jai-core</artifactId>
      <version>1.1.3</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcpkix-jdk15to18</artifactId>
      <version>1.78.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk15to18</artifactId>
      <version>1.78.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.sun.media</groupId>
      <artifactId>jai-codec</artifactId>
      <version>1.1.3</version>
      <scope>provided</scope>
    </dependency>
    <!-- test deps -->
    <dependency>
      <groupId>net.sf.offo</groupId>
      <artifactId>fop-hyph</artifactId>
      <version>${fop.hyph.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>2.28.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>xmlunit</groupId>
      <artifactId>xmlunit</artifactId>
      <version>${xmlunit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>2.0.27</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <!-- generate base14 font class sources -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xml-maven-plugin</artifactId>
        <version>${xml.plugin.version}</version>
        <executions>
          <execution>
            <id>generate-base14-fonts</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>transform</goal>
            </goals>
            <configuration>
              <transformationSets>
                <transformationSet>
                  <dir>${project.basedir}/src/main/codegen/fonts</dir>
                  <fileMappers>
                    <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                      <targetExtension>.java</targetExtension>
                    </fileMapper>
                  </fileMappers>
                  <includes>
                    <include>Courier*.xml</include>
                    <include>Helvetica*.xml</include>
                    <include>Times*.xml</include>
                  </includes>
                  <parameters>
                    <parameter>
                      <name>encoding</name>
                      <value>WinAnsiEncoding</value>
                    </parameter>
                  </parameters>
                  <outputDir>${project.build.directory}/generated-sources/main/java/org/apache/fop/fonts/base14</outputDir>
                  <stylesheet>${project.basedir}/src/main/codegen/fonts/font-file.xsl</stylesheet>
                </transformationSet>
                <transformationSet>
                  <dir>${project.basedir}/src/main/codegen/fonts</dir>
                  <fileMappers>
                    <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                      <targetExtension>.java</targetExtension>
                    </fileMapper>
                  </fileMappers>
                  <includes>
                    <include>Symbol.xml</include>
                    <include>ZapfDingbats.xml</include>
                  </includes>
                  <outputDir>${project.build.directory}/generated-sources/main/java/org/apache/fop/fonts/base14</outputDir>
                  <stylesheet>${project.basedir}/src/main/codegen/fonts/font-file.xsl</stylesheet>
                </transformationSet>
              </transformationSets>
            </configuration>
          </execution>
          <execution>
            <id>codegen-fonts-encodings</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>transform</goal>
            </goals>
            <configuration>
              <transformationSets>
                <transformationSet>
                  <dir>${project.basedir}/src/main/codegen/fonts</dir>
                  <fileMappers>
                    <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">
                      <targetName>CodePointMapping.java</targetName>
                    </fileMapper>
                  </fileMappers>
                  <includes>
                    <include>encodings.xml</include>
                  </includes>
                  <outputDir>${project.build.directory}/generated-sources/main/java/org/apache/fop/fonts</outputDir>
                  <stylesheet>${project.basedir}/src/main/codegen/fonts/code-point-mapping.xsl</stylesheet>
                </transformationSet>
              </transformationSets>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>net.sf.saxon</groupId>
            <artifactId>saxon</artifactId>
            <version>8.7</version>
          </dependency>
        </dependencies>
      </plugin>
      <!-- add generate base14 font class sources to source set -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>${build.helper.plugin.version}</version>
        <executions>
          <execution>
            <id>add-generated-sources</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>${project.build.directory}/generated-sources/main/java</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- generate event collector models -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>${antrun.plugin.version}</version>
        <executions>
          <execution>
            <id>codegen-events</id>
            <phase>process-classes</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <taskdef name="collectEvents" classname="org.apache.fop.eventtools.EventProducerCollectorTask" classpathref="maven.compile.classpath"/>
                <collectEvents destdir="${project.build.outputDirectory}">
                  <fileset dir="${project.basedir}/src/main/java">
                    <include name="**/accessibility/AccessibilityEventProducer.java"/>
                    <include name="**/afp/AFPEventProducer.java"/>
                    <include name="**/area/AreaEventProducer.java"/>
                    <include name="**/fo/flow/table/TableEventProducer.java"/>
                    <include name="**/fo/FOValidationEventProducer.java"/>
                    <include name="**/fonts/FontEventProducer.java"/>
                    <include name="**/layoutmgr/BlockLevelEventProducer.java"/>
                    <include name="**/layoutmgr/inline/InlineLevelEventProducer.java"/>
                    <include name="**/render/bitmap/BitmapRendererEventProducer.java"/>
                    <include name="**/render/pcl/PCLEventProducer.java"/>
                    <include name="**/render/pdf/extensions/PDFExtensionEventProducer.java"/>
                    <include name="**/render/pdf/PDFEventProducer.java"/>
                    <include name="**/render/ps/PSEventProducer.java"/>
                    <include name="**/render/RendererEventProducer.java"/>
                    <include name="**/render/rtf/RTFEventProducer.java"/>
                    <include name="**/ResourceEventProducer.java"/>
                    <include name="**/svg/SVGEventProducer.java"/>
                  </fileset>
                </collectEvents>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- junit testing -->
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.plugin.version}</version><!--$NO-MVN-MAN-VER$-->
        <configuration>
          <includes>
            <include>**/*TestCase.java</include>
          </includes>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <workingDirectory>../fop</workingDirectory>
        </configuration>
      </plugin>
      <!-- code analysis - checkstyle -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <configLocation>${project.baseUri}src/tools/resources/checkstyle/checkstyle.xml</configLocation>
          <headerLocation>${project.baseUri}src/tools/resources/checkstyle/LICENSE.txt</headerLocation>
          <includeResources>false</includeResources>
          <includeTestResources>false</includeTestResources>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <linkXRef>false</linkXRef>
          <logViolationsToConsole>true</logViolationsToConsole>
          <suppressionsLocation>${project.baseUri}src/tools/resources/checkstyle/suppressions.xml</suppressionsLocation>
          <violationSeverity>warning</violationSeverity>
        </configuration>
      </plugin>
      <!-- code analysis - checkstyle -->
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${findbugs.plugin.version}</version>
        <configuration>
          <excludeFilterFile>src/tools/resources/findbugs/exclusions.xml</excludeFilterFile>
          <effort>Max</effort>
          <threshold>Low</threshold>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
              <Automatic-Module-Name>org.apache.xmlgraphics.fop.core</Automatic-Module-Name>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>${basedir}/..</directory>
        <includes>
          <include>LICENSE</include>
          <include>NOTICE</include>
        </includes>
        <targetPath>META-INF</targetPath>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </testResource>
    </testResources>
  </build>

  <profiles>
    <profile>
    <id>runFindbugs</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-maven-plugin</artifactId>
            <version>${findbugs.plugin.version}</version>
            <configuration>
              <excludeFilterFile>src/tools/resources/findbugs/exclusions.xml</excludeFilterFile>
              <effort>Max</effort>
              <threshold>Low</threshold>
            </configuration>
            <executions>
              <execution>
                <id>verify</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
