diff --git a/asterixdb-jdbc/NOTICE b/asterixdb-jdbc/NOTICE
index 0f871c8..3b894c9 100644
--- a/asterixdb-jdbc/NOTICE
+++ b/asterixdb-jdbc/NOTICE
@@ -1,5 +1,5 @@
 Apache AsterixDB JDBC Driver
-Copyright 2021 The Apache Software Foundation
+Copyright 2021-2022 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/asterixdb-jdbc/asterix-jdbc-core/pom.xml b/asterixdb-jdbc/asterix-jdbc-core/pom.xml
index 59f4b11..1fc08fe 100644
--- a/asterixdb-jdbc/asterix-jdbc-core/pom.xml
+++ b/asterixdb-jdbc/asterix-jdbc-core/pom.xml
@@ -38,6 +38,7 @@
 
   <properties>
     <root.dir>${basedir}/..</root.dir>
+    <implementation.title>Apache AsterixDB JDBC Driver</implementation.title>
   </properties>
 
   <dependencies>
@@ -54,4 +55,32 @@
       <artifactId>jackson-annotations</artifactId>
     </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <!-- Copy LICENSE/NOTICE -->
+            <id>copy-license</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target>
+                <copy todir="${project.build.directory}/classes/META-INF" overwrite="true">
+                  <fileset dir="${root.dir}">
+                    <include name="LICENSE"/>
+                    <include name="NOTICE"/>
+                  </fileset>
+                </copy>
+              </target>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/asterixdb-jdbc/asterix-jdbc-driver/pom.xml b/asterixdb-jdbc/asterix-jdbc-driver/pom.xml
index 75c288a..8c03da0 100644
--- a/asterixdb-jdbc/asterix-jdbc-driver/pom.xml
+++ b/asterixdb-jdbc/asterix-jdbc-driver/pom.xml
@@ -40,6 +40,9 @@
     <root.dir>${basedir}/..</root.dir>
     <source.java.package.path>org/apache/asterix/jdbc/</source.java.package.path>
     <implementation.title>Apache AsterixDB JDBC Driver</implementation.title>
+    <build.dist.classifier>dist</build.dist.classifier>
+    <build.license.directory>${project.build.directory}/license</build.license.directory>
+    <build.license.resources.directory>${build.license.directory}/resources</build.license.resources.directory>
   </properties>
 
   <dependencies>
@@ -69,6 +72,70 @@
   <build>
     <plugins>
       <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <!-- Copy license for jar -->
+            <id>copy-license</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target>
+                <copy todir="${project.build.directory}/classes/META-INF" overwrite="true">
+                  <fileset dir="${root.dir}">
+                    <include name="LICENSE"/>
+                    <include name="NOTICE"/>
+                  </fileset>
+                </copy>
+              </target>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <!-- Generate license for dist jar -->
+        <groupId>org.apache.hyracks</groupId>
+        <artifactId>license-automation-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <outputDir>${build.license.resources.directory}/META-INF</outputDir>
+          <templateRootDir>${root.dir}</templateRootDir>
+          <generatedFiles>
+            <generatedFile>
+              <template>src/main/licenses/templates/asterix-jdbc-driver-license.ftl</template>
+              <outputFile>LICENSE</outputFile>
+            </generatedFile>
+            <generatedFile>
+              <template>src/main/licenses/templates/asterix-jdbc-driver-notice.ftl</template>
+              <outputFile>NOTICE</outputFile>
+            </generatedFile>
+          </generatedFiles>
+          <licenseDirectory>${root.dir}/src/main/licenses/content</licenseDirectory>
+          <licenseMapOutputFile>${build.license.directory}/license_map.json</licenseMapOutputFile>
+          <location>${project.artifactId}-${project.version}-${build.dist.classifier}.jar/</location>
+          <timeoutSecs>10</timeoutSecs>
+          <downloadDir>${build.license.directory}/download</downloadDir>
+          <excludedScopes>
+            <excludedScope>test</excludedScope>
+          </excludedScopes>
+          <excludes>
+            <exclude>org.apache.asterix:*</exclude>
+          </excludes>
+          <templateProperties>
+            <packageName>${implementation.title}</packageName>
+          </templateProperties>
+        </configuration>
+      </plugin>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
@@ -96,14 +163,17 @@
             </goals>
             <configuration>
               <shadedArtifactAttached>true</shadedArtifactAttached>
-              <shadedClassifierName>dist</shadedClassifierName>
+              <shadedClassifierName>${build.dist.classifier}</shadedClassifierName>
               <transformers>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"/>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
-                  <addHeader>false</addHeader>
-                </transformer>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.PluginXmlResourceTransformer"/>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
+                  <resource>META-INF/LICENSE</resource>
+                  <file>${build.license.resources.directory}/META-INF/LICENSE</file>
+                </transformer>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
+                  <resource>META-INF/NOTICE</resource>
+                  <file>${build.license.resources.directory}/META-INF/NOTICE</file>
+                </transformer>
               </transformers>
               <relocations>
                 <relocation>
