asterixdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mb...@apache.org
Subject [5/5] asterixdb git commit: AsterixDB & Hyracks Source Assemblies, Licensing
Date Sun, 15 Jan 2017 01:33:37 GMT
AsterixDB & Hyracks Source Assemblies, Licensing

- ASTERIXDB-1319: AsterixDB source release LICENSE issues
- Generate Asterix & Hyracks source assemblies as part of the build
- Generate LICENSE & NOTICE file for above assemblies into source tree.
- Move license automation plugin to Hyracks

Change-Id: I8bd8694ad85f25f9b61182ec18fdc39f74480685
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1439
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <imaxon@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/43b40b68
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/43b40b68
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/43b40b68

Branch: refs/heads/master
Commit: 43b40b68a8ac8af90586802d6f9bf49d7b4be050
Parents: 5226ca8
Author: Michael Blow <mblow@apache.org>
Authored: Sat Jan 14 17:03:12 2017 -0500
Committer: Michael Blow <mblow@apache.org>
Committed: Sat Jan 14 17:32:57 2017 -0800

----------------------------------------------------------------------
 asterixdb/LICENSE                               | 429 ++++++-----
 asterixdb/NOTICE                                |   2 +-
 .../tweetbook-demo/static/js/rainbowvis.js      |  35 +-
 asterixdb/asterix-installer/pom.xml             |   9 +-
 asterixdb/asterix-license/pom.xml               | 122 ++++
 .../license-automation-plugin/pom.xml           |  91 ---
 .../apache/asterix/license/DependencySet.java   |  45 --
 .../asterix/license/DownloadLicensesMojo.java   |  89 ---
 .../asterix/license/ExtraLicenseFile.java       |  51 --
 .../asterix/license/GenerateFileMojo.java       | 339 ---------
 .../apache/asterix/license/GeneratedFile.java   |  36 -
 .../org/apache/asterix/license/LicenseMojo.java | 321 ---------
 .../org/apache/asterix/license/LicenseSpec.java | 115 ---
 .../org/apache/asterix/license/LicenseUtil.java | 123 ----
 .../org/apache/asterix/license/Override.java    |  43 --
 .../license/SupplementalModelHelper.java        | 134 ----
 .../license/freemarker/IndentDirective.java     | 115 ---
 .../license/freemarker/LoadFileDirective.java   | 115 ---
 .../license/project/LicensedProjects.java       |  57 --
 .../apache/asterix/license/project/Project.java | 159 -----
 asterixdb/asterix-maven-plugins/pom.xml         |   1 -
 asterixdb/asterix-server/pom.xml                |   9 +-
 asterixdb/asterix-yarn/pom.xml                  |   9 +-
 asterixdb/pom.xml                               |   4 +-
 .../main/licenses/templates/asterix-license.ftl |  12 +-
 .../main/licenses/templates/asterix-notice.ftl  |  40 --
 .../templates/asterix-source-license.ftl        |  33 +
 .../main/licenses/templates/source_licenses.ftl | 252 +++++--
 .../licenses/templates/source_only_licenses.ftl |  80 +++
 hyracks-fullstack/LICENSE                       | 708 ++++++++++---------
 hyracks-fullstack/NOTICE                        |   2 +-
 .../algebricks/algebricks-compiler/pom.xml      |   1 -
 .../algebricks/algebricks-core/pom.xml          |   1 -
 .../algebricks-examples/piglet-example/pom.xml  |   1 -
 .../algebricks/algebricks-rewriter/pom.xml      |   1 -
 .../hyracks-fullstack-license/pom.xml           | 119 ++++
 .../www.apache.org_licenses_LICENSE-2.0.txt     | 202 ++++++
 .../main/licenses/templates/asterix-notice.ftl  |  46 ++
 .../templates/hyracks-source-license.ftl        |  33 +
 .../main/licenses/templates/source_licenses.ftl | 186 +++++
 .../licenses/templates/source_only_licenses.ftl | 392 ++++++++++
 hyracks-fullstack/hyracks/hyracks-api/pom.xml   |   1 -
 .../hyracks-control/hyracks-control-cc/pom.xml  |   1 -
 .../hyracks-control/hyracks-control-nc/pom.xml  |   1 -
 .../hyracks-control/hyracks-nc-service/pom.xml  |   3 +-
 .../hyracks-data/hyracks-data-std/pom.xml       |   1 -
 .../hyracks/hyracks-dataflow-std/pom.xml        |   5 -
 .../license-automation-plugin/pom.xml           |  90 +++
 .../hyracks/maven/license/DependencySet.java    |  45 ++
 .../maven/license/DownloadLicensesMojo.java     |  89 +++
 .../hyracks/maven/license/ExtraLicenseFile.java |  51 ++
 .../hyracks/maven/license/GenerateFileMojo.java | 344 +++++++++
 .../hyracks/maven/license/GeneratedFile.java    |  36 +
 .../hyracks/maven/license/LicenseMojo.java      | 322 +++++++++
 .../hyracks/maven/license/LicenseSpec.java      | 115 +++
 .../hyracks/maven/license/LicenseUtil.java      | 141 ++++
 .../apache/hyracks/maven/license/Override.java  |  43 ++
 .../maven/license/SupplementalModelHelper.java  | 134 ++++
 .../license/freemarker/IndentDirective.java     | 151 ++++
 .../license/freemarker/LoadFileDirective.java   | 115 +++
 .../maven/license/project/LicensedProjects.java |  57 ++
 .../hyracks/maven/license/project/Project.java  | 159 +++++
 .../hyracks/hyracks-maven-plugins/pom.xml       |   3 +-
 .../hyracks/hyracks-server/pom.xml              |   1 -
 hyracks-fullstack/pom.xml                       |   7 +-
 .../main/licenses/templates/source_licenses.ftl | 197 ------
 66 files changed, 3920 insertions(+), 2754 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/LICENSE
----------------------------------------------------------------------
diff --git a/asterixdb/LICENSE b/asterixdb/LICENSE
index 427fa0a..62d1c3e 100644
--- a/asterixdb/LICENSE
+++ b/asterixdb/LICENSE
@@ -1,4 +1,3 @@
-
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -200,20 +199,20 @@
    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.
