<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2019, 2023 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <name>EclipseLink Bundles eclipselink.jar (non-OSGi)</name>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.bundles</artifactId>
        <version>4.0.1</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <properties>
        <jdoc.doclint>none</jdoc.doclint>
        <!-- XXX deprecated comes from commonj.sdo which we don't want to touch -->
        <comp.xlint>-Xlint:all,-serial,-deprecation,-dep-ann</comp.xlint>
        <comp.test.xlint>-Xlint:none</comp.test.xlint>
        <comp.xdoclint>-Xdoclint:none</comp.xdoclint>

        <gen.src.dir>${project.build.directory}/generated-sources/dependency-sources</gen.src.dir>
        <gen.zip.dir>${project.build.directory}/generated-sources/zip-sources</gen.zip.dir>

        <!--Javadoc properties-->
        <javadoc.prefixTitle>EclipseLink ${release.version}</javadoc.prefixTitle>
        <javadoc.postfixTitle>API Reference</javadoc.postfixTitle>

        <!--Properties used for MANIFEST.MF generation-->
        <manifest.specification.title>Eclipse Persistence Services</manifest.specification.title>
        <manifest.specification.vendor>Eclipse.org - EclipseLink Project</manifest.specification.vendor>
        <manifest.implementation.title>org.eclipse.persistence</manifest.implementation.title>
        <manifest.implementation.vendor>${manifest.specification.vendor}</manifest.implementation.vendor>
        <manifest.main.class>org.eclipse.persistence.Version</manifest.main.class>
        <manifest.premain.class>org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializerAgent</manifest.premain.class>
    </properties>

    <dependencies>
        <!-- jpa: api dependencies -->
        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- moxy: api dependencies -->
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.angus</groupId>
            <artifactId>angus-activation</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.eclipse.angus</groupId>
            <artifactId>angus-mail</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.eclipse.parsson</groupId>
            <artifactId>parsson</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
        </dependency>

        <!-- dbws: api dependencies -->
        <dependency>
            <groupId>jakarta.xml.soap</groupId>
            <artifactId>jakarta.xml.soap-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.ws</groupId>
            <artifactId>jakarta.xml.ws-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- core/shared: api dependencies -->
        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.enterprise</groupId>
            <artifactId>jakarta.enterprise.cdi-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.transaction</groupId>
            <artifactId>jakarta.transaction-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.jms</groupId>
            <artifactId>jakarta.jms-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.resource</groupId>
            <artifactId>jakarta.resource-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.ws.rs</groupId>
            <artifactId>jakarta.ws.rs-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jakarta.json</groupId>
            <artifactId>jakarta.json-api</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-commons</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-tree</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-util</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.glassfish.corba</groupId>
            <artifactId>glassfish-corba-omgapi</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.glassfish.corba</groupId>
            <artifactId>glassfish-corba-orb</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc11</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.xml</groupId>
            <artifactId>xmlparserv2</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ucp</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.xml</groupId>
            <artifactId>xdb</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.observability</groupId>
            <artifactId>dms</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>

        <!-- included artifacts -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.parent</artifactId>
            <version>${project.version}</version>
            <type>zip</type>
            <classifier>common-license</classifier>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.asm</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.corba</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracle</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.jpql</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy.utils.xjc</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.sdo</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.dbws</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- artifacts for zip -->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.dbws.builder</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.extension</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpars</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpars.server</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracleddlparser</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.utils.rename</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.nosql</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracle.nosql</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <!--Initialize build.date and build.time buildNumber properties. Used to generate version.properties in org.eclipse.persistence:eclipselink module-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>build.date</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>create-timestamp</goal>
                        </goals>
                        <configuration>
                            <timestampFormat>yyyyMMdd</timestampFormat>
                            <timestampPropertyName>build.date</timestampPropertyName>
                        </configuration>
                    </execution>
                    <execution>
                        <id>build.time</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>create-timestamp</goal>
                        </goals>
                        <configuration>
                            <timestampFormat>HHmm</timestampFormat>
                            <timestampPropertyName>build.time</timestampPropertyName>
                        </configuration>
                    </execution>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>create</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>none</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <excludeTransitive>true</excludeTransitive>
                            <includeGroupIds>${project.groupId}</includeGroupIds>
                            <includeScope>provided</includeScope>
                            <classifier>sources</classifier>
                            <includeArtifactIds>
                                org.eclipse.persistence.asm,
                                org.eclipse.persistence.core,
                                org.eclipse.persistence.corba,
                                org.eclipse.persistence.dbws,
                                org.eclipse.persistence.jpa,
                                org.eclipse.persistence.jpa.jpql,
                                org.eclipse.persistence.jpars.server,
                                org.eclipse.persistence.moxy,
                                org.eclipse.persistence.moxy.utils.xjc,
                                org.eclipse.persistence.oracle,
                                org.eclipse.persistence.sdo
                            </includeArtifactIds>
                            <excludes>module-info.*,META-INF/versions/**,META-INF/MANIFEST.MF,*.html,org/eclipse/persistence/jpa/jpql/tools/**</excludes>
                            <overWriteSnapshots>true</overWriteSnapshots>
                            <outputDirectory>${gen.src.dir}</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>prepare-package-rename.properties-for-eclipselink.zip</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>org.eclipse.persistence.utils.rename</includeArtifactIds>
                            <outputDirectory>${gen.zip.dir}/utils/rename</outputDirectory>
                            <includes>package-rename.properties</includes>
                            <overWriteSnapshots>true</overWriteSnapshots>
                        </configuration>
                    </execution>
                    <execution>
                        <id>prepare-xsds-for-eclipselink.zip</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <excludeTransitive>true</excludeTransitive>
                            <includeGroupIds>${project.groupId}</includeGroupIds>
                            <includeScope>provided</includeScope>
                            <includeArtifactIds>
                                org.eclipse.persistence.asm,
                                org.eclipse.persistence.core,
                                org.eclipse.persistence.corba,
                                org.eclipse.persistence.dbws,
                                org.eclipse.persistence.jpa,
                                org.eclipse.persistence.jpa.jpql,
                                org.eclipse.persistence.jpars.server,
                                org.eclipse.persistence.moxy,
                                org.eclipse.persistence.moxy.utils.xjc,
                                org.eclipse.persistence.oracle,
                                org.eclipse.persistence.sdo
                            </includeArtifactIds>
                            <excludeClassifiers>sources,javadoc</excludeClassifiers>
                            <includes>**/*.xsd</includes>
                            <overWriteSnapshots>true</overWriteSnapshots>
                            <outputDirectory>${gen.zip.dir}/xsds</outputDirectory>
                            <fileMappers>
                                <org.codehaus.plexus.components.io.filemappers.FlattenFileMapper/>
                            </fileMappers>
                        </configuration>
                    </execution>
                    <execution>
                        <id>stage</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>${project.groupId}</groupId>
                                    <artifactId>${project.artifactId}</artifactId>
                                    <version>${project.version}</version>
                                    <type>zip</type>
                                    <outputDirectory>${project.build.directory}/stage</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>add-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>${gen.src.dir}</directory>
                                    <excludes>
                                        <exclude>**/*.java</exclude>
                                        <exclude>org/eclipse/persistence/version.properties</exclude>
                                    </excludes>
                                </resource>
                                <resource>
                                    <directory>${gen.src.dir}</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>org/eclipse/persistence/version.properties</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>add-generated-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${gen.src.dir}</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-compile</id>
                        <configuration>
                            <!-- reduce number of duplicates -->
                            <showDeprecation>false</showDeprecation>
                            <compilerArgs combine.children="override">
                                <arg>-Xlint:module,requires-transitive-automatic,requires-automatic,opens,exports</arg>
                                <arg>-Xdoclint:none</arg>
                                <arg>-Xmaxwarns</arg>
                                <arg>${warn.limit}</arg>
                                <arg>-Xmaxerrs</arg>
                                <arg>${warn.limit}</arg>
                                <arg>--add-reads</arg>
                                <arg>eclipselink=ALL-UNNAMED</arg>
                            </compilerArgs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive combine.self="override">
                        <manifest>
                            <addDefaultEntries>false</addDefaultEntries>
                            <mainClass>${manifest.main.class}</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Specification-Title>${manifest.specification.title}</Specification-Title>
                            <Specification-Vendor>${manifest.specification.vendor}</Specification-Vendor>
                            <Specification-Version>${release.version}</Specification-Version>
                            <Implementation-Title>${manifest.implementation.title}</Implementation-Title>
                            <Implementation-Vendor>${manifest.implementation.vendor}</Implementation-Vendor>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Premain-Class>${manifest.premain.class}</Premain-Class>
                            <Multi-Release>true</Multi-Release>
                        </manifestEntries>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>default-jar</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>jar</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                <configuration>
                    <archive  combine.self="override">
                        <manifest>
                            <addDefaultEntries>false</addDefaultEntries>
                        </manifest>
                        <manifestEntries>
                            <Specification-Title>${manifest.specification.title} Source</Specification-Title>
                            <Specification-Vendor>${manifest.specification.vendor}</Specification-Vendor>
                            <Specification-Version>${release.version}</Specification-Version>
                            <Implementation-Title>${manifest.implementation.title}</Implementation-Title>
                            <Implementation-Vendor>${manifest.implementation.vendor}</Implementation-Vendor>
                            <Implementation-Version>${project.version}</Implementation-Version>
                        </manifestEntries>
                    </archive>
                </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <!-- reduce number of duplicates, all issues were already reported earlier -->
                    <doclint>none</doclint>
                    <additionalOptions>
                        --add-reads eclipselink=ALL-UNNAMED
                    </additionalOptions>
                    <detectOfflineLinks>false</detectOfflineLinks>
                    <use>false</use>
                    <includeDependencySources>false</includeDependencySources>
                    <doctitle><![CDATA[${javadoc.prefixTitle}, ${javadoc.postfixTitle}]]></doctitle>
                    <header><![CDATA[${javadoc.prefixTitle}, ${javadoc.postfixTitle}]]></header>
                    <windowtitle>${javadoc.prefixTitle}, ${javadoc.postfixTitle}</windowtitle>
                    <excludePackageNames>org.eclipse.persistence.internal.*,META-INF.*</excludePackageNames>
                    <tags>
                        <tag>
                            <name>author</name>
                            <head>Author:</head>
                        </tag>
                        <tag>
                            <name>since</name>
                            <placement>a</placement>
                            <head>Since:</head>
                        </tag>
                        <tag>
                            <name>SBGen</name>
                            <placement>a</placement>
                            <head>SBGen:</head>
                        </tag>
                        <tag>
                            <name>bug</name>
                            <head>Related Bugs:</head>
                        </tag>
                    </tags>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>eclipselink.zip</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>${project.basedir}/src/main/assembly/eclipselink.zip.xml</descriptor>
                            </descriptors>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
