diff --git a/asterixdb/asterix-spidersilk/src/test/java/org/apache/asterix/spidersilk/TestUtil.java b/asterixdb/asterix-spidersilk/src/test/java/org/apache/asterix/spidersilk/TestUtil.java
index 5d2cc02..03e8191 100644
--- a/asterixdb/asterix-spidersilk/src/test/java/org/apache/asterix/spidersilk/TestUtil.java
+++ b/asterixdb/asterix-spidersilk/src/test/java/org/apache/asterix/spidersilk/TestUtil.java
@@ -18,16 +18,18 @@
  */
 package org.apache.asterix.spidersilk;
 
+import java.io.File;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.apache.asterix.test.common.TestExecutor;
+
 import me.arminb.spidersilk.SpiderSilkRunner;
 import me.arminb.spidersilk.dsl.entities.Deployment;
 import me.arminb.spidersilk.dsl.entities.PortType;
 import me.arminb.spidersilk.dsl.entities.ServiceType;
 import me.arminb.spidersilk.exceptions.RuntimeEngineException;
-import org.apache.asterix.test.common.TestExecutor;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
 
 public class TestUtil {
     private static String mavenVersion;
@@ -54,13 +56,12 @@
     }
 
     public static String getMavenArtifactVersion() {
-        Properties mavenProperties = new Properties();
-        try {
-            mavenProperties.load(new FileInputStream("../asterix-server/target/maven-archiver/pom.properties"));
-            return mavenProperties.getProperty("version");
-        } catch (IOException e) {
-            throw new RuntimeException("Cannot open pom.properties to get the maven version");
-        }
+        Optional<String> version = Stream
+                .of(Objects.requireNonNull(new File("../asterix-server/target")
+                        .list((dir, name) -> name.matches("asterix-server-.*-binary-assembly.zip"))))
+                .map(foo -> foo.replace("asterix-server-", "")).map(foo -> foo.replace("-binary-assembly.zip", ""))
+                .findFirst();
+        return version.orElseThrow(IllegalStateException::new);
     }
 
     public static void waitForClusterToBeUp(SpiderSilkRunner runner) throws RuntimeEngineException {
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 6591678..32508f4 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -94,6 +94,7 @@
             <exclude>**/DEPENDENCIES</exclude>
           </excludes>
           <archive>
+            <addMavenDescriptor>false</addMavenDescriptor>
             <manifest>
               <addDefaultImplementationEntries>false</addDefaultImplementationEntries>
               <addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
@@ -641,6 +642,7 @@
             <artifactId>maven-jar-plugin</artifactId>
             <configuration>
               <archive>
+                <addMavenDescriptor>true</addMavenDescriptor>
                 <manifest>
                   <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                   <addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml
index d3746ee..79c1e2d 100644
--- a/hyracks-fullstack/pom.xml
+++ b/hyracks-fullstack/pom.xml
@@ -235,6 +235,7 @@
             <exclude>**/DEPENDENCIES</exclude>
           </excludes>
           <archive>
+            <addMavenDescriptor>false</addMavenDescriptor>
             <manifest>
               <addDefaultImplementationEntries>false</addDefaultImplementationEntries>
               <addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
@@ -597,6 +598,7 @@
             <artifactId>maven-jar-plugin</artifactId>
             <configuration>
               <archive>
+                <addMavenDescriptor>true</addMavenDescriptor>
                 <manifest>
                   <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                   <addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
