<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.prm</groupId>
    <artifactId>prm-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <description>
        Parent-POM und Aggregator fuer alle Java-Projekte.
        Standardmaessig (Profil java) werden alle Bibliotheken und Anwendungen gebaut.
        Die OpenClient-Wrapper liegen im Profil progress und werden nur von
        progress-update.cmd gebaut, weil sie die Progress-Kompilate brauchen.
    </description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!-- Version der OpenClient-Proxies. Wird von progress-update.cmd auf
             12.2.<Zeitstempel> gesetzt (z. B. 12.2.20261002.1104) und danach
             zusammen mit den generierten Proxies committet. -->
        <openclient.version>12.2.20261015.0609</openclient.version>

        <!-- Lokale Pfade des Windows-Buildrechners -->
        <deploymentdir>C:/prm/Java/deployments</deploymentdir>
        <tyrepro.jardir>C:/prm/Progress/TyrePro/server/framework/java/all/libraries/jars</tyrepro.jardir>
        <webXmlFilePath>C:/prm/Server/tse.rz2/etc/tomcat9/web.xml</webXmlFilePath>
        <progress.installation.path>C:/Progress/OpenEdge12.2/java</progress.installation.path>

        <!-- Hauptklasse der ExecutingServer; ProgressMonitoringServer ueberschreibt sie. -->
        <shade.mainClass>de.prm.common.messagequeueing.Main</shade.mainClass>
    </properties>

    <!-- Gitea-Maven-Registry: einzige Quelle fuer de.prm- und com.progress-Artefakte.
         Die Zugangsdaten (Token) stehen in maven-settings.xml. -->
    <repositories>
        <repository>
            <id>gitea</id>
            <url>https://git.prod.rz2.prm-ag.de/api/packages/PRM_Software_AG/maven</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>

    <distributionManagement>
        <repository>
            <id>gitea</id>
            <url>https://git.prod.rz2.prm-ag.de/api/packages/PRM_Software_AG/maven</url>
        </repository>
    </distributionManagement>

    <!-- Zentrale Versionsverwaltung. Module referenzieren interne Artefakte
         ohne <version>; hier steht sie genau einmal. -->
    <dependencyManagement>
        <dependencies>
            <!-- Interne Bibliotheken -->
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>Common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonCompression</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonConnectionPooling</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonEncryption</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonSerialization</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonMessageExecutingServer</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonHttp</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonImage</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonPdf</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonPdfToHtml</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonSocket</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonFtp</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonMail</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonGoogleApi</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonWebApp</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.common</groupId>
                <artifactId>CommonProgress</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- OpenClient-Proxies (Version setzt progress-update.cmd) -->
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-CommonProgress</artifactId>
                <version>${openclient.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-AsyncExecutingServer</artifactId>
                <version>${openclient.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-ElideProgressService</artifactId>
                <version>${openclient.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-ProgressMonitoringServer</artifactId>
                <version>${openclient.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-HomepageWebApp</artifactId>
                <version>${openclient.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-OnlineServicesWebApp</artifactId>
                <version>${openclient.version}</version>
            </dependency>
            <dependency>
                <groupId>de.prm.progress</groupId>
                <artifactId>OpenClient-SftpWebApp</artifactId>
                <version>${openclient.version}</version>
            </dependency>

            <!-- Progress-OpenClient-Runtime (nur aenderbar bei OpenEdge-Update) -->
            <dependency>
                <groupId>com.progress</groupId>
                <artifactId>o4glrt</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>com.progress</groupId>
                <artifactId>messages</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>com.progress.oe</groupId>
                <artifactId>oeauth</artifactId>
                <version>12.2.0</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>common</artifactId>
                <version>2.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.13</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>ecore</artifactId>
                <version>2.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>ecore-change</artifactId>
                <version>2.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>ecore-xmi</artifactId>
                <version>2.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.10</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>httpasyncclient</artifactId>
                <version>4.1.4</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4.12</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>httpcore-nio</artifactId>
                <version>4.4.12</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>tuscany-sdo-api</artifactId>
                <version>r2.1-1.1.1</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>tuscany-sdo-impl</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>tuscany-sdo-lib</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>tuscany-sdo-tools</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>com.progress.ext</groupId>
                <artifactId>xsd</artifactId>
                <version>2.2.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.9.0</version>
                    <configuration>
                        <release>17</release>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <!-- Server-JARs: Konfiguration zentral, pro Modul nur noch
                     outputFile und gegebenenfalls shade.mainClass. -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.4.1</version>
                    <executions>
                        <execution>
                            <id>shade</id>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <shadedArtifactAttached>true</shadedArtifactAttached>
                                <transformers>
                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>${shade.mainClass}</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- WARs: Konfiguration zentral, Module brauchen nichts mehr. -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.3.2</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                        <warName>ROOT</warName>
                        <outputDirectory>${deploymentdir}/${project.artifactId}</outputDirectory>
                        <webXml>${webXmlFilePath}</webXml>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                            <manifest>
                                <addClasspath>false</addClasspath>
                            </manifest>
                            <manifestEntries />
                            <manifestFile />
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <!-- Profil java ist standardmaessig aktiv und wird durch -Pprogress
         automatisch deaktiviert (Maven-Regel fuer activeByDefault). -->
    <profiles>
        <profile>
            <id>java</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <modules>
                <!-- Bibliotheken -->
                <module>CommonCompression</module>
                <module>Common</module>
                <module>CommonConnectionPooling</module>
                <module>CommonEncryption</module>
                <module>CommonSerialization</module>
                <module>CommonMessageExecutingServer</module>
                <module>CommonHttp</module>
                <module>CommonImage</module>
                <module>CommonPdf</module>
                <module>CommonPdfToHtml</module>
                <module>CommonSocket</module>
                <module>CommonFtp</module>
                <module>CommonMail</module>
                <module>CommonGoogleApi</module>
                <module>CommonWebApp</module>
                <module>CommonProgress</module>
                <!-- Anwendungen -->
                <module>MessageExecutingServer</module>
                <module>HttpMessageExecutingServer</module>
                <module>EncryptMessageExecutingServer</module>
                <module>ImageMessageExecutingServer</module>
                <module>PdfMessageExecutingServer</module>
                <module>PdfToHtmlMessageExecutingServer</module>
                <module>ZipMessageExecutingServer</module>
                <module>FtpMessageExecutingServer</module>
                <module>EMailClientMessageExecutingServer</module>
                <module>EMailHelperMessageExecutingServer</module>
                <module>GoogleApiMessageExecutingServer</module>
                <module>AsyncExecutingServer</module>
                <module>ProgressMonitoringServer</module>
                <module>HomepageWebApp</module>
                <module>OnlineServicesWebApp</module>
                <module>SftpWebApp</module>
                <module>TseWebApp</module>
                <module>OcrWebApp</module>
            </modules>
        </profile>
        <!-- Nur fuer progress-update.cmd: erzeugt die OpenClient-Proxies aus
             den Progress-Kompilaten und laedt sie nach Gitea hoch. -->
        <profile>
            <id>progress</id>
            <modules>
                <module>CommonProgressOpenClientWrapper</module>
                <module>AsyncExecutingServerOpenClientWrapper</module>
				<module>ElideProgressServiceOpenClientWrapper</module>
                <module>ProgressMonitoringServerOpenClientWrapper</module>
                <module>HomepageWebAppOpenClientWrapper</module>
                <module>OnlineServicesWebAppOpenClientWrapper</module>
                <module>SftpWebAppOpenClientWrapper</module>
            </modules>
        </profile>
    </profiles>
</project>
