diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml
index 0f4d67afb97adc4a113184d3a9bd24aadfd598a2..08ee2137981f73670a7ccf3a1ac3cc2fc2c3d0a0 100644
--- a/apps/jetty/build.xml
+++ b/apps/jetty/build.xml
@@ -597,12 +597,34 @@
     <target name="servletJavadocJar" depends="servletJavadoc">
         <jar jarfile="./build/servlet-i2p-${release.number}-javadoc.jar">
             <fileset dir="./build/servlet-i2p-javadoc" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Servlet classes" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Servlet classes" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
     <target name="servletSourcesJar">
         <jar jarfile="./build/servlet-i2p-${release.number}-sources.jar">
             <fileset dir="./java/src" includes="net/i2p/servlet/filters/**" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Servlet classes" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Servlet classes" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
diff --git a/apps/ministreaming/java/build.xml b/apps/ministreaming/java/build.xml
index b418bd6345f4add57af5d17df16e700ab3d524e3..147133f14018791a944790b5d9136c3c96843101 100644
--- a/apps/ministreaming/java/build.xml
+++ b/apps/ministreaming/java/build.xml
@@ -187,11 +187,33 @@
     <target name="javadocJar" depends="javadoc">
         <jar jarfile="./build/mstreaming-${release.number}-javadoc.jar">
             <fileset dir="./build/javadoc" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Streaming API" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Streaming API" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
     <target name="sourcesJar">
         <jar jarfile="./build/mstreaming-${release.number}-sources.jar">
             <fileset dir="./src" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Streaming API" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Streaming API" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
diff --git a/apps/streaming/java/build.xml b/apps/streaming/java/build.xml
index e639ffb01fed6a5cedd1abcb7bc7700041716be6..69bd73946d720d7654c8cbea2b07d68c3fa0f915 100644
--- a/apps/streaming/java/build.xml
+++ b/apps/streaming/java/build.xml
@@ -277,12 +277,34 @@
     <target name="javadocJar" depends="javadoc">
         <jar jarfile="./build/streaming-${release.number}-javadoc.jar">
             <fileset dir="./build/javadoc" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Streaming Implementation" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Streaming Implementation" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
     <target name="sourcesJar">
         <jar jarfile="./build/streaming-${release.number}-sources.jar">
             <fileset dir="./src" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Streaming Implementation" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Streaming Implementation" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
diff --git a/build.xml b/build.xml
index 31f9bb3e16247675e6cb5414ff00185b468b39b5..63b38efc4fc6c4616a1fad0fb48a9557f77b2e6a 100644
--- a/build.xml
+++ b/build.xml
@@ -1980,7 +1980,7 @@
     <!-- end custom installers -->
 
     <!-- unit tests -->
-    <target name="buildCoreTest">
+    <target name="buildCoreTest" depends="buildProperties">
         <ant dir="core/java/" target="jarTest" />
     </target>
     <target name="buildRouterTest" depends="buildCoreTest">
diff --git a/core/java/build.xml b/core/java/build.xml
index c2f5de0072dc44961e1c83915e4399eef922cc3c..ebf5ea7a547f8322fa7377fab112be67b8b8dc85 100644
--- a/core/java/build.xml
+++ b/core/java/build.xml
@@ -219,11 +219,34 @@
     <target name="javadocJar" depends="javadoc">
         <jar jarfile="./build/i2p-${release.number}-javadoc.jar">
             <fileset dir="./build/javadoc" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Core API" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Core API" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
+
     <target name="sourcesJar">
         <jar jarfile="./build/i2p-${release.number}-sources.jar">
             <fileset dir="./src" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Core API" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Core API" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
@@ -299,8 +322,25 @@
             </fileset>
             <mapper type="glob" from="obj_scala/*" to="*" />
         </copy>
-        <jar destfile="./build/i2pscalatest.jar" basedir="./build/obj_scala_jar" includes="**/*.class" />
+        <jar destfile="./build/i2pscalatest.jar" basedir="./build/obj_scala_jar" includes="**/*.class">
+            <manifest>
+                <attribute name="${manifest.classpath.name}" value="${gettext.jar} ${getopt.jar} ${httpclient.jar}" />
+                <attribute name="Specification-Title" value="I2P Core API" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Core API" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+                <attribute name="Main-Class" value="net.i2p.util.CommandLine" />
+                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
+                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
+            </manifest>
+        </jar>
     </target>
