This is an automated email from the ASF dual-hosted git repository.
tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new b287e336d fix the build on windows and try to add a windows build to
our github ci (#2407)
b287e336d is described below
commit b287e336d95e6943d93911f8389889aeb5d53905
Author: Tim Allison <[email protected]>
AuthorDate: Wed Nov 26 11:25:03 2025 -0500
fix the build on windows and try to add a windows build to our github ci
(#2407)
---
.../main-jdk17-windows-build-multi-locale.yml | 45 ++++++++++++++++++++++
.github/workflows/main-jdk17-windows-build.yml | 44 +++++++++++++++++++++
.../java/org/apache/tika/cli/TikaCLIAsyncTest.java | 1 +
.../test/java/org/apache/tika/cli/TikaCLITest.java | 9 ++---
.../tika/eval/app/ExtractComparerRunner.java | 2 +-
.../apache/tika/eval/app/ExtractProfileRunner.java | 1 +
.../tika-parsers-standard-package/pom.xml | 12 ------
.../org/apache/tika/async/cli/PluginsWriter.java | 2 +-
.../apache/tika/async/cli/SimpleAsyncConfig.java | 17 ++++++++
.../apache/tika/async/cli/AsyncProcessorTest.java | 2 +-
.../tika/async/cli/TikaConfigAsyncWriterTest.java | 4 +-
.../apache/tika/pipes/core/PluginsTestHelper.java | 1 +
.../reporter/fs/TestFileSystemStatusReporter.java | 3 +-
.../pipes/reporter/jdbc/TestJDBCPipesReporter.java | 9 +++--
.../org/apache/tika/server/core/CXFTestBase.java | 4 +-
.../tika/server/core/TikaResourceFetcherTest.java | 2 +-
16 files changed, 129 insertions(+), 29 deletions(-)
diff --git a/.github/workflows/main-jdk17-windows-build-multi-locale.yml
b/.github/workflows/main-jdk17-windows-build-multi-locale.yml
new file mode 100644
index 000000000..0dbfe0e7e
--- /dev/null
+++ b/.github/workflows/main-jdk17-windows-build-multi-locale.yml
@@ -0,0 +1,45 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: main jdk17 windows build (multi-locale)
+
+on:
+ pull_request:
+ branches: [ main ]
+ push:
+ branches: [ main ]
+
+jobs:
+ build:
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ java: [ '17' ]
+ locale: [ 'tr_TR.UTF-8', 'de_DE.UTF-8' ]
+ env:
+ LANG: ${{ matrix.locale }}
+ LC_ALL: ${{ matrix.locale }}
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: ${{ matrix.java }}
+ - name: Build with Maven
+ run: mvn clean test install javadoc:aggregate
diff --git a/.github/workflows/main-jdk17-windows-build.yml
b/.github/workflows/main-jdk17-windows-build.yml
new file mode 100644
index 000000000..070524e55
--- /dev/null
+++ b/.github/workflows/main-jdk17-windows-build.yml
@@ -0,0 +1,44 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: main jdk17 windows build
+
+on:
+ pull_request:
+ branches: [ main ]
+ push:
+ branches: [ main ]
+
+jobs:
+ build:
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ java: [ '17' ]
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ path: 'tika build dir'
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: ${{ matrix.java }}
+ - name: Build with Maven
+ working-directory: 'tika build dir'
+ run: mvn clean test install javadoc:aggregate
diff --git a/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
b/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
index b13ae3803..235579c36 100644
--- a/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
+++ b/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
@@ -77,6 +77,7 @@ public class TikaCLIAsyncTest {
.replace("TIKA_CONFIG",
ASYNC_CONFIG.toAbsolutePath().toString());
;
+ json = json.replace("\\", "/");
Files.writeString(ASYNC_PLUGINS_CONFIG, json, UTF_8);
}
diff --git a/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
b/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
index e54f17f06..5a05e37a5 100644
--- a/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
+++ b/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
@@ -401,11 +401,9 @@ public class TikaCLITest {
Path pluginsDir = Paths.get("target/plugins");
String[] params = {"-Z",
- "-p",
ProcessUtils.escapeCommandLine(pluginsDir.toAbsolutePath().toString()),
-
ProcessUtils.escapeCommandLine(input.toAbsolutePath().toString()),
- ProcessUtils.escapeCommandLine(extractDir
- .toAbsolutePath()
- .toString())};
+ "-p", pluginsDir.toAbsolutePath().toString(),
+ input.toAbsolutePath().toString(),
+ extractDir.toAbsolutePath().toString()};
TikaCLI.main(params);
@@ -429,7 +427,6 @@ public class TikaCLITest {
return FileVisitResult.CONTINUE;
}
- @Override
public @NotNull FileVisitResult visitFile(Path path, @NotNull
BasicFileAttributes basicFileAttributes) throws IOException {
names.add(extractDir.relativize(path).toString().replace('\\',
'/'));
return FileVisitResult.CONTINUE;
diff --git
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
index 9e3d7fe4b..6d23fe365 100644
---
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
+++
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
@@ -187,7 +187,7 @@ public class ExtractComparerRunner {
json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
}
json = json.replace("FETCHER_BASE_PATH",
inputDir.toAbsolutePath().toString());
-
+ json = json.replace("\\", "/");
try {
return FileSystemPipesIterator.build(new ExtensionConfig("", "",
json));
} catch (TikaConfigException e) {
diff --git
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
index def728b9e..b7acb7c68 100644
---
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
+++
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
@@ -181,6 +181,7 @@ public class ExtractProfileRunner {
json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
}
json = json.replace("FETCHER_BASE_PATH",
inputDir.toAbsolutePath().toString());
+ json = json.replace("\\", "/");
try {
return FileSystemPipesIterator.build(new ExtensionConfig("", "",
json));
diff --git
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
index b1ca71e1a..2b9a4b1e1 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
@@ -176,11 +176,6 @@
<version>${zstd.version}</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>tika-serialization</artifactId>
- <scope>test</scope>
- </dependency>
<!-- For legal reasons (incompatible license), jai-imageio-jpeg2000 is to
be used
only in the tests and may not be distributed. See also LEGAL-195 -->
<dependency>
@@ -201,13 +196,6 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>tika-core</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>tika-parser-zip-commons</artifactId>
diff --git
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
index 5aa5a2da9..bc653bbf0 100644
---
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
+++
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
@@ -58,7 +58,7 @@ public class PluginsWriter {
if (Files.isDirectory(plugins)) {
pluginString = plugins.toAbsolutePath().toString();
}
- json = json.replace("PLUGIN_ROOTS", pluginString);
+ json = json.replace("PLUGIN_ROOTS", pluginString).replace("\\",
"/");
AsyncConfig asyncConfig = new AsyncConfig();
asyncConfig.setNumClients(simpleAsyncConfig.getNumClients() ==
null ? 2 : simpleAsyncConfig.getNumClients());
diff --git
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
index f3e21795a..3bc1eecb3 100644
---
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
+++
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
@@ -91,4 +91,21 @@ class SimpleAsyncConfig {
public String getPluginsDir() {
return pluginsDir;
}
+
+ @Override
+ public String toString() {
+ return "SimpleAsyncConfig{" +
+ "inputDir='" + inputDir + '\'' +
+ ", outputDir='" + outputDir + '\'' +
+ ", numClients=" + numClients +
+ ", timeoutMs=" + timeoutMs +
+ ", xmx='" + xmx + '\'' +
+ ", fileList='" + fileList + '\'' +
+ ", tikaConfig='" + tikaConfig + '\'' +
+ ", asyncConfig='" + asyncConfig + '\'' +
+ ", extractBytes=" + extractBytes +
+ ", handlerType=" + handlerType +
+ ", pluginsDir='" + pluginsDir + '\'' +
+ '}';
+ }
}
diff --git
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
index 9e6f25ae9..64b27b463 100644
---
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
+++
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
@@ -99,7 +99,7 @@ public class AsyncProcessorTest extends TikaTest {
.replace("PLUGIN_ROOTS",
pluginsDir.toAbsolutePath().toString())
.replace("TIKA_CONFIG",
tikaConfigPath.toAbsolutePath().toString())
.replace("PLUGINS_CONFIG",
pipesConfig.toAbsolutePath().toString());
-
+ jsonTemp = jsonTemp.replace("\\", "/");
Files.writeString(pipesConfig, jsonTemp, StandardCharsets.UTF_8);
Path mock = inputDir.resolve("mock.xml");
diff --git
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
index 822095289..34e75029e 100644
---
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
+++
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
@@ -36,8 +36,10 @@ public class TikaConfigAsyncWriterTest {
public void testBasic(@TempDir Path dir) throws Exception {
Path p =
Paths.get(TikaConfigAsyncWriter.class.getResource("/configs/TIKA-4508-parsers.xml").toURI());
SimpleAsyncConfig simpleAsyncConfig = new SimpleAsyncConfig("input",
"output", 4,
- 10000L, "-Xmx1g", null, p.toAbsolutePath().toString(), null,
+ 10000L, "-Xmx1g", null,
+ p.toAbsolutePath().toString().replace("\\", "/"), null,
BasicContentHandlerFactory.HANDLER_TYPE.TEXT, false, null);
+ System.out.println(simpleAsyncConfig);
PluginsWriter pluginsWriter = new PluginsWriter(simpleAsyncConfig,
null);
Path tmp = Files.createTempFile(dir, "plugins-",".json");
diff --git
a/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
b/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
index 025e16b2a..804ade3a7 100644
---
a/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
+++
b/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
@@ -68,6 +68,7 @@ public class PluginsTestHelper {
json = json.replace("PLUGINS_CONFIG",
pipesConfig.toAbsolutePath().toString());
}
json = json.replace("EMIT_INTERMEDIATE_RESULTS",
String.valueOf(emitIntermediateResults));
+ json = json.replace("\\", "/");
Files.write(pipesConfig, json.getBytes(StandardCharsets.UTF_8));
return pipesConfig;
}
diff --git
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
index 88f79dda2..6d6b7ae4b 100644
---
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
+++
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
@@ -63,7 +63,8 @@ public class TestFileSystemStatusReporter {
Path path = Files.createTempFile(tmpDir, "tika-fssr-", ".xml");
- String jsonStr = JSON_TEMPLATE.replace("STATUS_FILE",
path.toAbsolutePath().toString());
+ String jsonStr = JSON_TEMPLATE.replace("STATUS_FILE",
path.toAbsolutePath().toString()
+ .replace("\\", "/"));
FileSystemStatusReporter reporter = new
FileSystemReporterFactory().buildExtension(
new ExtensionConfig("test-fs-reporter", "fs-status-reporter",
jsonStr));
final ObjectMapper objectMapper = JsonMapper.builder()
diff --git
a/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
b/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
index da276f6b7..99eb5f60c 100644
---
a/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
+++
b/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
@@ -88,7 +88,8 @@ public class TestJDBCPipesReporter {
int numThreads = 10;
int numIterations = 200;
- String json = JSON_TEMPLATE.replace("CONNECTION_STRING",
connectionString);
+ String json = JSON_TEMPLATE.replace("CONNECTION_STRING",
connectionString)
+ .replace("\\", "/");
JDBCPipesReporter reporter = JDBCPipesReporter.build(new
ExtensionConfig("test-jdbc", "jdbc-reporter", json));
Map<PipesResult.STATUS, Long> expected = runBatch(reporter,
numThreads, numIterations);
@@ -112,7 +113,8 @@ public class TestJDBCPipesReporter {
String connectionString = "jdbc:h2:file:" + dbDir.toAbsolutePath();
- String json = JSON_TEMPLATE_INCLUDES.replace("CONNECTION_STRING",
connectionString);
+ String json = JSON_TEMPLATE_INCLUDES.replace("CONNECTION_STRING",
connectionString)
+ .replace("\\", "/");
JDBCPipesReporter reporter = JDBCPipesReporter.build(new
ExtensionConfig("", "", json));
int numThreads = 10;
int numIterations = 200;
@@ -140,7 +142,8 @@ public class TestJDBCPipesReporter {
Path dbDir = tmpDir.resolve("db/h2");
String connectionString = "jdbc:h2:file:" + dbDir.toAbsolutePath();
- String json = JSON_TEMPLATE_EXCLUDES.replace("CONNECTION_STRING",
connectionString);
+ String json = JSON_TEMPLATE_EXCLUDES.replace("CONNECTION_STRING",
connectionString)
+ .replace("\\", "/");
JDBCPipesReporter reporter = JDBCPipesReporter.build(new
ExtensionConfig("", "", json));
int numThreads = 10;
int numIterations = 200;
diff --git
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
index eacfc6aa1..a4c37fcb2 100644
---
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
+++
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
@@ -114,7 +114,7 @@ public abstract class CXFTestBase {
if (bytesOutputDir != null) {
json = json.replace("BYTES_EMITTER_BASE_PATH",
bytesOutputDir.toAbsolutePath().toString());
}
-
+ json = json.replace("\\", "/");
Files.writeString(configPath, json, StandardCharsets.UTF_8);
}
@@ -236,7 +236,7 @@ public abstract class CXFTestBase {
.toAbsolutePath()
.toString());
-
+ json = json.replace("\\", "/");
return UnsynchronizedByteArrayInputStream
.builder()
.setByteArray(json.getBytes(UTF_8))
diff --git
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
index 4d0c6a083..54bcbb4c3 100644
---
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
+++
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
@@ -87,7 +87,7 @@ public class TikaResourceFetcherTest extends CXFTestBase {
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
- return inputDir.toAbsolutePath().toString();
+ return inputDir.toAbsolutePath().toString().replace("\\", "/");
}
@Override