This is an automated email from the ASF dual-hosted git repository.

mawiesne pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opennlp-sandbox.git


The following commit(s) were added to refs/heads/main by this push:
     new 65ca05b  Updates sandbox components to use modular OpenNLP 3.0.0-M1 
(#445)
65ca05b is described below

commit 65ca05bcf498e9a65ca16629bcc1102eef06d8f2
Author: Martin Wiesner <[email protected]>
AuthorDate: Fri Mar 20 22:04:04 2026 +0100

    Updates sandbox components to use modular OpenNLP 3.0.0-M1 (#445)
    
    - adapts version in pom files
    - adapts towards more fine-grained use of modular OpenNLP components
    - adapts classes with missing generic types
    - removes use of `new URL(..)`
    - bumps snapshot version for next dev iteration
---
 .github/workflows/maven.yml                        |  7 +++---
 caseditor-corpus-server-plugin/pom.xml             |  5 ++--
 caseditor-opennlp-plugin/pom.xml                   |  7 +++---
 corpus-server/corpus-server-connector/pom.xml      |  9 +++----
 corpus-server/corpus-server-core/pom.xml           |  2 +-
 corpus-server/corpus-server-impl/pom.xml           |  5 ++--
 corpus-server/corpus-server-tools/pom.xml          |  3 +--
 corpus-server/pom.xml                              |  4 +--
 mahout-addon/pom.xml                               |  7 +++---
 .../mahout/AbstractOnlineLearnerTrainer.java       |  6 ++---
 .../mahout/AdaptiveLogisticRegressionTrainer.java  |  8 ++----
 .../addons/mahout/LogisticRegressionTrainer.java   |  8 ++----
 .../mahout/OnlineLogisticRegressionTrainer.java    |  7 ++----
 .../addons/mahout/PassiveAggressiveTrainer.java    |  7 ++----
 mallet-addon/pom.xml                               | 10 +++-----
 .../java/opennlp/addons/mallet/CRFTrainer.java     |  6 ++++-
 .../java/opennlp/addons/mallet/MaxentTrainer.java  |  6 +++--
 modelbuilder-addon/pom.xml                         | 10 +++++---
 nlp-utils/pom.xml                                  |  3 +--
 opennlp-brat-annotator/pom.xml                     |  4 +--
 opennlp-coref/pom.xml                              |  5 ++--
 .../opennlp/tools/coref/AbstractCorefTest.java     | 12 ++++++++-
 opennlp-dl/pom.xml                                 | 12 ++++++---
 opennlp-grpc/README.md                             |  2 +-
 opennlp-grpc/opennlp-grpc-api/pom.xml              |  2 +-
 opennlp-grpc/opennlp-grpc-service/pom.xml          |  8 +++---
 .../src/main/java/opennlp/OpenNLPServer.java       |  2 +-
 .../service/classpath/DirectoryModelFinder.java    | 16 +++++++++---
 .../service/exception/ServiceException.java        |  5 ++++
 opennlp-grpc/pom.xml                               |  2 +-
 opennlp-similarity/pom.xml                         | 14 ++++++-----
 opennlp-wsd/pom.xml                                | 13 ++++++----
 pom.xml                                            | 29 ++++++++++++++--------
 summarizer/pom.xml                                 |  7 +++---
 tagging-server/pom.xml                             |  5 ++--
 tf-ner-poc/pom.xml                                 |  5 ++--
 wikinews-importer/pom.xml                          |  3 +--
 37 files changed, 143 insertions(+), 123 deletions(-)

diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index a0e82a8..1a24e93 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -16,7 +16,7 @@
 name: Java CI
 
 on:
-  # Run CI on Pushes to "master"" or on pull requests targeting "master".
+  # Run CI on Pushes to "main or on pull requests targeting "main".
   push:
     branches:
       - main
@@ -28,7 +28,6 @@ on:
 jobs:
   build:
     runs-on: ${{ matrix.os }}
-    continue-on-error: ${{ matrix.experimental }}
     strategy:
       fail-fast: false
       matrix:
@@ -36,7 +35,7 @@ jobs:
         java: [ 21, 25 ]
         experimental: [false]
 #         include:
-#           - java: 25-ea
+#           - java: 26-ea
 #             os: ubuntu-latest
 #             experimental: true
 
@@ -54,6 +53,6 @@ jobs:
         distribution: temurin
         java-version: ${{ matrix.java }}
     - name: Build with Maven
-      run: mvn -V clean test install --no-transfer-progress -Pjacoco
+      run: mvn -V clean test verify --no-transfer-progress -Pjacoco
     - name: Jacoco
       run: mvn jacoco:report
diff --git a/caseditor-corpus-server-plugin/pom.xml 
b/caseditor-corpus-server-plugin/pom.xml
index 303b773..4645710 100644
--- a/caseditor-corpus-server-plugin/pom.xml
+++ b/caseditor-corpus-server-plugin/pom.xml
@@ -23,13 +23,12 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>caseditor-corpus-server-plugin</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
-       <packaging>jar</packaging>
        <name>Apache OpenNLP CasEditor Corpus Server Plugin</name>
+       <packaging>jar</packaging>
 
        <repositories>
                <repository>
diff --git a/caseditor-opennlp-plugin/pom.xml b/caseditor-opennlp-plugin/pom.xml
index 9f3a921..9a2261e 100644
--- a/caseditor-opennlp-plugin/pom.xml
+++ b/caseditor-opennlp-plugin/pom.xml
@@ -23,13 +23,12 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>caseditor-opennlp-plugin</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
-       <packaging>jar</packaging>
        <name>Apache OpenNLP CasEditor Plugin</name>
+       <packaging>jar</packaging>
 
        <repositories>
                <repository>
@@ -52,7 +51,7 @@
        <dependencies>
                <dependency>
                  <groupId>org.apache.opennlp</groupId>
-                 <artifactId>opennlp-tools</artifactId>
+                 <artifactId>opennlp-runtime</artifactId>
                </dependency>
 
                <!-- UIMA dependencies -->
diff --git a/corpus-server/corpus-server-connector/pom.xml 
b/corpus-server/corpus-server-connector/pom.xml
index 446c07e..672d5e7 100644
--- a/corpus-server/corpus-server-connector/pom.xml
+++ b/corpus-server/corpus-server-connector/pom.xml
@@ -24,13 +24,12 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>corpus-server</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>corpus-server-connector</artifactId>
-       <packaging>jar</packaging>
-
        <name>Apache OpenNLP Corpus Server UIMA Connector</name>
+       <packaging>jar</packaging>
 
        <dependencies>
                <dependency>
@@ -70,14 +69,14 @@
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
                        <artifactId>corpus-server-core</artifactId>
-                       <version>2.5.8-SNAPSHOT</version>
+                       <version>3.0.0-SNAPSHOT</version>
                        <scope>test</scope>
                </dependency>
 
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
                        <artifactId>corpus-server-impl</artifactId>
-                       <version>2.5.8-SNAPSHOT</version>
+                       <version>3.0.0-SNAPSHOT</version>
                        <scope>test</scope>
                </dependency>
                
diff --git a/corpus-server/corpus-server-core/pom.xml 
b/corpus-server/corpus-server-core/pom.xml
index 7f5af4a..afc4b7f 100644
--- a/corpus-server/corpus-server-core/pom.xml
+++ b/corpus-server/corpus-server-core/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>corpus-server</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>corpus-server-core</artifactId>
diff --git a/corpus-server/corpus-server-impl/pom.xml 
b/corpus-server/corpus-server-impl/pom.xml
index c86f2cb..37059b4 100644
--- a/corpus-server/corpus-server-impl/pom.xml
+++ b/corpus-server/corpus-server-impl/pom.xml
@@ -24,11 +24,10 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>corpus-server</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>corpus-server-impl</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
        <packaging>bundle</packaging>
 
        <name>Apache OpenNLP Corpus Server Implementation</name>
@@ -37,7 +36,7 @@
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
                        <artifactId>corpus-server-core</artifactId>
-                       <version>2.5.8-SNAPSHOT</version>
+                       <version>3.0.0-SNAPSHOT</version>
                        <scope>provided</scope>
                </dependency>
 
diff --git a/corpus-server/corpus-server-tools/pom.xml 
b/corpus-server/corpus-server-tools/pom.xml
index 4877cfb..5b6ad87 100644
--- a/corpus-server/corpus-server-tools/pom.xml
+++ b/corpus-server/corpus-server-tools/pom.xml
@@ -24,11 +24,10 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>corpus-server</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>corpus-server-tools</artifactId>
-       <version>2.1.1-incubating-SNAPSHOT</version>
        <packaging>jar</packaging>
 
        <name>Apache OpenNLP Corpus Server Shell</name>
diff --git a/corpus-server/pom.xml b/corpus-server/pom.xml
index 0d2b2cc..f10d10e 100644
--- a/corpus-server/pom.xml
+++ b/corpus-server/pom.xml
@@ -24,11 +24,11 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
        <artifactId>corpus-server</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
+       <version>3.0.0-SNAPSHOT</version>
        <packaging>pom</packaging>
 
        <name>Apache OpenNLP Corpus Server</name>
diff --git a/mahout-addon/pom.xml b/mahout-addon/pom.xml
index cf496e7..34b3bd1 100644
--- a/mahout-addon/pom.xml
+++ b/mahout-addon/pom.xml
@@ -24,18 +24,17 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
     
        <artifactId>mahout-addon</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
-       <packaging>jar</packaging>
        <name>Apache OpenNLP Mahout Addon</name>
+       <packaging>jar</packaging>
 
        <dependencies>
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
-                       <artifactId>opennlp-tools</artifactId>
+                       <artifactId>opennlp-runtime</artifactId>
                </dependency>
 
                <dependency>
diff --git 
a/mahout-addon/src/main/java/opennlp/addons/mahout/AbstractOnlineLearnerTrainer.java
 
b/mahout-addon/src/main/java/opennlp/addons/mahout/AbstractOnlineLearnerTrainer.java
index 0929b84..c04a7cf 100644
--- 
a/mahout-addon/src/main/java/opennlp/addons/mahout/AbstractOnlineLearnerTrainer.java
+++ 
b/mahout-addon/src/main/java/opennlp/addons/mahout/AbstractOnlineLearnerTrainer.java
@@ -29,7 +29,7 @@ import opennlp.tools.ml.AbstractEventTrainer;
 import opennlp.tools.ml.model.DataIndexer;
 import opennlp.tools.util.TrainingParameters;
 
-abstract class AbstractOnlineLearnerTrainer extends AbstractEventTrainer {
+abstract class AbstractOnlineLearnerTrainer extends 
AbstractEventTrainer<TrainingParameters> {
 
   protected int iterations;
   
@@ -41,7 +41,7 @@ abstract class AbstractOnlineLearnerTrainer extends 
AbstractEventTrainer {
          iterations = trainParams.getIntParameter("Iterations", 20);
   }
   
-  protected void trainOnlineLearner(DataIndexer indexer, 
org.apache.mahout.classifier.OnlineLearner pa) {
+  protected void trainOnlineLearner(DataIndexer<TrainingParameters> indexer, 
org.apache.mahout.classifier.OnlineLearner pa) {
     int cardinality = indexer.getPredLabels().length;
     int[] outcomes = indexer.getOutcomeList();
     
@@ -59,7 +59,7 @@ abstract class AbstractOnlineLearnerTrainer extends 
AbstractEventTrainer {
     }
   }
 
-  protected Map<String, Integer> createPrepMap(DataIndexer indexer) {
+  protected Map<String, Integer> createPrepMap(DataIndexer<TrainingParameters> 
indexer) {
     Map<String, Integer> predMap = new HashMap<>();
     
     String[] predLabels = indexer.getPredLabels();
diff --git 
a/mahout-addon/src/main/java/opennlp/addons/mahout/AdaptiveLogisticRegressionTrainer.java
 
b/mahout-addon/src/main/java/opennlp/addons/mahout/AdaptiveLogisticRegressionTrainer.java
index 9c19abd..b567493 100644
--- 
a/mahout-addon/src/main/java/opennlp/addons/mahout/AdaptiveLogisticRegressionTrainer.java
+++ 
b/mahout-addon/src/main/java/opennlp/addons/mahout/AdaptiveLogisticRegressionTrainer.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import opennlp.tools.ml.model.DataIndexer;
 import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.TrainingParameters;
 
 import org.apache.mahout.classifier.sgd.AdaptiveLogisticRegression;
 import org.apache.mahout.classifier.sgd.L1;
@@ -35,7 +36,7 @@ public class AdaptiveLogisticRegressionTrainer extends 
AbstractOnlineLearnerTrai
   }
 
   @Override
-  public MaxentModel doTrain(DataIndexer indexer) throws IOException {
+  public MaxentModel doTrain(DataIndexer<TrainingParameters> indexer) throws 
IOException {
     
     // TODO: Lets use the predMap here as well for encoding
     int numberOfOutcomes = indexer.getOutcomeLabels().length;
@@ -61,9 +62,4 @@ public class AdaptiveLogisticRegressionTrainer extends 
AbstractOnlineLearnerTrai
     return new VectorClassifierModel(pa.getBest().getPayload().getLearner(),
         indexer.getOutcomeLabels(), createPrepMap(indexer));
   }
-
-  @Override
-  public boolean isSortAndMerge() {
-    return true;
-  }
 }
diff --git 
a/mahout-addon/src/main/java/opennlp/addons/mahout/LogisticRegressionTrainer.java
 
b/mahout-addon/src/main/java/opennlp/addons/mahout/LogisticRegressionTrainer.java
index 1b9d555..80a1f67 100644
--- 
a/mahout-addon/src/main/java/opennlp/addons/mahout/LogisticRegressionTrainer.java
+++ 
b/mahout-addon/src/main/java/opennlp/addons/mahout/LogisticRegressionTrainer.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import opennlp.tools.ml.model.DataIndexer;
 import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.TrainingParameters;
 
 import org.apache.mahout.classifier.sgd.AdaptiveLogisticRegression;
 import org.apache.mahout.classifier.sgd.L1;
@@ -36,7 +37,7 @@ public class LogisticRegressionTrainer extends 
AbstractOnlineLearnerTrainer {
   }
 
   @Override
-  public MaxentModel doTrain(DataIndexer indexer) throws IOException {
+  public MaxentModel doTrain(DataIndexer<TrainingParameters> indexer) throws 
IOException {
     
     // TODO: Lets use the predMap here as well for encoding
     
@@ -82,11 +83,6 @@ public class LogisticRegressionTrainer extends 
AbstractOnlineLearnerTrainer {
     
     return new VectorClassifierModel(pa.getBest().getPayload().getLearner(), 
indexer.getOutcomeLabels(), predMap);
     
-//    return new VectorClassifierModel(pa, indexer.getOutcomeLabels(), 
predMap);
   }
 
-  @Override
-  public boolean isSortAndMerge() {
-    return true;
-  }
 }
diff --git 
a/mahout-addon/src/main/java/opennlp/addons/mahout/OnlineLogisticRegressionTrainer.java
 
b/mahout-addon/src/main/java/opennlp/addons/mahout/OnlineLogisticRegressionTrainer.java
index ee23b9c..7850027 100644
--- 
a/mahout-addon/src/main/java/opennlp/addons/mahout/OnlineLogisticRegressionTrainer.java
+++ 
b/mahout-addon/src/main/java/opennlp/addons/mahout/OnlineLogisticRegressionTrainer.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import opennlp.tools.ml.model.DataIndexer;
 import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.TrainingParameters;
 
 import org.apache.mahout.classifier.sgd.L1;
 import org.apache.mahout.classifier.sgd.OnlineLogisticRegression;
@@ -35,7 +36,7 @@ public class OnlineLogisticRegressionTrainer extends 
AbstractOnlineLearnerTraine
   }
 
   @Override
-  public MaxentModel doTrain(DataIndexer indexer) throws IOException {
+  public MaxentModel doTrain(DataIndexer<TrainingParameters> indexer) throws 
IOException {
     
     // TODO: Lets use the predMap here as well for encoding
     int numberOfOutcomes = indexer.getOutcomeLabels().length;
@@ -60,8 +61,4 @@ public class OnlineLogisticRegressionTrainer extends 
AbstractOnlineLearnerTraine
     return new VectorClassifierModel(pa, indexer.getOutcomeLabels(), 
createPrepMap(indexer));
   }
 
-  @Override
-  public boolean isSortAndMerge() {
-    return true;
-  }
 }
diff --git 
a/mahout-addon/src/main/java/opennlp/addons/mahout/PassiveAggressiveTrainer.java
 
b/mahout-addon/src/main/java/opennlp/addons/mahout/PassiveAggressiveTrainer.java
index 369724f..643bb76 100644
--- 
a/mahout-addon/src/main/java/opennlp/addons/mahout/PassiveAggressiveTrainer.java
+++ 
b/mahout-addon/src/main/java/opennlp/addons/mahout/PassiveAggressiveTrainer.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import opennlp.tools.ml.model.DataIndexer;
 import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.TrainingParameters;
 
 import org.apache.mahout.classifier.sgd.PassiveAggressive;
 
@@ -34,7 +35,7 @@ public class PassiveAggressiveTrainer extends 
AbstractOnlineLearnerTrainer {
   }
 
   @Override
-  public MaxentModel doTrain(DataIndexer indexer) throws IOException {
+  public MaxentModel doTrain(DataIndexer<TrainingParameters> indexer) throws 
IOException {
     
     // TODO: Lets use the predMap here as well for encoding
     int numberOfOutcomes = indexer.getOutcomeLabels().length;
@@ -54,8 +55,4 @@ public class PassiveAggressiveTrainer extends 
AbstractOnlineLearnerTrainer {
     return new VectorClassifierModel(pa, indexer.getOutcomeLabels(), 
createPrepMap(indexer));
   }
 
-  @Override
-  public boolean isSortAndMerge() {
-    return true;
-  }
 }
diff --git a/mallet-addon/pom.xml b/mallet-addon/pom.xml
index 0d2a283..6900c87 100644
--- a/mallet-addon/pom.xml
+++ b/mallet-addon/pom.xml
@@ -24,21 +24,19 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <groupId>kottmann.opennlp</groupId>
        <artifactId>mallet-addon</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
-
-       <packaging>jar</packaging>
        <name>Apache OpenNLP Mallet Addon</name>
+       <packaging>jar</packaging>
 
        <dependencies>
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
-                       <artifactId>opennlp-tools</artifactId>
-                       <version>${opennlp.tools.version}</version>
+                       <artifactId>opennlp-runtime</artifactId>
+                       <version>${opennlp.version}</version>
                </dependency>
                
                <dependency>
diff --git a/mallet-addon/src/main/java/opennlp/addons/mallet/CRFTrainer.java 
b/mallet-addon/src/main/java/opennlp/addons/mallet/CRFTrainer.java
index 11cd4b7..98a5ba9 100644
--- a/mallet-addon/src/main/java/opennlp/addons/mallet/CRFTrainer.java
+++ b/mallet-addon/src/main/java/opennlp/addons/mallet/CRFTrainer.java
@@ -28,6 +28,8 @@ import opennlp.tools.ml.model.Event;
 import opennlp.tools.ml.model.Sequence;
 import opennlp.tools.ml.model.SequenceClassificationModel;
 import opennlp.tools.ml.model.SequenceStream;
+import opennlp.tools.util.TrainingParameters;
+
 import cc.mallet.fst.CRF;
 import cc.mallet.fst.CRFOptimizableByLabelLikelihood;
 import cc.mallet.fst.CRFTrainerByValueGradients;
@@ -45,7 +47,9 @@ import cc.mallet.types.LabelSequence;
 // Transducer should be abstract, we have two CRF and HMM.
 // For HMM we don't need to generate any features (how to do that nicely?!)
 // Dummy feature generator ?!
-public class CRFTrainer extends AbstractTrainer implements SequenceTrainer {
+public class CRFTrainer
+    extends AbstractTrainer<TrainingParameters>
+    implements SequenceTrainer<TrainingParameters> {
 
   private int[] getOrders() {
     String[] ordersString = "0,1".split(",");
diff --git 
a/mallet-addon/src/main/java/opennlp/addons/mallet/MaxentTrainer.java 
b/mallet-addon/src/main/java/opennlp/addons/mallet/MaxentTrainer.java
index cfcb294..b9e2aa5 100644
--- a/mallet-addon/src/main/java/opennlp/addons/mallet/MaxentTrainer.java
+++ b/mallet-addon/src/main/java/opennlp/addons/mallet/MaxentTrainer.java
@@ -26,6 +26,8 @@ import java.util.Collection;
 import opennlp.tools.ml.AbstractEventTrainer;
 import opennlp.tools.ml.model.DataIndexer;
 import opennlp.tools.ml.model.MaxentModel;
+import opennlp.tools.util.TrainingParameters;
+
 import cc.mallet.classify.Classifier;
 import cc.mallet.classify.MaxEntTrainer;
 import cc.mallet.types.Alphabet;
@@ -34,7 +36,7 @@ import cc.mallet.types.Instance;
 import cc.mallet.types.InstanceList;
 import cc.mallet.types.LabelAlphabet;
 
-public class MaxentTrainer extends AbstractEventTrainer {
+public class MaxentTrainer extends AbstractEventTrainer<TrainingParameters> {
 
   @Override
   public boolean isSortAndMerge() {
@@ -42,7 +44,7 @@ public class MaxentTrainer extends AbstractEventTrainer {
   }
 
   @Override
-  public MaxentModel doTrain(DataIndexer indexer) throws IOException {
+  public MaxentModel doTrain(DataIndexer<TrainingParameters> indexer) throws 
IOException {
 
     int numFeatures = indexer.getPredLabels().length;
 
diff --git a/modelbuilder-addon/pom.xml b/modelbuilder-addon/pom.xml
index 2a2be56..de0d46d 100644
--- a/modelbuilder-addon/pom.xml
+++ b/modelbuilder-addon/pom.xml
@@ -22,11 +22,10 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>modelbuilder-addon</artifactId>
-  <version>2.5.8-SNAPSHOT</version>
   <packaging>jar</packaging>
 
   <name>Apache OpenNLP ModelBuilder Addon</name>
@@ -38,7 +37,12 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.opennlp</groupId>
-      <artifactId>opennlp-tools</artifactId>
+      <artifactId>opennlp-runtime</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.apache.opennlp</groupId>
+      <artifactId>opennlp-formats</artifactId>
     </dependency>
 
     <dependency>
diff --git a/nlp-utils/pom.xml b/nlp-utils/pom.xml
index 727749f..976db5f 100644
--- a/nlp-utils/pom.xml
+++ b/nlp-utils/pom.xml
@@ -23,11 +23,10 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
   
   <artifactId>nlp-utils</artifactId>
-  <version>2.5.8-SNAPSHOT</version>
   <name>Apache OpenNLP Utils</name>
 
   <dependencies>
diff --git a/opennlp-brat-annotator/pom.xml b/opennlp-brat-annotator/pom.xml
index 2cd0550..9c12d0d 100644
--- a/opennlp-brat-annotator/pom.xml
+++ b/opennlp-brat-annotator/pom.xml
@@ -17,7 +17,7 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>opennlp-brat-annotator</artifactId>
@@ -73,7 +73,7 @@
 
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
-                       <artifactId>opennlp-tools</artifactId>
+                       <artifactId>opennlp-runtime</artifactId>
                </dependency>
 
                <dependency>
diff --git a/opennlp-coref/pom.xml b/opennlp-coref/pom.xml
index db5f17a..6a1ade6 100644
--- a/opennlp-coref/pom.xml
+++ b/opennlp-coref/pom.xml
@@ -24,13 +24,12 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>opennlp-coref</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
-       <packaging>jar</packaging>
        <name>Apache OpenNLP Coreferencer</name>
+       <packaging>jar</packaging>
 
        <properties>
                <wordnet-dict.version>3.1</wordnet-dict.version>
diff --git 
a/opennlp-coref/src/test/java/opennlp/tools/coref/AbstractCorefTest.java 
b/opennlp-coref/src/test/java/opennlp/tools/coref/AbstractCorefTest.java
index bebcfdb..db1e58d 100644
--- a/opennlp-coref/src/test/java/opennlp/tools/coref/AbstractCorefTest.java
+++ b/opennlp-coref/src/test/java/opennlp/tools/coref/AbstractCorefTest.java
@@ -20,6 +20,8 @@ package opennlp.tools.coref;
 import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -39,7 +41,15 @@ public abstract class AbstractCorefTest {
   protected static final String MODEL_TRAINING_DIR = "/models/training";
 
   protected static void downloadVersion15Model(String modelName) throws 
IOException {
-    downloadModel(new URL(BASE_URL_MODELS_V15 + modelName));
+    downloadModel(toModelURL(BASE_URL_MODELS_V15 + modelName));
+  }
+
+  private static URL toModelURL(String location) throws IOException {
+    try {
+      return new URI(location).toURL();
+    } catch (URISyntaxException e) {
+      throw new IOException(e);
+    }
   }
 
   private static void downloadModel(URL url) throws IOException {
diff --git a/opennlp-dl/pom.xml b/opennlp-dl/pom.xml
index 41902ad..107bdce 100644
--- a/opennlp-dl/pom.xml
+++ b/opennlp-dl/pom.xml
@@ -22,13 +22,12 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>opennlp-dl</artifactId>
-  <version>2.5.8-SNAPSHOT</version>
-  <packaging>jar</packaging>
   <name>Apache OpenNLP DL4J</name>
+  <packaging>jar</packaging>
 
   <properties>
     <nd4j.version>1.0.0-M2.1</nd4j.version>
@@ -40,8 +39,13 @@
   <dependencies>
     <dependency>
         <groupId>org.apache.opennlp</groupId>
-        <artifactId>opennlp-tools</artifactId>
+        <artifactId>opennlp-runtime</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.opennlp</groupId>
+      <artifactId>opennlp-formats</artifactId>
+    </dependency>
+
 
     <dependency>
       <groupId>org.deeplearning4j</groupId>
diff --git a/opennlp-grpc/README.md b/opennlp-grpc/README.md
index 05b391d..3eae2bd 100644
--- a/opennlp-grpc/README.md
+++ b/opennlp-grpc/README.md
@@ -43,7 +43,7 @@ mvn clean install
 Start the server: Use the following command to run the server with default 
settings:
 
 ```bash
-java -jar target/opennlp-grpc-server-2.5.8-SNAPSHOT.jar
+java -jar target/opennlp-grpc-server-3.0.0-SNAPSHOT.jar
 ```
 
 Configure server options: 
diff --git a/opennlp-grpc/opennlp-grpc-api/pom.xml 
b/opennlp-grpc/opennlp-grpc-api/pom.xml
index 839e78b..e0a0ba7 100644
--- a/opennlp-grpc/opennlp-grpc-api/pom.xml
+++ b/opennlp-grpc/opennlp-grpc-api/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.opennlp</groupId>
         <artifactId>opennlp-grpc</artifactId>
-        <version>2.5.8-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>opennlp-grpc-api</artifactId>
diff --git a/opennlp-grpc/opennlp-grpc-service/pom.xml 
b/opennlp-grpc/opennlp-grpc-service/pom.xml
index c031068..ed4eec8 100644
--- a/opennlp-grpc/opennlp-grpc-service/pom.xml
+++ b/opennlp-grpc/opennlp-grpc-service/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.opennlp</groupId>
         <artifactId>opennlp-grpc</artifactId>
-        <version>2.5.8-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>opennlp-grpc-service</artifactId>
@@ -38,13 +38,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.opennlp</groupId>
-            <artifactId>opennlp-tools</artifactId>
-            <version>${opennlp.tools.version}</version>
+            <artifactId>opennlp-runtime</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.opennlp</groupId>
-            <artifactId>opennlp-tools-models</artifactId>
-            <version>${opennlp.tools.version}</version>
+            <artifactId>opennlp-models</artifactId>
         </dependency>
         <dependency>
             <groupId>info.picocli</groupId>
diff --git 
a/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/OpenNLPServer.java 
b/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/OpenNLPServer.java
index 7f129f7..39f0332 100644
--- a/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/OpenNLPServer.java
+++ b/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/OpenNLPServer.java
@@ -65,7 +65,7 @@ import opennlp.service.TokenizerService;
  * The server includes graceful shutdown handling using a shutdown hook to 
ensure resources are released
  * when the server is stopped.</p>
  */
-@Command(name = "OpenNLP Server", mixinStandardHelpOptions = true, version = 
"2.5.8-SNAPSHOT")
+@Command(name = "OpenNLP Server", mixinStandardHelpOptions = true, version = 
"3.0.0-SNAPSHOT")
 public class OpenNLPServer implements Callable<Integer> {
 
   private static final org.slf4j.Logger logger = 
LoggerFactory.getLogger(OpenNLPServer.class);
diff --git 
a/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/classpath/DirectoryModelFinder.java
 
b/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/classpath/DirectoryModelFinder.java
index 773f81c..2941d41 100644
--- 
a/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/classpath/DirectoryModelFinder.java
+++ 
b/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/classpath/DirectoryModelFinder.java
@@ -163,18 +163,28 @@ public class DirectoryModelFinder extends 
AbstractClassPathModelFinder implement
     return pattern.matcher(url.getFile()).matches();
   }
 
+  private static URL toURL(String location) throws IOException {
+    try {
+      return new URI(location).toURL();
+    } catch (URISyntaxException e) {
+      throw new IOException(e);
+    }
+  }
+
   private List<URI> getURIsFromJar(URL fileUrl, boolean isWindows) throws 
IOException {
     final List<URI> uris = new ArrayList<>();
-    final URL jarUrl = new URL(JAR + ":" + (isWindows ? 
fileUrl.toString().replace("\\", "/") : fileUrl.toString()) + "!/");
+    final String location = JAR + ":" +
+        (isWindows ? fileUrl.toString().replace("\\", "/")
+            : fileUrl.toString()) + "!/";
+    final URL jarUrl = toURL(location);
     final JarURLConnection jarConnection = (JarURLConnection) 
jarUrl.openConnection();
     try (JarFile jarFile = jarConnection.getJarFile()) {
       final Enumeration<JarEntry> entries = jarFile.entries();
       while (entries.hasMoreElements()) {
         final JarEntry entry = entries.nextElement();
         if (!entry.isDirectory()) {
-          final URL entryUrl = new URL(jarUrl + entry.getName());
           try {
-            uris.add(entryUrl.toURI());
+            uris.add(new URI(jarUrl + entry.getName()));
           } catch (URISyntaxException ignored) {
             //if we cannot convert to URI here, we ignore that entry.
           }
diff --git 
a/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/exception/ServiceException.java
 
b/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/exception/ServiceException.java
index 0035fbe..3d6f363 100644
--- 
a/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/exception/ServiceException.java
+++ 
b/opennlp-grpc/opennlp-grpc-service/src/main/java/opennlp/service/exception/ServiceException.java
@@ -19,8 +19,13 @@
 
 package opennlp.service.exception;
 
+import java.io.Serial;
+
 public class ServiceException extends RuntimeException {
 
+  @Serial
+  private static final long serialVersionUID = -3387516993124229948L;
+
   public ServiceException(String message, Throwable cause) {
     super(message, cause);
   }
diff --git a/opennlp-grpc/pom.xml b/opennlp-grpc/pom.xml
index a1b29f5..3a6e385 100644
--- a/opennlp-grpc/pom.xml
+++ b/opennlp-grpc/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.opennlp</groupId>
         <artifactId>opennlp-sandbox</artifactId>
-        <version>2.5.8-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>opennlp-grpc</artifactId>
diff --git a/opennlp-similarity/pom.xml b/opennlp-similarity/pom.xml
index 403b778..5c3c7bb 100644
--- a/opennlp-similarity/pom.xml
+++ b/opennlp-similarity/pom.xml
@@ -17,14 +17,12 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>opennlp-similarity</artifactId>
-  <version>2.5.8-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
   <name>Apache OpenNLP Similarity distribution</name>
+  <packaging>jar</packaging>
 
   <properties>
     <jakarta.bind-api.version>4.0.5</jakarta.bind-api.version>
@@ -76,11 +74,15 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.opennlp</groupId>
-      <artifactId>opennlp-tools</artifactId>
+      <artifactId>opennlp-runtime</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.opennlp</groupId>
+      <artifactId>opennlp-cli</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.opennlp</groupId>
-      <artifactId>opennlp-tools-models</artifactId>
+      <artifactId>opennlp-models</artifactId>
     </dependency>
 
     <!-- Required English model resources at runtime -->
diff --git a/opennlp-wsd/pom.xml b/opennlp-wsd/pom.xml
index 34f8f98..36547c4 100644
--- a/opennlp-wsd/pom.xml
+++ b/opennlp-wsd/pom.xml
@@ -24,22 +24,25 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>opennlp-wsd</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
-       <packaging>jar</packaging>
        <name>Apache OpenNLP WSD</name>
+       <packaging>jar</packaging>
 
        <dependencies>
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
-                       <artifactId>opennlp-tools</artifactId>
+                       <artifactId>opennlp-runtime</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.opennlp</groupId>
+                       <artifactId>opennlp-models</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.apache.opennlp</groupId>
-                       <artifactId>opennlp-tools-models</artifactId>
+                       <artifactId>opennlp-cli</artifactId>
                </dependency>
 
                <!-- Required English model resources at runtime -->
diff --git a/pom.xml b/pom.xml
index f234ea1..90f6c33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
 
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache OpenNLP Sandbox</name>
@@ -116,13 +116,13 @@
 
     <properties>
         <!-- Build Properties -->
-        <java.version>17</java.version>
+        <java.version>21</java.version>
         <maven.version>3.3.9</maven.version>
         <maven.compiler.source>${java.version}</maven.compiler.source>
         <maven.compiler.target>${java.version}</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
-        <opennlp.tools.version>2.5.7</opennlp.tools.version>
+        <opennlp.version>3.0.0-M1</opennlp.version>
         <opennlp.models.version>1.3.0</opennlp.models.version>
         <opennlp.forkCount>1.0C</opennlp.forkCount>
 
@@ -160,23 +160,30 @@
     <dependencyManagement>
         <dependencies>
             <dependency>
-                <artifactId>opennlp-tools</artifactId>
+                <artifactId>opennlp-runtime</artifactId>
                 <groupId>${project.groupId}</groupId>
-                <version>${opennlp.tools.version}</version>
+                <version>${opennlp.version}</version>
             </dependency>
             <dependency>
-                <artifactId>opennlp-tools-models</artifactId>
+                <artifactId>opennlp-formats</artifactId>
                 <groupId>${project.groupId}</groupId>
-                <version>${opennlp.tools.version}</version>
+                <version>${opennlp.version}</version>
+            </dependency>
+            <dependency>
+                <artifactId>opennlp-models</artifactId>
+                <groupId>${project.groupId}</groupId>
+                <version>${opennlp.version}</version>
+            </dependency>
+            <dependency>
+                <artifactId>opennlp-cli</artifactId>
+                <groupId>${project.groupId}</groupId>
+                <version>${opennlp.version}</version>
             </dependency>
-
             <dependency>
                 <artifactId>opennlp-tools</artifactId>
                 <groupId>${project.groupId}</groupId>
-                <version>${project.version}</version>
-                <type>test-jar</type>
+                <version>${opennlp.version}</version>
             </dependency>
-
             <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-api</artifactId>
diff --git a/summarizer/pom.xml b/summarizer/pom.xml
index bb38771..f5b06f2 100644
--- a/summarizer/pom.xml
+++ b/summarizer/pom.xml
@@ -23,11 +23,10 @@
   <parent>
     <groupId>org.apache.opennlp</groupId>
     <artifactId>opennlp-sandbox</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
+    <version>3.0.0-SNAPSHOT</version>
   </parent>
   
   <artifactId>summarizer</artifactId>
-  <version>2.5.8-SNAPSHOT</version>
   <name>Apache OpenNLP Summarizer</name>
 
   <properties>
@@ -47,11 +46,11 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.opennlp</groupId>
-      <artifactId>opennlp-tools</artifactId>
+      <artifactId>opennlp-runtime</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.opennlp</groupId>
-      <artifactId>opennlp-tools-models</artifactId>
+      <artifactId>opennlp-models</artifactId>
     </dependency>
 
     <!-- Required English model resources at runtime -->
diff --git a/tagging-server/pom.xml b/tagging-server/pom.xml
index 26bb6c0..c3ea771 100644
--- a/tagging-server/pom.xml
+++ b/tagging-server/pom.xml
@@ -24,11 +24,10 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>tagging-server</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
        <packaging>bundle</packaging>
 
        <name>Apache OpenNLP Tagging Server</name>
@@ -36,7 +35,7 @@
        <dependencies>
                <dependency>
                  <groupId>org.apache.opennlp</groupId>
-                 <artifactId>opennlp-tools</artifactId>
+                 <artifactId>opennlp-runtime</artifactId>
                </dependency>
 
                <dependency>
diff --git a/tf-ner-poc/pom.xml b/tf-ner-poc/pom.xml
index 430db73..72ad8b1 100644
--- a/tf-ner-poc/pom.xml
+++ b/tf-ner-poc/pom.xml
@@ -26,11 +26,10 @@
     <parent>
         <groupId>org.apache.opennlp</groupId>
         <artifactId>opennlp-sandbox</artifactId>
-        <version>2.5.8-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>tf-ner-poc</artifactId>
-    <version>2.5.8-SNAPSHOT</version>
     <name>Apache OpenNLP TF NER poc</name>
 
     <properties>
@@ -46,7 +45,7 @@
 
         <dependency>
             <groupId>org.apache.opennlp</groupId>
-            <artifactId>opennlp-tools</artifactId>
+            <artifactId>opennlp-runtime</artifactId>
         </dependency>
 
         <dependency>
diff --git a/wikinews-importer/pom.xml b/wikinews-importer/pom.xml
index ae1dcab..fff20d1 100644
--- a/wikinews-importer/pom.xml
+++ b/wikinews-importer/pom.xml
@@ -24,11 +24,10 @@
        <parent>
                <groupId>org.apache.opennlp</groupId>
                <artifactId>opennlp-sandbox</artifactId>
-               <version>2.5.8-SNAPSHOT</version>
+               <version>3.0.0-SNAPSHOT</version>
        </parent>
 
        <artifactId>wikinews-importer</artifactId>
-       <version>2.5.8-SNAPSHOT</version>
        <packaging>jar</packaging>
 
        <name>Apache OpenNLP Wikinews Importer</name>


Reply via email to