From af77412c19d9992ffcde36d3a20aa8bed79ba166 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= <jmjmak@utu.fi>
Date: Mon, 12 Aug 2024 17:56:00 +0300
Subject: [PATCH] JPMS + GitLab deployment

---
 .gitlab-ci.yml                         | 37 ++++++++++++++++++++++++++
 ci_settings.xml                        | 16 +++++++++++
 fontbox/pom.xml                        |  2 +-
 fontbox/src/main/java/module-info.java | 18 +++++++++++++
 io/pom.xml                             |  2 +-
 io/src/main/java/module-info.java      |  6 +++++
 parent/pom.xml                         | 22 ++++++++++++---
 pdfbox/pom.xml                         |  2 +-
 pdfbox/src/main/java/module-info.java  | 35 ++++++++++++++++++++++++
 pom.xml                                |  4 +--
 10 files changed, 135 insertions(+), 9 deletions(-)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 ci_settings.xml
 create mode 100644 fontbox/src/main/java/module-info.java
 create mode 100644 io/src/main/java/module-info.java
 create mode 100644 pdfbox/src/main/java/module-info.java

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..eea79a3
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,37 @@
+image: maven:3.9.6-eclipse-temurin-22
+
+variables:
+  # This will supress any download for dependencies and plugins or upload messages which would clutter the console log.
+  # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
+  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
+  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
+  # -DinstallAtEnd=true -DdeployAtEnd=true"
+
+# Cache downloaded dependencies and plugins between builds.
+# To keep cache across branches add ''
+cache:
+  key: "$CI_JOB_NAME"
+  paths:
+    - .m2/repository
+
+stages:
+  - build
+  - deploy
+
+build:
+  stage: build
+  script:
+    - mvn -P utu -pl parent install
+    - mvn -P utu -pl io install
+    - mvn -P utu -pl fontbox install
+    - mvn -P utu -pl pdfbox install
+
+deploy:
+  stage: deploy
+  rules:
+    - if: $CI_COMMIT_TAG
+  script:
+    - mvn -P utu -pl parent deploy -s ci_settings.xml
+    - mvn -P utu -pl io deploy -s ci_settings.xml
+    - mvn -P utu -pl fontbox deploy -s ci_settings.xml
+    - mvn -P utu -pl pdfbox deploy -s ci_settings.xml
diff --git a/ci_settings.xml b/ci_settings.xml
new file mode 100644
index 0000000..59c8c27
--- /dev/null
+++ b/ci_settings.xml
@@ -0,0 +1,16 @@
+<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
+  <servers>
+    <server>
+      <id>gitlab-maven</id>
+      <configuration>
+        <httpHeaders>
+          <property>
+            <name>Job-Token</name>
+            <value>${env.CI_JOB_TOKEN}</value>
+          </property>
+        </httpHeaders>
+      </configuration>
+    </server>
+  </servers>
+</settings>
diff --git a/fontbox/pom.xml b/fontbox/pom.xml
index a7d0637..861fc20 100644
--- a/fontbox/pom.xml
+++ b/fontbox/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.pdfbox</groupId>
     <artifactId>pdfbox-parent</artifactId>
-    <version>3.0.3</version>
+    <version>3.0.3-JPMS</version>
     <relativePath>../parent/pom.xml</relativePath>
   </parent>
 
diff --git a/fontbox/src/main/java/module-info.java b/fontbox/src/main/java/module-info.java
new file mode 100644
index 0000000..56af141
--- /dev/null
+++ b/fontbox/src/main/java/module-info.java
@@ -0,0 +1,18 @@
+
+module org.apache.fontbox {
+    requires org.apache.pdfbox.io;
+    requires org.apache.commons.logging;
+    requires java.desktop;
+    exports org.apache.fontbox;
+    exports org.apache.fontbox.afm;
+    exports org.apache.fontbox.cff;
+    exports org.apache.fontbox.cmap;
+    exports org.apache.fontbox.encoding;
+    exports org.apache.fontbox.pfb;
+    exports org.apache.fontbox.ttf;
+    exports org.apache.fontbox.type1;
+    exports org.apache.fontbox.util;
+    exports org.apache.fontbox.ttf.gsub;
+    exports org.apache.fontbox.ttf.model;
+    exports org.apache.fontbox.util.autodetect;
+}
\ No newline at end of file
diff --git a/io/pom.xml b/io/pom.xml
index b1169b5..78fb404 100644
--- a/io/pom.xml
+++ b/io/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.pdfbox</groupId>
         <artifactId>pdfbox-parent</artifactId>
-        <version>3.0.3</version>
+        <version>3.0.3-JPMS</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/io/src/main/java/module-info.java b/io/src/main/java/module-info.java
new file mode 100644
index 0000000..6411145
--- /dev/null
+++ b/io/src/main/java/module-info.java
@@ -0,0 +1,6 @@
+module org.apache.pdfbox.io {
+    requires org.apache.commons.logging;
+    requires java.base;
+    exports org.apache.pdfbox.io;
+    opens org.apache.pdfbox.io;
+}
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
index 27e2074..b09b3f8 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -30,7 +30,7 @@
   <groupId>org.apache.pdfbox</groupId>
   <artifactId>pdfbox-parent</artifactId>
   <packaging>pom</packaging>