-
-
-ASTERIXDB COMPONENTS:
-
-AsterixDB includes a number of subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is subject to the terms and condition of the following
-licenses.
-
-For portions of the AsterixDB WebUI at:
-asterix-app/src/main/resources/webui/static/js/jquery.min.js
-and
-asterix-app/src/main/resources/webui/static/js/jquery.autosize-min.js
-
+===
+   AsterixDB includes source code with separate copyright notices and
+   license terms. Your use of this source code is subject to the terms
+   and condition of the following licenses.
+===
+   Portions of the AsterixDB WebUI
+       located at:
+         asterix-app/src/main/resources/webui/static/js/jquery.min.js,
+         asterix-app/src/main/resources/webui/static/js/jquery.autosize-min.js,
+       and
+         asterix-app/src/main/resources/queryui/js/jquery-1.12.4.min.js
+
+   are available under an MIT-style license:
+---
    Copyright jQuery Foundation and other contributors, https://jquery.org/
 
    This software consists of voluntary contributions made by many
@@ -250,13 +249,28 @@ asterix-app/src/main/resources/webui/static/js/jquery.autosize-min.js
    externally maintained libraries used by this software which have their
    own licenses; we recommend you read them, as their terms may differ from
    the terms above.
-
-as well as portions of the WebUI at:
-asterix-app/src/main/resources/webui/static/js/bootstrap.min.js
-
-   The MIT License (MIT)
-
-   Copyright (c) 2011-2015 Twitter, Inc
+---
+   Portions of the AsterixDB WebUI
+       located at:
+         asterix-app/src/main/resources/webui/static/js/bootstrap.min.js,
+         asterix-app/src/main/resources/webui/static/css/bootstrap-responsive.min.css,
+       and
+         asterix-app/src/main/resources/webui/static/css/bootstrap.min.css
+
+   are available under the following license:
+---
+   Copyright 2012 Twitter, Inc.
+   http://www.apache.org/licenses/LICENSE-2.0.txt
+---
+   Portions of the AsterixDB WebUI
+       located at:
+         asterix-app/src/main/resources/webui/static/js/smoothie.js,
+       and
+         asterix-app/src/main/resources/feed/smoothie.js
+
+   are available under the following license:
+---
+   Copyright (c) 2010-2013, Joe Walnes
 
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
@@ -275,234 +289,197 @@ asterix-app/src/main/resources/webui/static/js/bootstrap.min.js
    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.
+---
+   Portions of the AsterixDB QueryUI
+       located at:
+         asterix-app/src/main/resources/queryui/js/json-formatter.min.js,
+       and
+         asterix-app/src/main/resources/queryui/css/json-formatter.min.css
 
+   are available under the following license:
+---
+   Copyright 2014 Mohsen Azimi
 
-and portions of the WebUI at:
-asterix-app/src/main/resources/webui/static/js/smoothie.js
-and
-asterix-app/src/main/resources/feed/smoothie.js
-
-   MIT License
-   -----------
-
-   Copyright (c) 2010-2013, Joe Walnes
-                 2013-2014, Drew Noakes
-
-                 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.
-
-For portions of the Asterix API examples at:
-asterix-examples/src/main/resources/admaql101-demo/bottle.py
-
-    Copyright (c) 2014, Marcel Hellkamp.
-
-    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.
-
-and at asterix-examples/src/main/resources/tweetbook-demo/static/js/geostats.js:
-
-Copyright (c) 2011 Simon Georget
-
-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:
+   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
 
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+       http://www.apache.org/licenses/LICENSE-2.0
 
-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.
+   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.
+---
+   Portions of the AsterixDB QueryUI
+       located at:
+         asterix-app/src/main/resources/queryui/js/bootstrap.min.js,
+         asterix-app/src/main/resources/queryui/css/bootstrap.min.css,
+       and
+         asterix-app/src/main/resources/queryui/css/bootstrap-theme.min.css
+
+   are available under the following license:
+---
+   The MIT License (MIT)
 
-as well as at asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js:
+   Copyright (c) 2011-2015 Twitter, Inc
 
-RainbowVis-JS 
-Released under MIT License
+   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:
 
-Source: https://github.com/anomal/RainbowVis-JS
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
 
-For portions of the AsterixDB QueryUI at:
-asterix-app/src/main/resources/queryui/js/jquery-1.12.4.min.js
+   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.
+---
+   Portions of the AsterixDB QueryUI
+       located at:
+         asterix-app/src/main/resources/queryui/js/angular.min.js
 
-    Copyright jQuery Foundation and other contributors, https://jquery.org/
+   are available under The MIT License:
+---
+   Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
 
-    This software consists of voluntary contributions made by many
-    individuals. For exact contribution history, see the revision history
-    available at https://github.com/jquery/jquery
+   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 following license applies to all parts of this software except as
-    documented below:
+   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.
+---
+   Portions of the AsterixDB QueryUI
+       located at:
+         asterix-app/src/main/resources/queryui/js/codemirror.js,
+         asterix-app/src/main/resources/queryui/js/javascript.js,
+       and
+         asterix-app/src/main/resources/queryui/css/codemirror.css
+
+   are available under The MIT License:
+---
+   Copyright (C) 2016 by Marijn Haverbeke <marijnh@gmail.com> and others
 
-    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:
+   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 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.
+   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.
+---
+   Portions of the AsterixDB QueryUI
+       located at:
+         asterix-app/src/main/resources/queryui/js/ui-codemirror.js
 
-    ====
+   are available under The MIT License:
+---
+   Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.com
 
-    All files located in the node_modules and external directories are
-    externally maintained libraries used by this software which have their
-    own licenses; we recommend you read them, as their terms may differ from
-    the terms above.
-
-For more portions of the AsterixDB QueryUI at:
-asterix-app/src/main/resources/queryui/js/bootstrap.min.js
-asterix-app/src/main/resources/queryui/css/bootstrap.min.css
-asterix-app/src/main/resources/queryui/css/bootstrap-theme.min.css
-
-    The MIT License (MIT)
+   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:
 
-    Copyright (c) 2011-2016 Twitter, Inc.
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
 
-    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 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.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         asterix-examples/src/main/resources/admaql101-demo/bottle.py
 
-    The above copyright notice and this permission notice shall be included in
-    all copies or substantial portions of the Software.
+   are available under The MIT License:
+---
+   Copyright (c) 2014, Marcel Hellkamp.
 
-    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.
+   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:
 
-For more portions of the AsterixDB QueryUI at:
-asterix-app/src/main/resources/queryui/js/angular.min.js
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
 
-    The MIT License
+   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.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         asterix-examples/src/main/resources/tweetbook-demo/static/js/geostats.js
 
-    Copyright (c) 2010-2016 Google, Inc. http://angularjs.org
+   are available under The MIT License:
+---
+   Copyright (c) 2011 Simon Georget
 