+
     <target name="jarTest" depends="junit.compileTest">
         <!-- warning - The junit.test target below doesn't actually include i2ptest.jar in the classpath,
              only the build/obj directory.
@@ -309,6 +349,21 @@
             <fileset dir="./build/obj" includes="**/*.class **/test.data **/baseDblPrecmp **/basePrecmp" />
             <!-- the getopt translation files -->
             <fileset dir="src" includes="${translation.includes}" />
+            <manifest>
+                <attribute name="${manifest.classpath.name}" value="${gettext.jar} ${getopt.jar} ${httpclient.jar}" />
+                <attribute name="Specification-Title" value="I2P Core API" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Core API" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+                <attribute name="Main-Class" value="net.i2p.util.CommandLine" />
+                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
+                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
+            </manifest>
         </jar>
     </target>
     <!-- preparation of code coverage tool of choice -->
@@ -510,7 +565,6 @@
                 <attribute name="Build-Date" value="${build.timestamp}" />
                 <attribute name="Base-Revision" value="${workspace.version}" />
                 <attribute name="Main-Class" value="org.openjdk.jmh.Main" />
-                <attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
                 <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
                 <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
             </manifest>
diff --git a/router/java/build.xml b/router/java/build.xml
index 156d63a7635e1dddb6722ba5e6319d9a842712c3..a0e29e7a449a04ac7a002a9b5c964ce8e8bec660 100644
--- a/router/java/build.xml
+++ b/router/java/build.xml
@@ -180,11 +180,34 @@
     <target name="javadocJar" depends="javadoc">
         <jar jarfile="./build/router-${release.number}-javadoc.jar">
             <fileset dir="./build/javadoc" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Router" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Router" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
+
     <target name="sourcesJar">
         <jar jarfile="./build/router-${release.number}-sources.jar">
             <fileset dir="./src" />
+            <manifest>
+                <attribute name="Specification-Title" value="I2P Router" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Router" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
         </jar>
     </target>
 
@@ -249,6 +272,7 @@
             <compilerarg line="${javac.compilerargs}" />
         </javac>
     </target>
+
     <!-- jars with tests -->
     <target name="jarScalaTest" depends="scalatest.compileTest">
         <mkdir dir="./build/obj_scala_jar" />
@@ -264,11 +288,45 @@
             </fileset>
             <mapper type="glob" from="obj_scala/*" to="*" />
         </copy>
-        <jar destfile="./build/routerscalatest.jar" basedir="./build/obj_scala_jar" includes="**/*.class" />
+        <jar destfile="./build/routerscalatest.jar" basedir="./build/obj_scala_jar" includes="**/*.class">
+            <manifest>
+                <attribute name="${manifest.classpath.name}" value="i2p.jar" />
+                <attribute name="Specification-Title" value="I2P Router" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Router" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+                <attribute name="Main-Class" value="net.i2p.router.CommandLine" />
+                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
+                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
+            </manifest>
+        </jar>
     </target>
+
     <target name="jarTest" depends="junit.compileTest">
-        <jar destfile="./build/routertest.jar" basedir="./build/obj" includes="**/*.class" />
+        <jar destfile="./build/routertest.jar" basedir="./build/obj" includes="**/*.class">
+            <manifest>
+                <attribute name="${manifest.classpath.name}" value="i2p.jar" />
+                <attribute name="Specification-Title" value="I2P Router" />
+                <attribute name="Specification-Version" value="${release.number}" />
+                <attribute name="Specification-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Implementation-Title" value="I2P Java Router" />
+                <attribute name="Implementation-Version" value="${full.version}" />
+                <attribute name="Implementation-Vendor" value="The I2P Project https://geti2p.net/" />
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+                <attribute name="Main-Class" value="net.i2p.router.CommandLine" />
+                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
+                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
+            </manifest>
+        </jar>
     </target>
+
     <!-- preparation of code coverage tool of choice -->
     <target name="prepareClover" depends="compile" if="with.clover">
         <taskdef resource="clovertasks"/>