@@ -113,8 +183,17 @@
               </relocations>
               <filters>
                 <filter>
+                  <artifact>org.apache.asterix:asterix-jdbc-driver</artifact>
+                  <excludes>
+                    <exclude>META-INF/NOTICE</exclude>
+                    <exclude>META-INF/LICENSE</exclude>
+                  </excludes>
+                </filter>
+                <filter>
                   <artifact>org.apache.asterix:asterix-jdbc-core</artifact>
                   <excludes>
+                    <exclude>META-INF/NOTICE</exclude>
+                    <exclude>META-INF/LICENSE</exclude>
                     <exclude>META-INF/MANIFEST.MF</exclude>
                   </excludes>
                 </filter>
@@ -134,8 +213,8 @@
                   <excludes>
                     <exclude>module-info.class</exclude>
                     <exclude>META-INF/maven/commons-logging/*/pom.*</exclude>
-                    <exclude>META-INF/NOTICE</exclude>
-                    <exclude>META-INF/LICENSE</exclude>
+                    <exclude>META-INF/NOTICE.*</exclude>
+                    <exclude>META-INF/LICENSE.*</exclude>
                     <exclude>META-INF/MANIFEST.MF</exclude>
                   </excludes>
                 </filter>
@@ -144,8 +223,8 @@
                   <excludes>
                     <exclude>module-info.class</exclude>
                     <exclude>META-INF/maven/commons-codec/*/pom.*</exclude>
-                    <exclude>META-INF/NOTICE</exclude>
-                    <exclude>META-INF/LICENSE</exclude>
+                    <exclude>META-INF/NOTICE.*</exclude>
+                    <exclude>META-INF/LICENSE.*</exclude>
                     <exclude>META-INF/MANIFEST.MF</exclude>
                   </excludes>
                 </filter>
diff --git a/asterixdb-jdbc/asterix-jdbc-taco/pom.xml b/asterixdb-jdbc/asterix-jdbc-taco/pom.xml
index 0c5af72..71eef77 100644
--- a/asterixdb-jdbc/asterix-jdbc-taco/pom.xml
+++ b/asterixdb-jdbc/asterix-jdbc-taco/pom.xml
@@ -68,7 +68,8 @@
     <build.taco.gensrc.plugin.class.directory>${build.taco.gensrc.directory}/plugins/${taco.plugin.class}</build.taco.gensrc.plugin.class.directory>
     <build.taco.sdk.directory>${build.taco.directory}/connector-plugin-sdk</build.taco.sdk.directory>
     <build.taco.log.directory>${build.taco.directory}</build.taco.log.directory>
-    <build.taco.package.file>${project.build.directory}/${taco.plugin.class}.taco</build.taco.package.file>
+    <build.taco.filename>${taco.plugin.class}.taco</build.taco.filename>
+    <build.taco.file>${project.build.directory}/${build.taco.filename}</build.taco.file>
     <build.venv.directory>${project.build.directory}/venv</build.venv.directory>
     <build.venv.python.path>${build.venv.directory}/bin/python</build.venv.python.path>
   </properties>
@@ -228,7 +229,7 @@
               <goal>shade</goal>
             </goals>
             <configuration>
-              <outputFile>${build.taco.package.file}</outputFile>
+              <outputFile>${build.taco.file}</outputFile>
               <artifactSet>
                 <includes>
                   <include>org.apache.asterix:asterix-jdbc-taco</include>
@@ -238,6 +239,43 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+      <artifactId>maven-antrun-plugin</artifactId>
+      <executions>
+        <execution>
+          <!-- Print warning if .taco was not packaged by TACO SDK   -->
+          <id>taco-package-nosdk-warn</id>
+          <phase>${build.taco.package.nosdk.stage}</phase>
+          <goals>
+            <goal>run</goal>
+          </goals>
+          <configuration>
+            <target>
+              <echo level="warning">WARNING: Tableau Connector SDK was not used for ${build.taco.filename} packaging because 'taco.sdk.path' property is not set</echo>
+            </target>
+          </configuration>
+        </execution>
+        <execution>
+          <!-- Add license to .taco file -->
+          <id>taco-package-add-license</id>
+          <phase>package</phase>
+          <goals>
+            <goal>run</goal>
+          </goals>
+          <configuration>
+            <target>
+              <echo>Adding license to ${build.taco.filename}</echo>
+              <jar file="${build.taco.file}" update="true">
+                <fileset dir="${project.build.directory}/classes">
+                  <include name="META-INF/LICENSE"/>
+                  <include name="META-INF/NOTICE"/>
+                </fileset>
+              </jar>
+            </target>
+          </configuration>
+        </execution>
+      </executions>
+      </plugin>
     </plugins>
   </build>
 
@@ -292,7 +330,7 @@
                   <rules>
                     <requireFilesExist>
                       <files>
