diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 69a75a8b..209bb31e 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,3 +5,7 @@ updates:
open-pull-requests-limit: 10
schedule:
interval: "monthly"
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "monthly"
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index bb63cd56..64b395c2 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -19,15 +19,15 @@ jobs:
timeout-minutes: 30
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Set up JDK ${{ matrix.jdk }}
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
java-version: ${{ matrix.jdk }}
distribution: 'temurin'
cache: maven
- name: Cache local Maven repository
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
diff --git a/CHANGES.md b/CHANGES.md
index 0db08eb5..18fb8290 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,30 @@
Unreleased
----------
+3.0.4 (2026-06-02)
+------------------
+
+### Fixes
+
+* WAT extractor not to fail on metadata records without WARC-Target-URI [#150](https://github.com/iipc/webarchive-commons/pull/150)
+
+### Dependency upgrades
+
+* **commons-codec**: 1.21.0 → 1.22.0
+* **commons-io**: 2.21.0 → 2.22.0
+* **guava**: 33.5.0-jre → 33.6.0-jre
+* **hadoop** (hadoop-common, hadoop-mapreduce-client-core): 3.4.2 → 3.4.3
+
+3.0.3 (2025-02-06)
+------------------
+
+### Dependency upgrades
+
+* **commons-codec**: 1.20.0 → 1.21.0
+* **commons-lang3**: 3.19.0 → 3.20.0
+* **json**: 20250517 → 20251224
+* **junit-jupiter**: 5.14.1 → 5.14.2
+
3.0.2 (2025-11-14)
------------------
diff --git a/pom.xml b/pom.xml
index 0874e9b7..4c019aae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
org.netpreserve.commons
webarchive-commons
- 3.0.3-SNAPSHOT
+ 3.0.5-SNAPSHOT
jar
webarchive-commons
@@ -41,7 +41,7 @@
scm:git:git@github.com:iipc/webarchive-commons.git
scm:git:git@github.com:iipc/webarchive-commons.git
https://github.com/iipc/webarchive-commons
- webarchive-commons-2.0.0
+ webarchive-commons-3.0.4
@@ -55,20 +55,20 @@
org.junit.jupiter
junit-jupiter
- 5.14.2
+ 5.14.4
test
com.google.guava
guava
- 33.5.0-jre
+ 33.6.0-jre
org.json
json
- 20251224
+ 20260522
org.htmlparser
@@ -85,7 +85,7 @@
commons-codec
commons-codec
- 1.21.0
+ 1.22.0
@@ -97,7 +97,7 @@
org.apache.hadoop
hadoop-common
- 3.4.2
+ 3.4.3
true
@@ -110,7 +110,7 @@
org.apache.hadoop
hadoop-mapreduce-client-core
- 3.4.2
+ 3.4.3
true
@@ -142,7 +142,7 @@
commons-io
commons-io
- 2.21.0
+ 2.22.0
@@ -163,7 +163,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.14.1
+ 3.15.0
${java.version}
${java.version}
@@ -172,7 +172,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.4
+ 3.5.6
de.thetaphi
@@ -224,6 +224,7 @@
true
central
+ true
diff --git a/src/main/java/org/archive/extract/WATExtractorOutput.java b/src/main/java/org/archive/extract/WATExtractorOutput.java
index 621656b7..f695796f 100644
--- a/src/main/java/org/archive/extract/WATExtractorOutput.java
+++ b/src/main/java/org/archive/extract/WATExtractorOutput.java
@@ -152,6 +152,9 @@ private void writeWARC(OutputStream recOut, MetaData md) throws IOException {
String targetURI;
if(warcType.equals("warcinfo")) {
targetURI = JSONUtils.extractSingle(md, "Envelope.WARC-Header-Metadata.WARC-Filename");
+ } else if (warcType.equals("metadata")) {
+ // WARC-Target-URI is optional in metadata records
+ targetURI = JSONUtils.extractSingle(md, "Envelope.Metadata-Header-Metadata.WARC-Target-URI");
} else {
targetURI = extractOrIO(md, "Envelope.WARC-Header-Metadata.WARC-Target-URI");
}