-    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:
+   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 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.
-
-For more portions of the AsterixDB QueryUI at:
-asterix-app/src/main/resources/queryui/js/codemirror.js
-asterix-app/src/main/resources/queryui/js/javascript.js
-asterix-app/src/main/resources/queryui/css/codemirror.css
-
-    Copyright (C) 2016 by Marijn Haverbeke <marijnh@gmail.com> and others
-
-    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.
-    Status API Training Shop Blog About
-
-For more portions of the AsterixDB QueryUI at:
-asterix-app/src/main/resources/queryui/js/ui-codemirror.js
-
-    The MIT License
-
-    Copyright (c) 2012 the AngularUI Team, http://angular-ui.github.com
-
-    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.
-
-For more portions of the AsterixDB QueryUI at:
-asterix-app/src/main/resources/queryui/js/json-formatter.min.js
-asterix-app/src/main/resources/queryui/css/json-formatter.min.css
-
-    Copyright 2014 Mohsen Azimi
-
-    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.
+   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.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js
+
+   are available under The MIT License:
+---
+   See https://opensource.org/licenses/mit-license.php
+---

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/NOTICE
----------------------------------------------------------------------
diff --git a/asterixdb/NOTICE b/asterixdb/NOTICE
index 6285a2e..6cd6f73 100644
--- a/asterixdb/NOTICE
+++ b/asterixdb/NOTICE
@@ -1,5 +1,5 @@
 Apache AsterixDB
-Copyright 2015 The Apache Software Foundation
+Copyright 2015-2017 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js b/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js
index 1f444dc..862622d 100644
--- a/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js
+++ b/asterixdb/asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js
@@ -2,7 +2,7 @@
 RainbowVis-JS 
 Released under MIT License
 
-Source: https://github.com/anomal/RainbowVis-JS
+Source: https://github.com/anomal/RainbowVis-JS/blob/e160e6db8be28f7de99ba17c6566007410ee1f98/rainbowvis.js
 */
 
 function Rainbow()
@@ -10,10 +10,10 @@ function Rainbow()
 	var gradients = null;
 	var minNum = 0;
 	var maxNum = 100;
-	var colours = ['ff0000', 'ffff00', '00ff00', '0000ff']; 
+	var colours = ['ff0000', 'ffff00', '00ff00', '0000ff'];
 	setColours(colours);
-	
-	function setColours (spectrum) 
+
+	function setColours (spectrum)
 	{
 		if (spectrum.length < 2) {
 			throw new Error('Rainbow must have two or more colours.');
@@ -23,12 +23,12 @@ function Rainbow()
 			firstGradient.setGradient(spectrum[0], spectrum[1]);
 			firstGradient.setNumberRange(minNum, minNum + increment);
 			gradients = [ firstGradient ];
-			
+
 			for (var i = 1; i < spectrum.length - 1; i++) {
 				var colourGradient = new ColourGradient();
 				colourGradient.setGradient(spectrum[i], spectrum[i + 1]);
-				colourGradient.setNumberRange(minNum + increment * i, minNum + increment * (i + 1)); 
-				gradients[i] = colourGradient; 
+				colourGradient.setNumberRange(minNum + increment * i, minNum + increment * (i + 1));
+				gradients[i] = colourGradient;
 			}
 
 			colours = spectrum;
@@ -38,7 +38,7 @@ function Rainbow()
 
 	this.setColors = this.setColours;
 
-	this.setSpectrum = function () 
+	this.setSpectrum = function ()
 	{
 		setColours(arguments);
 		return this;
@@ -78,7 +78,7 @@ function Rainbow()
 	}
 }
 
-function ColourGradient() 
+function ColourGradient()
 {
 	var startColour = 'ff0000';
 	var endColour = '0000ff';
@@ -103,11 +103,11 @@ function ColourGradient()
 
 	this.colourAt = function (number)
 	{
-		return calcHex(number, startColour.substring(0,2), endColour.substring(0,2)) 
-			+ calcHex(number, startColour.substring(2,4), endColour.substring(2,4)) 
+		return calcHex(number, startColour.substring(0,2), endColour.substring(0,2))
+			+ calcHex(number, startColour.substring(2,4), endColour.substring(2,4))
 			+ calcHex(number, startColour.substring(4,6), endColour.substring(4,6));
 	}
-	
+
 	function calcHex(number, channelStart_Base16, channelEnd_Base16)
 	{
 		var num = number;
@@ -116,24 +116,24 @@ function ColourGradient()
 		}
 		if (num > maxNum) {
 			num = maxNum;
-		} 
+		}
 		var numRange = maxNum - minNum;
 		var cStart_Base10 = parseInt(channelStart_Base16, 16);
-		var cEnd_Base10 = parseInt(channelEnd_Base16, 16); 
+		var cEnd_Base10 = parseInt(channelEnd_Base16, 16);
 		var cPerUnit = (cEnd_Base10 - cStart_Base10)/numRange;
 		var c_Base10 = Math.round(cPerUnit * (num - minNum) + cStart_Base10);
 		return formatHex(c_Base10.toString(16));
 	}
 
-	formatHex = function (hex) 
+	formatHex = function (hex)
 	{
 		if (hex.length === 1) {
 			return '0' + hex;
 		} else {
 			return hex;
 		}
-	} 
-	
+	}
+
 	function isHexColour(string)
 	{
 		var regex = /^#?[0-9a-fA-F]{6}$/i;
@@ -175,4 +175,3 @@ function ColourGradient()
 		}
 	}
 }
-

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-installer/pom.xml
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-installer/pom.xml b/asterixdb/asterix-installer/pom.xml
index 2f34f1d..d0b84ae 100644
--- a/asterixdb/asterix-installer/pom.xml
+++ b/asterixdb/asterix-installer/pom.xml
@@ -41,9 +41,9 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>org.apache.asterix</groupId>
+        <groupId>org.apache.hyracks</groupId>
         <artifactId>license-automation-plugin</artifactId>
-        <version>${project.version}</version>
+        <version>${hyracks.version}</version>
         <executions>
           <execution>
             <phase>generate-resources</phase>
@@ -60,7 +60,7 @@
               <outputFile>LICENSE</outputFile>
             </generatedFile>
             <generatedFile>
-              <template>asterixdb/src/main/licenses/templates/asterix-notice.ftl</template>
+              <template>hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl</template>
               <outputFile>NOTICE</outputFile>
             </generatedFile>
           </generatedFiles>
@@ -129,8 +129,9 @@
             </override>
           </overrides>
           <templateProperties>