-                        <file>${build.taco.package.file}</file>
+                        <file>${build.taco.file}</file>
                       </files>
                     </requireFilesExist>
                   </rules>
diff --git a/asterixdb-jdbc/pom.xml b/asterixdb-jdbc/pom.xml
index bb0414f..9e318bb 100644
--- a/asterixdb-jdbc/pom.xml
+++ b/asterixdb-jdbc/pom.xml
@@ -67,6 +67,7 @@
     <implementation.version>${project.version}</implementation.version>
     <implementation.vendor>${project.organization.name}</implementation.vendor>
 
+    <hyracks.version>0.3.7.1</hyracks.version>
     <commons-lang3.version>3.12.0</commons-lang3.version>
     <commons-collections4.version>4.4</commons-collections4.version>
     <httpcore.version>4.4.14</httpcore.version>
@@ -420,6 +421,14 @@
           <artifactId>maven-shade-plugin</artifactId>
           <version>3.2.4</version>
         </plugin>
+        <plugin>
+          <groupId>org.apache.hyracks</groupId>
+          <artifactId>license-automation-plugin</artifactId>
+          <version>${hyracks.version}</version>
+          <configuration>
+            <argLine>-Xmx2048m</argLine>
+          </configuration>
+        </plugin>
       </plugins>
     </pluginManagement>
   </build>
diff --git a/asterixdb-jdbc/src/main/licenses/content/www.apache.org_licenses_LICENSE-2.0.txt b/asterixdb-jdbc/src/main/licenses/content/www.apache.org_licenses_LICENSE-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/asterixdb-jdbc/src/main/licenses/content/www.apache.org_licenses_LICENSE-2.0.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
diff --git a/asterixdb-jdbc/src/main/licenses/templates/asterix-jdbc-driver-license.ftl b/asterixdb-jdbc/src/main/licenses/templates/asterix-jdbc-driver-license.ftl
new file mode 100644
index 0000000..abc19f6
--- /dev/null
+++ b/asterixdb-jdbc/src/main/licenses/templates/asterix-jdbc-driver-license.ftl
@@ -0,0 +1,62 @@
+<#--
+ ! 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.
+-->
+<@indent spaces=3>
+<#list licenses as license>
+  <#if license.url == "http://www.apache.org/licenses/LICENSE-2.0.txt">
+${license.content}
+    <#break>
+  </#if>
+</#list>
+</@indent>
+===
+   ASTERIXDB JDBC DRIVER COMPONENTS:
+
+   AsterixDB JDBC Driver includes a number of subcomponents with separate copyright
+   notices and license terms. Your use of these subcomponents is subject
+   to the terms and condition of the following licenses.
+===
+<#list licenseMap as e>
+   <#assign licenseUrl = e.getKey()/>
+   <#assign entry = e.getValue()/>
+   <#assign projects = entry.projects/>
+   <#assign license = entry.getLicense()/>
+   <#if projects?size == 1>
+   Component:
+     <#assign isare = "is"/>
+   <#else>
+   Components:
+     <#assign isare = "are"/>
+   </#if>
+   <#list projects as p>
+   * ${p.name} (${p.groupId}:${p.artifactId}:${p.version})
+   </#list>
+
+   <#if license.url == "PUBLIC_DOMAIN">
+   ${isare} in the public domain.
+   <#elseif license.url == "http://www.apache.org/licenses/LICENSE-2.0.txt">
+   ${isare} available under ${license.displayName}.
+   <#else>
+   ${isare} available under ${license.displayName!"the following license"}:
+---
+<@indent spaces=6>
+${license.content}
+</@indent>
+   </#if>
+---
+</#list>
diff --git a/asterixdb-jdbc/src/main/licenses/templates/asterix-jdbc-driver-notice.ftl b/asterixdb-jdbc/src/main/licenses/templates/asterix-jdbc-driver-notice.ftl
new file mode 100644
index 0000000..8308379
--- /dev/null
+++ b/asterixdb-jdbc/src/main/licenses/templates/asterix-jdbc-driver-notice.ftl
@@ -0,0 +1,47 @@
+<#--
+ ! 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.
+-->
+<#-- TODO(mblow): share notice file template with hyracks via maven artifact -->
+<#if packageName?has_content>
+${packageName!}
+<#else>
+Apache AsterixDB JDBC Driver
+</#if>
+Copyright 2021-${.now?string('yyyy')} The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+The Initial Developer of the driver software is Couchbase, Inc.
+Copyright 2021 Couchbase, Inc.
+<#list noticeMap>
+
+AsterixDB JDBC Driver utilizes several libraries, which come with the following applicable NOTICE(s):
+<#items as e>
+   <#assign noticeText = e.getKey()/>
+   <#assign projects = e.getValue()/>
+
+   <#list projects as p>
+   * ${p.name} (${p.groupId}:${p.artifactId}:${p.version})
+   </#list>
+
+<@indent spaces=6>
+${noticeText}
+</@indent>
+</#items>
+</#list>
