diff --git a/docs/assets/css/asciidoc-pygments.css b/docs/assets/css/asciidoc-pygments.css
index 1175785..6de1084 100644
--- a/docs/assets/css/asciidoc-pygments.css
+++ b/docs/assets/css/asciidoc-pygments.css
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2013-2018 Dan Allen, Paul Rayner, and the Asciidoctor Project
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
 pre.pygments .hll { background-color: #ffffcc }
 pre.pygments, pre.pygments code { background: #ffffff; }
 pre.pygments .tok-c { color: #008000 } /* Comment */
@@ -35,4 +56,4 @@
 pre.pygments .tok-sx { color: #a31515 } /* Literal.String.Other */
 pre.pygments .tok-sr { color: #a31515 } /* Literal.String.Regex */
 pre.pygments .tok-s1 { color: #a31515 } /* Literal.String.Single */
-pre.pygments .tok-ss { color: #a31515 } /* Literal.String.Symbol */
\ No newline at end of file
+pre.pygments .tok-ss { color: #a31515 } /* Literal.String.Symbol */
diff --git a/docs/assets/css/docs.scss b/docs/assets/css/docs.scss
index a5da4a5..2e05a98 100644
--- a/docs/assets/css/docs.scss
+++ b/docs/assets/css/docs.scss
@@ -1,3 +1,19 @@
+/*
+ * 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.
+ */
 ---
 ---
 // Docs-specific global styles
diff --git a/docs/assets/css/styles.scss b/docs/assets/css/styles.scss
index f6e280d..f23e704 100644
--- a/docs/assets/css/styles.scss
+++ b/docs/assets/css/styles.scss
@@ -1,3 +1,19 @@
+/*
+ * 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.
+ */
 ---
 ---
 @import "variables";
diff --git a/docs/assets/js/code-copy-to-clipboard.js b/docs/assets/js/code-copy-to-clipboard.js
index 9769468..3fd42b2 100644
--- a/docs/assets/js/code-copy-to-clipboard.js
+++ b/docs/assets/js/code-copy-to-clipboard.js
@@ -1,3 +1,18 @@
+// 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.
+
 const BUTTON_CLASSNAME = 'copy-to-clipboard-button'
 const BUTTON_CLASSNAME_SUCCESS = 'copy-to-clipboard-button__success'
 
@@ -52,4 +67,4 @@
 	})
 }
 
-window.addEventListener('load', init)
\ No newline at end of file
+window.addEventListener('load', init)
diff --git a/docs/assets/js/code-tabs.js b/docs/assets/js/code-tabs.js
index db8d582..6d8118a 100644
--- a/docs/assets/js/code-tabs.js
+++ b/docs/assets/js/code-tabs.js
@@ -1,3 +1,18 @@
+// 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.
+
 const TAB_BUTTON = document.createRange().createContextualFragment(`
     <button class='code-tabs__tab'></button>
 `)
@@ -137,4 +152,4 @@
     const instance = new CodeTabs(el)
     instance.connectedCallback()
 }
-setupSameLanguageSync(getAllCodeTabs())
\ No newline at end of file
+setupSameLanguageSync(getAllCodeTabs())
diff --git a/docs/assets/js/docs-menu.js b/docs/assets/js/docs-menu.js
index 73d11c4..8e598da 100644
--- a/docs/assets/js/docs-menu.js
+++ b/docs/assets/js/docs-menu.js
@@ -1,3 +1,18 @@
+// 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.
+
 const button = document.querySelector('button.menu')
 const overlay = document.querySelector('.left-nav__overlay')
 
diff --git a/docs/assets/js/index.js b/docs/assets/js/index.js
index 223389e..0fa36f7 100644
--- a/docs/assets/js/index.js
+++ b/docs/assets/js/index.js
@@ -1,3 +1,18 @@
+// 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.
+
 import './code-tabs.js?1'
 import {hideLeftNav} from './docs-menu.js'
 //import {hideTopNav} from './top-navigation.js'
diff --git a/docs/assets/js/page-nav.js b/docs/assets/js/page-nav.js
index 2be49d4..8f48464 100644
--- a/docs/assets/js/page-nav.js
+++ b/docs/assets/js/page-nav.js
@@ -1,3 +1,18 @@
+// 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.
+
 const rightNav = document.querySelector('.right-nav .sectlevel1')
 
 if (IntersectionObserver && rightNav) {
@@ -19,4 +34,4 @@
         });
         observer.observe(target)
     })
-}
\ No newline at end of file
+}
diff --git a/docs/assets/js/top-navigation.js b/docs/assets/js/top-navigation.js
index 4a2c948..291ae92 100644
--- a/docs/assets/js/top-navigation.js
+++ b/docs/assets/js/top-navigation.js
@@ -1,3 +1,18 @@
+// 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.
+
 const query = window.matchMedia('(max-width: 450px)')
 const header = document.querySelector('header')
 const search = document.querySelector('header .search input')
diff --git a/parent/pom.xml b/parent/pom.xml
index 037fbc4..63e790b 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -803,7 +803,7 @@
                         <artifactId>apache-rat-plugin</artifactId>
                         <version>0.12</version>
                         <configuration>
-                            <addDefaultLicenseMatchers>false</addDefaultLicenseMatchers>
+                            <addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
                             <licenses>
                                 <license implementation="org.apache.rat.analysis.license.FullTextMatchingLicense">
                                     <licenseFamilyCategory>IAL20</licenseFamilyCategory>
@@ -993,6 +993,7 @@
                                         <exclude>docs/.jekyll-cache/**</exclude>
                                         <exclude>docs/_docs/images/**</exclude>
                                         <exclude>docs/Gemfile</exclude>
+                                        <exclude>docs/assets/js/anchor.min.js</exclude><!-- Distributed under the MIT license. The original license header is badly formatted. -->
                                     </excludes>
                                 </configuration>
                             </execution>
