<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>
    <parent>
        <groupId>org.primefaces.extensions</groupId>
        <artifactId>primefaces-extensions-parent</artifactId>
        <version>15.0.11</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>primefaces-extensions</artifactId>
    <packaging>jar</packaging>
    <name>PrimeFaces Extensions</name>
    <description>
    <![CDATA[PrimeFaces Extensions components and utilities for PrimeFaces.]]></description>
    <properties>
        <main.basedir>${project.parent.basedir}</main.basedir>
        <cyclonedx.skip>false</cyclonedx.skip>
    </properties>
    <dependencies>
        <!-- PrimeFaces -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.primefaces.extensions</groupId>
            <artifactId>resources-monacoeditor</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- PROVIDED Java API's -->
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>jakarta.faces</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>el-api</artifactId>
        </dependency>
        <!-- GChart and Layout needs GSON-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- InputPhone -->
        <dependency>
            <groupId>com.googlecode.libphonenumber</groupId>
            <artifactId>libphonenumber</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Sanitizing Converter -->
        <dependency>
            <groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
            <artifactId>owasp-java-html-sanitizer</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Mongo Lazy Datatable -->
        <dependency>
            <groupId>dev.morphia.morphia</groupId>
            <artifactId>morphia-core</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Localized -->
        <dependency>
            <groupId>org.commonmark</groupId>
            <artifactId>commonmark</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- TEST -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <!-- Only for having @types during development -->
                    <exclude>**/documentviewer/**</exclude>
                    <exclude>**/keynote/theme/fonts/**</exclude>
                    <exclude>**/codescanner/**</exclude>
                    <exclude>**/node_modules/**</exclude>
                    <exclude>**/patches/**</exclude>
                    <exclude>**/jsconfig.json</exclude>
                    <exclude>**/tsconfig.json</exclude>
                    <exclude>**/package.json</exclude>
                    <exclude>**/package-lock.json</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>**/documentviewer/**</include>
                    <include>**/codescanner/**</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <configuration>
                    <excludeDefaultDirectories>false</excludeDefaultDirectories>
                    <filesets>
                        <fileset>
                            <directory>src/main/resources/META-INF/resources/primefaces-extensions/monacoeditor/node_modules</directory>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                    </archive>
                    <excludes>
                        <!-- Remove empty resource folders from JAR file. -->
                        <!-- These are folders whose resources are merged into one big CSS and JS file. -->
                        <exclude>**/META-INF/resources/**/core/**</exclude>
                        <exclude>**/META-INF/resources/**/codemirror/lib/**</exclude>
                        <exclude>**/META-INF/resources/**/codemirror/theme/**</exclude>
                        <exclude>**/META-INF/resources/**/codemirror/LICENSE</exclude>
                        <exclude>**/META-INF/resources/**/keynote/lib/**</exclude>
                        <exclude>**/META-INF/resources/**/keynote/plugin/**</exclude>
                        <exclude>**/META-INF/resources/**/keynote/LICENSE</exclude>
                        <exclude>**/META-INF/resources/**/masterdetail/**</exclude>
                        <exclude>**/META-INF/resources/**/monacoeditor/01-*.js</exclude>
                        <!-- Only used for development, not required -->
                        <exclude>**/META-INF/resources/**/node_modules/**</exclude>
                        <exclude>**/META-INF/resources/**/jsconfig.json</exclude>
                        <exclude>**/META-INF/resources/**/tsconfig.json</exclude>
                        <exclude>**/META-INF/resources/**/package*</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.primefaces.extensions</groupId>
                <artifactId>resources-optimizer-maven-plugin</artifactId>
                <configuration>
                    <useDataUri>true</useDataUri>
                    <imagesDir>${project.build.directory}/classes/META-INF/resources</imagesDir>
                    <languageIn>ECMASCRIPT_2020</languageIn>
                    <languageOut>ECMASCRIPT_2020</languageOut>
                    <resourcesSets>
                        <resourcesSet>
                            <includes>
                                <include>blockui/**</include>
                                <include>calculator/**</include>
                                <include>clipboard/**</include>
                                <include>clockpicker/**</include>
                                <include>codescanner/codescanner-widget.js</include>
                                <include>counter/**</include>
                                <include>creditcard/1-card-widget.js</include>
                                <include>dynaform/**</include>
                                <include>echarts/**</include>
                                <include>fluidgrid/**</include>
                                <include>fuzzysearch/**</include>
                                <include>gchart/**</include>
                                <include>imageareaselect/**</include>
                                <include>imagezoom/**</include>
                                <include>imagerotateandresize/**</include>
                                <include>inputotp/**</include>
                                <include>inputphone/1-inputphone-widget.js</include>
                                <include>inputplace/**</include>
                                <include>layout/**</include>
                                <include>legend/**</include>
                                <include>markdowneditor/1-markdowneditor-widget.js</include>
                                <include>orgchart/**</include>
                                <include>osmap/**</include>
                                <include>qrcode/**</include>
                                <include>sheet/**</include>
                                <include>slideout/**</include>
                                <include>speedtest/**</include>
                                <include>suneditor/1-suneditor-widget.css</include>
                                <include>suneditor/1-suneditor-widget.js</include>
                                <include>timeago/*.js</include>
                                <include>timepicker/**</include>
                                <include>tristatemanycheckbox/**</include>
                                <include>timer/**</include>
                                <include>tooltip/**</include>
                                <include>waypoint/**</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <subDirMode>true</subDirMode>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- uncompressed widgets -->
                        <resourcesSet>
                            <includes>
                                <include>creditcard/**</include>
                                <include>codescanner/**</include>
                                <include>markdowneditor/**</include>
                                <include>suneditor/**</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <subDirMode>true</subDirMode>
                                    <withoutCompress>true</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>inputphone/0-intlTelInputWithUtils.min.js</include>
                                <include>inputphone/inputphone.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/inputphone/inputphone.js</outputFile>
                                    <withoutCompress>true</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>inputphone/intlTelInput.css</include>
                                <include>inputphone/inputphone.css</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/inputphone/inputphone.css</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>codemirror/lib/codemirror.js</include>
                                <include>codemirror/widget.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/codemirror/codemirror.js</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>codemirror/lib/**/*.css</include>
                                <include>codemirror/theme/*.css</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/codemirror/codemirror.css</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>keynote/lib/reveal.js</include>
                                <include>keynote/plugin/markdown/markdown.js</include>
                                <include>keynote/widget.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/keynote/keynote.js</outputFile>
                                    <withoutCompress>true</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>keynote/lib/**/*.css</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/keynote/keynote.css</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>masterdetail/masterdetail.css</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/primefaces-extensions.css</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <resourcesSet>
                            <includes>
                                <include>core/core.js</include>
                                <include>core/core.timers.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/primefaces-extensions.js</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- MonacoEditorInline widget -->
                        <resourcesSet>
                            <includes>
                                <include>monacoeditor/01-monaco-helper.js</include>
                                <include>monacoeditor/02-monaco-promise-queue.js</include>
                                <include>monacoeditor/03-monaco-widget-base.js</include>
                                <include>monacoeditor/04-monaco-widget-inline.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/monacoeditor/widget-inline.js</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                    <removeIncluded>false</removeIncluded>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- MonacoEditorFramed widget -->
                        <resourcesSet>
                            <includes>
                                <include>monacoeditor/01-monaco-helper.js</include>
                                <include>monacoeditor/02-monaco-promise-queue.js</include>
                                <include>monacoeditor/03-monaco-widget-base.js</include>
                                <include>monacoeditor/04-monaco-widget-framed.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/monacoeditor/widget-framed.js</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                    <removeIncluded>false</removeIncluded>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- MonacoEditorFramed iframe controller -->
                        <resourcesSet>
                            <includes>
                                <include>monacoeditor/01-monaco-helper.js</include>
                                <include>monacoeditor/04-monaco-iframe-controller.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/monacoeditor/iframe-controller.js</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                    <removeIncluded>false</removeIncluded>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- MonacoEditor proxy worker -->
                        <resourcesSet>
                            <includes>
                                <include>monacoeditor/proxy-worker.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/monacoeditor/worker.js</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                    <removeIncluded>false</removeIncluded>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- Dummy to remove build files in resource directory -->
                        <resourcesSet>
                            <includes>
                                <include>monacoeditor/01-monaco-helper.js</include>
                                <include>monacoeditor/02-monaco-promise-queue.js</include>
                                <include>monacoeditor/03-monaco-widget-base.js</include>
                                <include>monacoeditor/04-monaco-widget-inline.js</include>
                                <include>monacoeditor/04-monaco-widget-framed.js</include>
                                <include>monacoeditor/04-monaco-iframe-controller.js</include>
                                <include>monacoeditor/proxy-worker.js</include>
                                <include>monacoeditor/dummy.js</include>
                                <include>monacoeditor/dummy.source.js</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/monacoeditor/dummy.js</outputFile>
                                    <withoutCompress>true</withoutCompress>
                                    <removeIncluded>true</removeIncluded>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                        <!-- MonacoEditor style -->
                        <resourcesSet>
                            <includes>
                                <include>monacoeditor/monacoeditor.css</include>
                            </includes>
                            <aggregations>
                                <aggregation>
                                    <inputDir>${resources.dir.compressed}</inputDir>
                                    <outputFile>${resources.dir.compressed}/monacoeditor/monacoeditor.css</outputFile>
                                    <withoutCompress>${withoutCompress}</withoutCompress>
                                </aggregation>
                            </aggregations>
                        </resourcesSet>
                    </resourcesSets>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.21.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.3.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Jakarta EE shading -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.6.0</version>
                <executions>
                    <execution>
                        <id>jakarta</id>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <shadedClassifierName>jakarta</shadedClassifierName>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <createSourcesJar>true</createSourcesJar>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                <transformer implementation="io.yupiik.maven.shade.transformer.RelocationTransformer">
                                    <delegates>
                                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"/>
                                        <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                            <resource>META-INF/faces-config.xml</resource>
                                        </transformer>
                                        <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                            <resource>META-INF/primefaces-extensions.taglib.xml</resource>
                                        </transformer>
                                        <transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
                                            <resource>META-INF/primefaces-extensions.urn.taglib.xml</resource>
                                        </transformer>
                                        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                            <resource>META-INF/resources/primefaces-extensions/session/session.js</resource>
                                        </transformer>
                                    </delegates>
                                </transformer>
                            </transformers>
                            <artifactSet>
                                <includes>
                                    <include>${project.groupId}:${project.artifactId}</include>
                                </includes>
                            </artifactSet>
                            <relocations>
                                <relocation>
                                    <pattern>javax.faces</pattern>
                                    <shadedPattern>jakarta.faces</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.el</pattern>
                                    <shadedPattern>jakarta.el</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.annotation</pattern>
                                    <shadedPattern>jakarta.annotation</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.servlet</pattern>
                                    <shadedPattern>jakarta.servlet</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.persistence</pattern>
                                    <shadedPattern>jakarta.persistence</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.enterprise</pattern>
                                    <shadedPattern>jakarta.enterprise</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.xml.bind</pattern>
                                    <shadedPattern>jakarta.xml.bind</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.validation</pattern>
                                    <shadedPattern>jakarta.validation</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.inject</pattern>
                                    <shadedPattern>jakarta.inject</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.activation</pattern>
                                    <shadedPattern>jakarta.activation</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.ws.rs</pattern>
                                    <shadedPattern>jakarta.ws.rs</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.jws</pattern>
                                    <shadedPattern>jakarta.jws</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.cache</pattern>
                                    <shadedPattern>jakarta.cache</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.xml.ws</pattern>
                                    <shadedPattern>jakarta.xml.ws</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>javax.xml.soap</pattern>
                                    <shadedPattern>jakarta.xml.soap</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>window.jsf</pattern>
                                    <shadedPattern>window.faces</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>jsf.ajax</pattern>
                                    <shadedPattern>faces.ajax</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>jsf.js</pattern>
                                    <shadedPattern>faces.js</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>/javax.faces</pattern>
                                    <shadedPattern>/jakarta.faces</shadedPattern>
                                    <rawString>true</rawString>
                                </relocation>
                            </relocations>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>io.yupiik.maven</groupId>
                        <artifactId>maven-shade-transformers</artifactId>
                        <version>0.0.5</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xml-maven-plugin</artifactId>
                <version>1.1.0</version>
                <executions>
                    <execution>
                        <id>minify-xml</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>transform</goal>
                        </goals>
                        <configuration>
                            <transformationSets>
                                <transformationSet>
                                    <dir>${project.build.directory}/classes/META-INF/</dir>
                                    <outputDir>${project.build.directory}/classes/META-INF/</outputDir>
                                    <stylesheet>${project.basedir}/../src/conf/minify.xslt</stylesheet>
                                    <includes>
                                        <include>*.xml</include>
                                    </includes>
                                </transformationSet>
                            </transformationSets>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>rename-xml-file</id>
                        <phase>process-resources</phase>
                        <configuration>
                            <target>
                                <copy file="${project.build.directory}/classes/META-INF/primefaces-extensions.taglib.xml" tofile="${project.build.directory}/classes/META-INF/primefaces-extensions.urn.taglib.xml"/>
                                <!-- Modify the copied file -->
                                <replace file="${project.build.directory}/classes/META-INF/primefaces-extensions.urn.taglib.xml">
                                    <replacefilter token="http://primefaces.org/ui/extensions" value="primefaces.extensions"/>
                                    <replacefilter token="http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_3.xsd" value="https://jakarta.ee/xml/ns/jakartaee/web-facelettaglibrary_4_0.xsd"/>
                                    <replacefilter token="http://xmlns.jcp.org/xml/ns/javaee" value="https://jakarta.ee/xml/ns/jakartaee"/>
                                    <replacefilter token="version=&quot;2.3&quot;" value="version=&quot;4.0&quot;"/>
                                </replace>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Check monaco editor widget types -->
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <configuration>
                    <workingDirectory>${project.basedir}/src/main/resources/META-INF/resources/primefaces-extensions/monacoeditor</workingDirectory>
                </configuration>
                <executions>
                    <!-- Install node -->
                    <execution>
                        <id>pfe-install-node-and-npm</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>verify</phase>
                    </execution>
                    <!-- Install dependencies -->
                    <execution>
                        <id>pfe-npm-install</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>verify</phase>
                        <configuration>
                            <arguments>install</arguments>
                            <testFailureIgnore>true</testFailureIgnore>
                        </configuration>
                    </execution>
                    <!-- Generate editor options -->
                    <execution>
                        <id>generate editor options</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
                            <arguments>run generate-editor-options</arguments>
                        </configuration>
                    </execution>
                    <!-- Check typings -->
                    <execution>
                        <id>pfe-check-monaco-widget-typings</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <phase>verify</phase>
                        <configuration>
                            <arguments>run verify</arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Make generated Java files available -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>include-generated-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${project.basedir}/target/generated-sources/java/</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.github.matinh.vdldoc</groupId>
                <artifactId>vdldoc-maven-plugin</artifactId>
                <version>2.1</version>
                <dependencies>
                    <dependency>
                        <groupId>org.omnifaces</groupId>
                        <artifactId>vdldoc</artifactId>
                        <version>3.2</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.cyclonedx</groupId>
                <artifactId>cyclonedx-maven-plugin</artifactId>
                <version>2.9.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>makeAggregateBom</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <skip>${cyclonedx.skip}</skip>
                    <projectType>library</projectType>
                    <schemaVersion>1.6</schemaVersion>
                    <includeBomSerialNumber>true</includeBomSerialNumber>
                    <includeCompileScope>true</includeCompileScope>
                    <includeProvidedScope>false</includeProvidedScope>
                    <includeRuntimeScope>true</includeRuntimeScope>
                    <includeSystemScope>true</includeSystemScope>
                    <includeTestScope>false</includeTestScope>
                    <includeLicenseText>false</includeLicenseText>
                    <outputReactorProjects>true</outputReactorProjects>
                    <outputFormat>all</outputFormat>
                    <verbose>false</verbose><!-- = ${cyclonedx.verbose} -->
                </configuration>
            </plugin>
        </plugins>
    </build>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.9.0</version>
                <configuration>
                    <dependencyDetailsEnabled>true</dependencyDetailsEnabled>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>summary</report>
                            <report>dependencies</report>
                            <report>scm</report>
                            <report>ci-management</report>
                            <report>team</report>
                            <report>distribution-management</report>
                            <report>plugins</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <reportSets>
                    <reportSet>
                        <id>default</id>
                        <configuration>
                            <notimestamp>true</notimestamp>
                            <quiet>true</quiet>
                            <detectLinks>false</detectLinks>
                            <detectOfflineLinks>false</detectOfflineLinks>
                            <failOnError>false</failOnError>
                            <failOnWarning>false</failOnWarning>
                            <links>
                                <link>http://docs.oracle.com/javase/6/docs/api/</link>
                                <link>http://www.slf4j.org/apidocs/</link>
                            </links>
                        </configuration>
                        <reports>
                            <report>javadoc</report>
                            <report>test-javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <linkJavadoc>true</linkJavadoc>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>3.5.3</version>
                <configuration>
                    <aggregate>false</aggregate>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>report-only</report>
                            <report>failsafe-report-only</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changes-plugin</artifactId>
                <version>2.12.1</version>
                <configuration>
                    <xmlPath>${project.basedir}/src/site/changes.xml</xmlPath>
                </configuration>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>changes-report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>4.9.3.0</version>
                <configuration>
                    <effort>Max</effort>
                    <threshold>Default</threshold>
                    <xmlOutput>true</xmlOutput>
                    <!-- Optional directory to put findbugs xml report -->
                    <xmlOutputDirectory>target/site</xmlOutputDirectory>
                    <omitVisitors/>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>taglist-maven-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <tagListOptions>
                        <tagClasses>
                            <tagClass>
                                <displayName>TODO</displayName>
                                <tags>
                                    <tag>
                                        <matchString>TODO</matchString>
                                        <matchType>ignoreCase</matchType>
                                    </tag>
                                </tags>
                            </tagClass>
                        </tagClasses>
                    </tagListOptions>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>