-            <assembly>asterix/asterix-server-${project.version}-binary-assembly.zip</assembly>
             <packageName>Managix Install</packageName>
+            <asterixAppLocation>repo/asterix-app-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</asterixAppLocation>
+            <hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hyracksControlCcLocation>
           </templateProperties>
         </configuration>
       </plugin>

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-license/pom.xml
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-license/pom.xml b/asterixdb/asterix-license/pom.xml
new file mode 100644
index 0000000..533b23e
--- /dev/null
+++ b/asterixdb/asterix-license/pom.xml
@@ -0,0 +1,122 @@
+<!--
+ ! 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.
+ !-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>asterix-license</artifactId>
+  <name>asterix-license</name>
+  <parent>
+    <groupId>org.apache.asterix</groupId>
+    <artifactId>apache-asterixdb</artifactId>
+    <version>0.8.9-SNAPSHOT</version>
+  </parent>
+
+  <licenses>
+    <license>
+      <name>Apache License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+      <comments>A business-friendly OSS license</comments>
+    </license>
+  </licenses>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.hyracks</groupId>
+        <artifactId>license-automation-plugin</artifactId>
+        <version>${hyracks.version}</version>
+        <executions>
+          <execution>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <templateRootDir>${basedir}/../../</templateRootDir>
+          <outputDir>${basedir}/..</outputDir>
+          <location>ignored</location>
+          <generatedFiles>
+            <generatedFile>
+              <template>asterixdb/src/main/licenses/templates/asterix-source-license.ftl</template>
+              <outputFile>LICENSE</outputFile>
+            </generatedFile>
+            <generatedFile>
+              <template>hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl</template>
+              <outputFile>NOTICE</outputFile>
+            </generatedFile>
+          </generatedFiles>
+          <excludedScopes>
+            <excludedScope>test</excludedScope>
+          </excludedScopes>
+          <licenseDirectory>${basedir}/../src/main/licenses/content</licenseDirectory>
+          <models>
+             <model>${basedir}/../src/main/appended-resources/supplemental-models.xml</model>
+          </models>
+          <licenses>
+            <license>
+              <displayName>The Apache Software License, Version 2.0</displayName>
+              <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+              <aliasUrls>
+                <aliasUrl>http://www.apache.org/licenses/LICENSE-2.0</aliasUrl>
+                <aliasUrl>https://www.apache.org/licenses/LICENSE-2.0.txt</aliasUrl>
+                <aliasUrl>http://www.apache.org/licenses/LICENSE-2.0.html</aliasUrl>
+              </aliasUrls>
+              <metric>1</metric>
+            </license>
+          </licenses>
+          <templateProperties>
+            <asterixAppLocation/>
+            <asterixAppResourcesPrefix>asterix-app/src/main/resources/</asterixAppResourcesPrefix>
+            <packageName/>
+          </templateProperties>
+        </configuration>
+      </plugin>
+    </plugins>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.eclipse.m2e</groupId>
+          <artifactId>lifecycle-mapping</artifactId>
+          <version>1.0.0</version>
+          <configuration>
+            <lifecycleMappingMetadata>
+              <pluginExecutions>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>org.apache.asterix</groupId>
+                    <artifactId>license-automation-plugin</artifactId>
+                    <versionRange>${project.version}</versionRange>
+                    <goals>
+                      <goal>generate</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore />
+                  </action>
+                </pluginExecution>
+              </pluginExecutions>
+            </lifecycleMappingMetadata>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml b/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml
deleted file mode 100644
index 6abbf71..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/pom.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ! 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.
- !-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <parent>
-    <groupId>org.apache.asterix</groupId>
-    <artifactId>asterix-maven-plugins</artifactId>
-    <version>0.8.9-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <packaging>maven-plugin</packaging>
-
-  <artifactId>license-automation-plugin</artifactId>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven.plugin-tools</groupId>
-      <artifactId>maven-plugin-annotations</artifactId>
-      <version>3.5</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-      <version>3.3.9</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-remote-resources-plugin</artifactId>
-      <version>1.5</version>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-databind</artifactId>
-      <version>2.8.4</version>
-    </dependency>
-    <dependency>
-      <groupId>org.freemarker</groupId>
-      <artifactId>freemarker</artifactId>
-      <version>2.3.23</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-annotations</artifactId>
-      <version>2.8.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>2.2.1</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-model</artifactId>
-      <version>3.3.9</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
-      <version>3.0.22</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
-      <version>3.0</version>
-    </dependency>
-  </dependencies>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java
deleted file mode 100644
index 64e5f7d..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DependencySet.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.
- */
-package org.apache.asterix.license;
-
-import java.util.List;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-public class DependencySet {
-
-    @SuppressWarnings("unused") // set by Maven configuration
-    private String location;
-
-    @SuppressWarnings({"unused", "MismatchedQueryAndUpdateOfCollection"}) // set by Maven configuration
-    private List<String> includes;
-
-    private List<Pattern> patterns;
-
-    public String getLocation() {
-        return location;
-    }
-
-    public List<Pattern> getPatterns() {
-        if (patterns == null) {
-            patterns = includes.stream().map(LicenseMojo::compileGAWildcardPattern).collect(Collectors.toList());
-        }
-        return patterns;
-    }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java
deleted file mode 100644
index cb9f172..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/DownloadLicensesMojo.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.
- */
-package org.apache.asterix.license;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.ProjectBuildingException;
-
-@Mojo(name = "licensedownload",
-        requiresProject = true,
-        requiresDependencyResolution = ResolutionScope.TEST,
-        defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
-public class DownloadLicensesMojo extends LicenseMojo {
-
-    @Parameter(required = true)
-    private File downloadDir;
-
-    @Parameter(defaultValue = "30")
-    private int timeoutSecs;
-
-    @java.lang.Override
-    public void execute() throws MojoExecutionException, MojoFailureException {
-        try {
-            init();
-            addDependenciesToLicenseMap();
-            final int timeoutMillis = (int) TimeUnit.SECONDS.toMillis(timeoutSecs);
-            //noinspection ResultOfMethodCallIgnored
-            downloadDir.mkdirs();
-            AtomicInteger counter = new AtomicInteger();
-            getLicenseMap().values().parallelStream().forEach(entry -> {
-                final int i = counter.incrementAndGet();
-                final String url = entry.getLicense().getUrl();
-                String fileName = entry.getLicense().getContentFile(false);
-                doDownload(timeoutMillis, i, url, fileName);
-            });
-        } catch (IOException | ProjectBuildingException e) {
-            throw new MojoExecutionException("Unexpected exception: " + e, e);
-        }
-    }
-
-    private void doDownload(int timeoutMillis, int id, String url, String fileName) {
-        try {
-            HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
-            conn.setConnectTimeout(timeoutMillis);
-            conn.setReadTimeout(timeoutMillis);
-            conn.setRequestMethod("GET");
-            final File outFile = new File(downloadDir, fileName);
-            getLog().info("[" + id + "] " + url + " -> " + outFile);
-            final InputStream is = conn.getInputStream();
-            FileWriter writer = new FileWriter(outFile);
-            IOUtils.copy(is, writer, conn.getContentEncoding());
-            writer.close();
-            getLog().info("[" + id + "] ...done!");
-        } catch (IOException e) {
-            getLog().warn("[" + id + "] ...error downloading " + url + ": " + e);
-        }
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java
deleted file mode 100644
index 6a0c163..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/ExtraLicenseFile.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.
- */
-package org.apache.asterix.license;
-
-import java.io.File;
-
-public class ExtraLicenseFile {
-    private File file;
-    private String location;
-    private boolean additive = true;
-
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    public File getFile() {
-        return file;
-    }
-
-    public void setFile(File file) {
-        this.file = file;
-    }
-
-    public boolean isAdditive() {
-        return additive;
-    }
-
-    public void setAdditive(boolean additive) {
-        this.additive = additive;
-    }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java
deleted file mode 100644
index 191aa6b..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GenerateFileMojo.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * 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.
- */
-package org.apache.asterix.license;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.function.BiConsumer;
-import java.util.function.Predicate;
-import java.util.function.UnaryOperator;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.regex.Pattern;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SequenceWriter;
-import freemarker.cache.FileTemplateLoader;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-import org.apache.asterix.license.freemarker.IndentDirective;
-import org.apache.asterix.license.freemarker.LoadFileDirective;
-import org.apache.asterix.license.project.LicensedProjects;
-import org.apache.asterix.license.project.Project;
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.ProjectBuildingException;
-
-@Mojo(name = "generate",
-        requiresProject = true,
-        requiresDependencyResolution = ResolutionScope.TEST)
-public class GenerateFileMojo extends LicenseMojo {
-
-    public static final Pattern FOUNDATION_PATTERN = Pattern.compile("^\\s*This product includes software developed " +
-                    "(at|by) The Apache Software Foundation \\(http://www.apache.org/\\).\\s*$".replace(" ", "\\s+"),
-            Pattern.DOTALL | Pattern.MULTILINE);
-
-    public static final Comparator<String> WHITESPACE_NORMALIZED_COMPARATOR =
-            (o1, o2) -> o1.replaceAll("\\s+", " ").compareTo(o2.replaceAll("\\s+", " "));
-
-    @Parameter(required = true)
-    private File templateRootDir;
-
-    @Parameter(defaultValue = "${project.build.directory}/generated-sources")
-    private File outputDir;
-
-    @Parameter
-    private List<GeneratedFile> generatedFiles = new ArrayList<>();
-
-    @Parameter(defaultValue = "${project.build.sourceEncoding}")
-    private String encoding;
-
-    @Parameter
-    private File licenseMapOutputFile;
-
-    @Parameter
-    private List<ExtraLicenseFile> extraLicenseMaps = new ArrayList<>();
-
-    @Parameter
-    protected Map<String, String> templateProperties = new HashMap<>();
-
-    @Parameter
-    private boolean stripFoundationAssertionFromNotices = true;
-
-    private SortedMap<String, SortedSet<Project>> noticeMap;
-
-    @java.lang.Override
-    public void execute() throws MojoExecutionException, MojoFailureException {
-        try {
-            init();
-            readExtraMaps();
-            addDependenciesToLicenseMap();
-            resolveLicenseContent();
-            resolveNoticeFiles();
-            resolveLicenseFiles();
-            rebuildLicenseContentProjectMap();
-            buildNoticeProjectMap();
-            persistLicenseMap();
-            combineCommonGavs();
-            generateFiles();
-        } catch (IOException | TemplateException | ProjectBuildingException e) {
-            throw new MojoExecutionException("Unexpected exception: " + e, e);
-        }
-    }
-
-    private void resolveLicenseContent() throws IOException {
-        for (LicensedProjects licensedProjects : licenseMap.values()) {
-            final LicenseSpec license = licensedProjects.getLicense();
-            if (license.getContent() == null) {
-                getLog().debug("Resolving content for " + license.getUrl() + " (" + license.getContentFile() + ")");
-                File cFile = new File(license.getContentFile());
-                if (!cFile.isAbsolute()) {
-                    cFile = new File(licenseDirectory, license.getContentFile());
-                }
-                if (!cFile.exists()) {
-                    getLog().warn("MISSING: license content file (" + cFile + ") for url: " + license.getUrl());
-                    license.setContent("MISSING: " + license.getContentFile() + " (" + license.getUrl() + ")");
-                } else {
-                    StringWriter sw = new StringWriter();
-                    LicenseUtil.readAndTrim(sw, cFile);
-                    license.setContent(sw.toString());
-                }
-            }
-        }
-    }
-
-    private void combineCommonGavs() {
-        for (LicensedProjects licensedProjects : licenseMap.values()) {
-            Map<String, Project> projectMap = new HashMap<>();
-            for (Iterator<Project> iter = licensedProjects.getProjects().iterator(); iter.hasNext(); ) {
-                Project project = iter.next();
-                if (projectMap.containsKey(project.gav())) {
-                    Project first = projectMap.get(project.gav());
-                    first.setLocation(first.getLocation() + "," + project.getLocation());
-                    iter.remove();
-                } else {
-                    projectMap.put(project.gav(), project);
-                }
-            }
-        }
-    }
-
-    private void generateFiles() throws TemplateException, IOException {
-        Map<String, Object> props = getProperties();
-
-        Configuration config = new Configuration();
-        config.setTemplateLoader(new FileTemplateLoader(templateRootDir));
-        for (GeneratedFile generation : generatedFiles) {
-            Template template = config.getTemplate(generation.getTemplate());
-
-            if (template == null) {
-                throw new IOException("Could not load template " + generation.getTemplate());
-            }
-
-            outputDir.mkdirs();
-            final File file = new File(outputDir, generation.getOutputFile());
-            getLog().info("Writing " + file + "...");
-            try (final FileWriter writer = new FileWriter(file)) {
-                template.process(props, writer);
-            }
-        }
-    }
-
-    protected Map<String, Object> getProperties() {
-        Map<String, Object> props = new HashMap<>();
-        props.put("indent", new IndentDirective());
-        props.put("loadfile", new LoadFileDirective());
-        props.put("project", project);
-        props.put("noticeMap", noticeMap.entrySet());
-        props.put("licenseMap", licenseMap.entrySet());
-        props.putAll(templateProperties);
-        return props;
-    }
-
-    private void readExtraMaps() throws IOException {
-        final ObjectMapper objectMapper = new ObjectMapper();
-        for (ExtraLicenseFile extraLicenseFile : extraLicenseMaps) {
-            for (LicensedProjects projects :
-                    objectMapper.readValue(extraLicenseFile.getFile(), LicensedProjects[].class)) {
-                LicenseSpec spec = urlToLicenseMap.get(projects.getLicense().getUrl());
-                if (spec != null) {
-                    // TODO(mblow): probably we should always favor the extra map...
-                    // propagate any license content we may have with what already has been loaded
-                    if (projects.getLicense().getContent() != null &&
-                            spec.getContent() == null) {
-                        spec.setContent(projects.getLicense().getContent());
-                    }
-                    // propagate any license displayName we may have with what already has been loaded
-                    if (projects.getLicense().getDisplayName() != null &&
-                            spec.getDisplayName() == null) {
-                        spec.setDisplayName(projects.getLicense().getDisplayName());
-                    }
-                }
-                for (Project project : projects.getProjects()) {
-                    project.setLocation(extraLicenseFile.getLocation());
-                    addProject(project, projects.getLicense(), extraLicenseFile.isAdditive());
-                }
-            }
-        }
-    }
-
-    private void persistLicenseMap() throws IOException {
-        if (licenseMapOutputFile != null) {
-            licenseMapOutputFile.getParentFile().mkdirs();
-            SequenceWriter sw = new ObjectMapper().writerWithDefaultPrettyPrinter()
-                    .writeValues(licenseMapOutputFile).init(true);
-            for (LicensedProjects entry : licenseMap.values()) {
-                sw.write(entry);
-            }
-            sw.close();
-        }
-    }
-
-    private void rebuildLicenseContentProjectMap() {
-        int counter = 0;
-        Map<String, LicensedProjects> licenseMap2 = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR);
-        for (LicensedProjects lps : licenseMap.values()) {
-            for (Project project : lps.getProjects()) {
-                String licenseText = project.getLicenseText();
-                if (licenseText == null) {
-                    getLog().warn("Using license other than from within artifact: " + project.gav());
-                    licenseText = lps.getLicense().getContent();
-                }
-                if (!licenseMap2.containsKey(licenseText)) {
-                    LicenseSpec spec = lps.getLicense();
-                    if (!licenseText.equals(lps.getLicense().getContent())) {
-                        spec = new LicenseSpec(new ArrayList<>(), licenseText, null, spec.getDisplayName(),
-                                spec.getMetric(), spec.getUrl() + (counter++));
-                    }
-                    licenseMap2.put(licenseText, new LicensedProjects(spec));
-                }
-                licenseMap2.get(licenseText).addProject(project);
-            }
-        }
-        licenseMap = licenseMap2;
-    }
-
-    private Set<Project> getProjects() {
-        Set<Project> projects = new HashSet<>();
-        licenseMap.values().forEach(p -> projects.addAll(p.getProjects()));
-        return projects;
-    }
-
-    private void buildNoticeProjectMap() {
-        noticeMap = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR);
-        for (Project project : getProjects()) {
-            final String noticeText = project.getNoticeText();
-            if (noticeText == null) {
-                continue;
-            }
-            if (!noticeMap.containsKey(noticeText)) {
-                noticeMap.put(noticeText, new TreeSet<>(Project.PROJECT_COMPARATOR));
-            }
-            noticeMap.get(noticeText).add(project);
-        }
-    }
-
-    private void resolveNoticeFiles() throws MojoExecutionException, IOException {
-        resolveArtifactFiles("NOTICE", entry -> entry.getName().matches("(.*/|^)" + "NOTICE" + "(.txt)?"),
-                Project::setNoticeText,
-                text -> stripFoundationAssertionFromNotices ? FOUNDATION_PATTERN.matcher(text).replaceAll("") : text);
-    }
-
-    private void resolveLicenseFiles() throws MojoExecutionException, IOException {
-        resolveArtifactFiles("LICENSE", entry -> entry.getName().matches("(.*/|^)" + "LICENSE" + "(.txt)?"),
-                Project::setLicenseText, UnaryOperator.identity());
-    }
-
-    private void resolveArtifactFiles(final String name, Predicate<JarEntry> filter,
-                                      BiConsumer<Project, String> consumer, UnaryOperator<String> contentTransformer)
-            throws MojoExecutionException, IOException {
-        for (Project project : getProjects()) {
-            File artifactFile = new File(project.getArtifactPath());
-            if (!artifactFile.exists()) {
-                throw new MojoExecutionException("Artifact file " + artifactFile + " does not exist!");
-            } else if (!artifactFile.getName().endsWith(".jar")) {
-                getLog().info("Skipping unknown artifact file type: " + artifactFile);
-                continue;
-            }
-            try (JarFile jarFile = new JarFile(artifactFile)) {
-                SortedMap<String, JarEntry> matches = gatherMatchingEntries(jarFile,
-                        filter);
-                if (matches.isEmpty()) {
-                    getLog().warn("No " + name + " file found for " + project.gav());
-                } else {
-                    if (matches.size() > 1) {
-                        getLog().warn("Multiple " + name + " files found for " + project.gav() + ": " + matches.keySet()
-                                + "; taking first");
-                    } else {
-                        getLog().info(project.gav() + " has " + name + " file: " + matches.keySet());
-                    }
-                    resolveContent(project, jarFile, matches.values().iterator().next(),
-                            contentTransformer, consumer, name);
-                }
-            }
-        }
-    }
-
-    private void resolveContent(Project project, JarFile jarFile, JarEntry entry, UnaryOperator<String> transformer,
-                                BiConsumer<Project, String> contentConsumer, final String name) throws IOException {
-        String text = IOUtils.toString(jarFile.getInputStream(entry), StandardCharsets.UTF_8);
-        text = transformer.apply(text);
-        text = LicenseUtil.trim(text);
-        if (text.length() == 0) {
-            getLog().warn("Ignoring empty " + name + " file ( " + entry + ") for " + project.gav());
-        } else {
-            contentConsumer.accept(project, text);
-            getLog().debug("Resolved " + name + " text for " + project.gav() + ": \n" + text);
-        }
-    }
-
-    private SortedMap<String, JarEntry> gatherMatchingEntries(JarFile jarFile, Predicate<JarEntry> filter) {
-        SortedMap<String, JarEntry> matches = new TreeMap<>();
-        Enumeration<JarEntry> entries = jarFile.entries();
-        while (entries.hasMoreElements()) {
-            JarEntry entry = entries.nextElement();
-            if (filter.test(entry)) {
-                matches.put(entry.getName(), entry);
-            }
-        }
-        return matches;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java
deleted file mode 100644
index b89dc88..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/GeneratedFile.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.
- */
-package org.apache.asterix.license;
-
-public class GeneratedFile {
-
-    @SuppressWarnings("unused") // set by Maven plugin configuration
-    private String template;
-
-    @SuppressWarnings("unused") // set by Maven plugin configuration
-    private String outputFile;
-
-    public String getOutputFile() {
-        return outputFile;
-    }
-
-    public String getTemplate() {
-        return template;
-    }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/43b40b68/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java b/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java
deleted file mode 100644
index eab4f10..0000000
--- a/asterixdb/asterix-maven-plugins/license-automation-plugin/src/main/java/org/apache/asterix/license/LicenseMojo.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * 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.
- */
-package org.apache.asterix.license;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import org.apache.asterix.license.project.LicensedProjects;
-import org.apache.asterix.license.project.Project;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.License;
-import org.apache.maven.model.Model;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
-
-public abstract class LicenseMojo extends AbstractMojo {
-
-    @Parameter
-    protected List<Override> overrides = new ArrayList<>();
-
-    @Parameter
-    protected String [] models = new String [0];
-
-    @Parameter
-    protected List<LicenseSpec> licenses = new ArrayList<>();
-
-    @Parameter
-    protected Set<String> excludedScopes = new HashSet<>();
-
-    @Parameter
-    protected List<String> excludes = new ArrayList<>();
-
-    @Parameter
-    protected List<DependencySet> dependencySets = new ArrayList<>();
-
-    @Parameter( defaultValue = "${project}", readonly = true )
-    protected MavenProject project;
-
-    @Parameter( property = "localRepository", required = true, readonly = true )
-    private ArtifactRepository localRepository;
-
-    @Parameter( property = "project.remoteArtifactRepositories", required = true, readonly = true )
-    private List<ArtifactRepository> remoteRepositories;
-
-    @Component( role = MavenProjectBuilder.class )
-    protected MavenProjectBuilder projectBuilder;
-
-    @Component
-    private ModelInheritanceAssembler assembler;
-
-    @Parameter ( required = true )
-    private String location;
-
-    @Parameter ( required = true )
-    protected File licenseDirectory;
-
-    private Map<String, MavenProject> projectCache = new HashMap<>();
-
-    private Map<String, Model> supplementModels;
-
-    private List<Pattern> excludePatterns;
-
-    Map<String, LicenseSpec> urlToLicenseMap = new HashMap<>();
-    Map<String, LicensedProjects> licenseMap = new TreeMap<>();
-
-    protected Map<String, LicensedProjects> getLicenseMap() {
-        return licenseMap;
-    }
-
-    protected void init() throws MojoExecutionException, MalformedURLException,
-            ProjectBuildingException {
-        excludedScopes.add("system");
-        excludePatterns = compileExcludePatterns();
-        supplementModels = SupplementalModelHelper.loadSupplements(getLog(), models);
-        buildUrlLicenseMap();
-    }
-
-    protected void addDependenciesToLicenseMap() throws ProjectBuildingException {
-        Map<MavenProject, List<Pair<String, String>>> dependencyLicenseMap = gatherDependencies();
-        for (Map.Entry<MavenProject, List<Pair<String, String>>> dep : dependencyLicenseMap.entrySet()) {
-            final MavenProject depProject = dep.getKey();
-            String depLocation = dependencySets.isEmpty() ? location : getIncludedLocation(depProject.getArtifact());
-            if (isExcluded(depProject.getArtifact())) {
-                getLog().debug("skipping " + depProject + " [excluded]");
-            } else if (depLocation == null) {
-                getLog().debug("skipping " + depProject + " [not included in dependency sets]");
-            } else {
-                addDependencyToLicenseMap(depProject, dep.getValue(), depLocation);
-            }
-        }
-    }
-
-    private void addDependencyToLicenseMap(MavenProject depProject, List<Pair<String, String>> depLicenses,
-                                           String depLocation) {
-        final String depGav = toGav(depProject);
-        getLog().debug("adding " + depGav + ", location: " + depLocation);
-        if (depLicenses.size() > 1) {
-            Collections.sort(depLicenses, (o1, o2) -> {
-                final LicenseSpec l1 = urlToLicenseMap.get(o1.getLeft());
-                final LicenseSpec l2 = urlToLicenseMap.get(o2.getLeft());
-                return Integer.compare(l1 != null ? l1.getMetric() : LicenseSpec.UNDEFINED_LICENSE_METRIC,
-                        l2 != null ? l2.getMetric() : LicenseSpec.UNDEFINED_LICENSE_METRIC);
-            });
-            getLog().warn("Multiple licenses for " + depGav + ": " + depLicenses
-                    + "; taking first or lowest metric.");
-        } else if (depLicenses.isEmpty()) {
-            getLog().error("No license defined for " + depGav);
-            depLicenses.add(new ImmutablePair<>("MISSING_LICENSE", "MISSING LICENSE"));
-        }
-        Pair<String, String> key = depLicenses.get(0);
-        String licenseUrl = key.getLeft();
-        final String displayName = key.getRight();
-        if (!urlToLicenseMap.containsKey(licenseUrl)) {
-            // assuming we've not already mapped it, annotate the URL with artifact info, if not an actual URL
-            try {
-                getLog().debug("- URL: " + new URL(licenseUrl));
-                // life is good
-            } catch (MalformedURLException e) {
-                // we encounter this a lot.  Log a warning, and use an annotated key
-                final String fakeLicenseUrl = depGav.replaceAll(":", "--") + "_" + licenseUrl;
-                getLog().warn("- URL for " + depGav + " is malformed: " + licenseUrl + "; using: "
-                        + fakeLicenseUrl);
-                licenseUrl = fakeLicenseUrl;
-            }
-        }
-        addProject(new Project(depProject, depLocation, depProject.getArtifact().getFile()),
-                new LicenseSpec(licenseUrl, displayName), true);
-    }
-
-    protected void addProject(Project project, LicenseSpec spec, boolean additive) {
-        String licenseUrl = spec.getUrl();
-        LicenseSpec license = urlToLicenseMap.get(licenseUrl);
-        if (license == null) {
-            license = spec;
-            urlToLicenseMap.put(licenseUrl, license);
-            for (String alias : license.getAliasUrls()) {
-                if (!urlToLicenseMap.containsKey(alias)) {
-                    urlToLicenseMap.put(alias ,license);
-                }
-            }
-        }
-        licenseUrl = license.getUrl();
-        LicensedProjects entry = licenseMap.get(licenseUrl);
-        if (entry == null) {
-            entry = new LicensedProjects(license);
-            licenseMap.put(licenseUrl, entry);
-        }
-        if (additive || entry.getProjects().contains(project)) {
-            entry.addProject(project);
-        }
-    }
-
-    private void buildUrlLicenseMap() throws MojoExecutionException {
-        for (LicenseSpec license : licenses) {
-            if (urlToLicenseMap.put(license.getUrl() ,license) != null) {
-                throw new MojoExecutionException("Duplicate URL mapping: " + license.getUrl());
-            }
-            for (String alias : license.getAliasUrls()) {
-                if (urlToLicenseMap.put(alias ,license) != null) {
-                    throw new MojoExecutionException("Duplicate URL mapping: " + alias);
-                }
-            }
-        }
-    }
-
-    protected Map<MavenProject, List<Pair<String, String>>> gatherDependencies() throws ProjectBuildingException {
-        Map<MavenProject, List<Pair<String, String>>> dependencyLicenseMap = new HashMap<>();
-        Map<String, MavenProject> dependencyGavMap = new HashMap<>();
-
-        gatherProjectDependencies(project, dependencyLicenseMap, dependencyGavMap);
-        for (Override override : overrides) {
-            String gav = override.getGav();
-            MavenProject dep = dependencyGavMap.get(gav);
-            if (dep == null) {
-                getLog().warn("Unused override dependency " + gav + "; ignoring...");
-            } else {
-                final List<Pair<String, String>> newUrl = Collections.singletonList(
-                        new ImmutablePair<>(override.getUrl(), override.getName()));
-                List<Pair<String, String>> prev = dependencyLicenseMap.put(dep, newUrl);
-                if (!prev.isEmpty()) {
-                    getLog().warn("NOTICE: replacing license(s) " + prev + " for dependency " + gav + " with "
-                            + newUrl);
-                }
-            }
-        }
-        return dependencyLicenseMap;
-    }
-
-    private void gatherProjectDependencies(MavenProject project, Map<MavenProject,
-            List<Pair<String, String>>> dependencyLicenseMap, Map<String, MavenProject> dependencyGavMap)
-            throws ProjectBuildingException {
-        final Set dependencyArtifacts = project.getArtifacts();
-        if (dependencyArtifacts != null) {
-            for (Object depArtifactObj : dependencyArtifacts) {
-                final Artifact depArtifact = (Artifact) depArtifactObj;
-                if (!excludedScopes.contains(depArtifact.getScope())) {
-                    MavenProject dep = resolveDependency(depArtifact);
-                    dep.setArtifact(depArtifact);
-                    dependencyGavMap.put(toGav(dep), dep);
-                    List<Pair<String, String>> licenseUrls = new ArrayList<>();
-                    for (Object license : dep.getLicenses()) {
-                        final License license1 = (License) license;
-                        String url = license1.getUrl() != null ? license1.getUrl()
-                                : (license1.getName() != null ? license1.getName()
-                                : "LICENSE_EMPTY_NAME_URL");
-                        licenseUrls.add(new ImmutablePair<>(url, license1.getName()));
-                    }
-                    dependencyLicenseMap.put(dep, licenseUrls);
-                }
-            }
-        }
-    }
-
-    protected MavenProject resolveDependency(Artifact depObj) throws ProjectBuildingException {
-        String key = depObj.getGroupId() + ":" + depObj.getArtifactId() + ":" + depObj.getVersion();
-
-        MavenProject depProj = projectCache.get(key);
-
-        if (depProj == null) {
-            try {
-                depProj = projectBuilder.buildFromRepository(depObj, remoteRepositories, localRepository, false);
-            } catch (ProjectBuildingException e) {
-                throw new ProjectBuildingException(key, "Error creating dependent artifacts", e);
-            }
-
-            Model supplement = supplementModels.get(
-                    SupplementalModelHelper.generateSupplementMapKey(depObj.getGroupId(), depObj.getArtifactId()));
-            if (supplement != null) {
-                Model merged = SupplementalModelHelper.mergeModels(assembler, depProj.getModel(), supplement);
-                Set<String> origLicenses = depProj.getModel().getLicenses().stream().map(License::getUrl)
-                        .collect(Collectors.toSet());
-                Set<String> newLicenses = merged.getLicenses().stream().map(License::getUrl)
-                        .collect(Collectors.toSet());
-                if (!origLicenses.equals(newLicenses)) {
-                    getLog().warn("license list for " + toGav(depProj)
-                            + " changed with supplemental model; was: " + origLicenses
-                            + ", now: " + newLicenses);
-                }
-                depProj = new MavenProject(merged);
-                depProj.setArtifact( depObj );
-                depProj.setVersion( depObj.getVersion() );
-            }
-            depProj.getArtifact().setScope(depObj.getScope());
-            projectCache.put(key, depProj);
-        }
-        return depProj;
-    }
-
-    private String toGav(MavenProject dep) {
-        return dep.getGroupId() + ":" + dep.getArtifactId() + ":" + dep.getVersion();
-    }
-
-    protected List<Pattern> compileExcludePatterns() {
-        List<Pattern> patterns = new ArrayList<>();
-        for (String exclude : excludes) {
-            patterns.add(compileGAWildcardPattern(exclude));
-        }
-        return patterns;
-    }
-
-    public static Pattern compileGAWildcardPattern(String spec) {
-        return Pattern.compile(spec.replace(".", "\\.").replace("*", "[^:]*"));
-    }
-
-    protected boolean isExcluded(Artifact artifact) {
-        for (Pattern exclude : excludePatterns) {
-            if (exclude.matcher(artifact.getGroupId() + ":" + artifact.getArtifactId()).matches()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    protected String getIncludedLocation(Artifact artifact) {
-        for (DependencySet set : dependencySets) {
-            for (Pattern include : set.getPatterns()) {
-                if (include.matcher(artifact.getGroupId() + ":" + artifact.getArtifactId()).matches()) {
-                    return set.getLocation();
-                }
-            }
-        }
-        return null;
-    }
-}
-


Mime
View raw message