-  <version>3.0.3</version>
+  <version>3.0.3-JPMS</version>
 
   <name>Apache PDFBox parent</name>
   <inceptionYear>2002</inceptionYear>
@@ -68,6 +68,7 @@
           https://maven.apache.org/surefire/maven-surefire-plugin/faq.html#late-property-evaluation
     -->
     <surefireArgLine />
+    <skipTests>true</skipTests>
   </properties>
 
 
@@ -83,8 +84,8 @@
           <artifactId>maven-compiler-plugin</artifactId>
           <configuration>
               <showDeprecation>true</showDeprecation>
-              <target>1.8</target>
-              <source>1.8</source>
+              <target>9</target>
+              <source>9</source>
               <encoding>UTF-8</encoding>
           </configuration>
       </plugin>
@@ -226,7 +227,7 @@
                 <plugin>
                     <artifactId>maven-compiler-plugin</artifactId>
                     <configuration>
-                        <release>8</release>
+                        <release>9</release>
                     </configuration>
                 </plugin>
             </plugins>
@@ -283,6 +284,19 @@
             </plugins>
         </build>
     </profile>
+      <profile>
+          <id>utu</id>
+          <distributionManagement>
+              <repository>
+                  <id>gitlab-maven</id>
+                  <url>${env.CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
+              </repository>
+              <snapshotRepository>
+                  <id>gitlab-maven</id>
+                  <url>${env.CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
+              </snapshotRepository>
+          </distributionManagement>
+      </profile>
   </profiles>
 
     <!-- Developers listed by PMC Chair, PMC all alphabetical-->
diff --git a/pdfbox/pom.xml b/pdfbox/pom.xml
index 164d076..463ebba 100644
--- a/pdfbox/pom.xml
+++ b/pdfbox/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.pdfbox</groupId>
         <artifactId>pdfbox-parent</artifactId>
-        <version>3.0.3</version>
+        <version>3.0.3-JPMS</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/pdfbox/src/main/java/module-info.java b/pdfbox/src/main/java/module-info.java
new file mode 100644
index 0000000..f6ada76
--- /dev/null
+++ b/pdfbox/src/main/java/module-info.java
@@ -0,0 +1,35 @@
+module org.apache.pdfbox {
+    requires transitive org.apache.fontbox;
+    requires org.apache.pdfbox.io;
+    requires org.apache.commons.logging;
+    requires java.desktop;
+    requires org.bouncycastle.pkix;
+    requires org.bouncycastle.provider;
+    exports org.apache.pdfbox;
+    exports org.apache.pdfbox.contentstream;
+    exports org.apache.pdfbox.contentstream.operator;
+    exports org.apache.pdfbox.contentstream.operator.color;
+    exports org.apache.pdfbox.contentstream.operator.graphics;
+    exports org.apache.pdfbox.contentstream.operator.text;
+    exports org.apache.pdfbox.contentstream.operator.markedcontent;
+    exports org.apache.pdfbox.contentstream.operator.state;
+    exports org.apache.pdfbox.cos;
+    exports org.apache.pdfbox.filter;
+    exports org.apache.pdfbox.multipdf;
+    exports org.apache.pdfbox.pdfparser;
+    exports org.apache.pdfbox.pdfparser.xref;
+    exports org.apache.pdfbox.pdfwriter;
+    exports org.apache.pdfbox.pdfwriter.compress;
+    exports org.apache.pdfbox.pdmodel;
+    exports org.apache.pdfbox.pdmodel.common;
+    exports org.apache.pdfbox.pdmodel.font;
+    exports org.apache.pdfbox.pdmodel.encryption;
+    exports org.apache.pdfbox.pdmodel.graphics;
+    exports org.apache.pdfbox.pdmodel.fdf;
+    exports org.apache.pdfbox.pdmodel.fixup;
+    exports org.apache.pdfbox.printing;
+    exports org.apache.pdfbox.rendering;
+    exports org.apache.pdfbox.text;
+    exports org.apache.pdfbox.util;
+    opens org.apache.pdfbox;
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 92bed3b..cb3d99f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,14 +23,14 @@
   <parent>
     <groupId>org.apache.pdfbox</groupId>
     <artifactId>pdfbox-parent</artifactId>
-    <version>3.0.3</version>
+    <version>3.0.3-JPMS</version>
     <relativePath>parent/pom.xml</relativePath>
   </parent>
 
   <groupId>org.apache.pdfbox</groupId>
   <artifactId>pdfbox-reactor</artifactId>
   <packaging>pom</packaging>
-  <version>3.0.3</version>
+  <version>3.0.3-JPMS</version>
 
   <name>Apache PDFBox Reactor</name>
 
-- 
GitLab