blob: 6f6c4e76817b643f19f8e3acdc920a4ce4b8a826 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Building Apache Causeway :: causeway</title>
<link rel="canonical" href="https://causeway.apache.org/conguide/latest/building-apache-causeway.html">
<meta name="generator" content="Antora 3.1.10">
<link rel="stylesheet" href="../../_/css/site.css">
<link rel="stylesheet" href="../../_/css/site-custom.css">
<link rel="home" href="https://causeway.apache.org" title="causeway">
<link rel="next" href="contributing.html" title="Contributing">
<link rel="prev" href="about.html" title="Contributors&#x27; Guide">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://causeway.apache.org">
<span class="icon">
<img src="../../_/img/causeway-logo-no-words-65x48.png"></img>
</span>
<span class="navbar-title">causeway</span>
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<a class="navbar-end">
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Quick Start</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Starter Apps</span>
<a class="navbar-item" href="../../docs/latest/starters/helloworld.html">Hello World</a>
<a class="navbar-item" href="../../docs/latest/starters/simpleapp.html">Simple App</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Learning &amp; Tutorials</span>
<a class="navbar-item" href="../../docs/latest/reference/about.html">Reference App</a>
<a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Resources</span>
<a class="navbar-item" href="../../docs/latest/resources/cheatsheet.html">Cheatsheet</a>
<a class="navbar-item" href="../../docs/latest/resources/icons.html">Icons</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Guides</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../userguide/latest/about.html">User Guide</a>
<a class="navbar-item" href="../../refguide/latest/about.html">Reference Guide</a>
<a class="navbar-item" href="../../testing/latest/about.html">Testing Guide</a>
<a class="navbar-item" href="../../security/latest/about.html">Security Guide</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">For use in apps</span>
<a class="navbar-item" href="../../valuetypes/latest/about.html">Value Types</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../setupguide/latest/about.html">Setup Guide</a>
<a class="navbar-item" href="../../conguide/latest/about.html">Contributors' Guide</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Components</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../security/latest/bypass/about.html">Bypass</a>
<a class="navbar-item" href="../../security/latest/simple/about.html">Simple</a>
<a class="navbar-item" href="../../security/latest/spring/about.html">Spring</a>
<a class="navbar-item" href="../../security/latest/keycloak/about.html">Keycloak</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Viewers</span>
<a class="navbar-item" href="../../vw/latest/about.html">Web UI (Wicket)</a>
<a class="navbar-item" href="../../gqlv/latest/about.html">GraphQL API</a>
<a class="navbar-item" href="../../vro/latest/about.html">REST API (Restful Objects)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../pjpa/latest/about.html">JPA (EclipseLink)</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Extensions</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../userguide/latest/commandlog/about.html">Command Log</a>
<a class="navbar-item" href="../../userguide/latest/docgen/about.html">Doc Gen</a>
<a class="navbar-item" href="../../userguide/latest/executionlog/about.html">Execution Log</a>
<a class="navbar-item" href="../../userguide/latest/executionoutbox/about.html">Execution Outbox</a>
<a class="navbar-item" href="../../userguide/latest/executionrepublisher/about.html">Execution Republisher</a>
<a class="navbar-item" href="../../userguide/latest/excel/about.html">Excel</a>
<a class="navbar-item" href="../../userguide/latest/flyway/about.html">Flyway</a>
<a class="navbar-item" href="../../userguide/latest/layoutloaders/about.html">Layout Loaders</a>
<a class="navbar-item" href="../../userguide/latest/titlecache/about.html">Title Cache</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../security/latest/secman/about.html">Secman</a>
<a class="navbar-item" href="../../security/latest/audittrail/about.html">Audit Trail</a>
<a class="navbar-item" href="../../security/latest/spring-oauth2/about.html">Spring OAuth2 Integration</a>
<a class="navbar-item" href="../../security/latest/sessionlog/about.html">Session Log</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Web UI (Wicket)</span>
<a class="navbar-item" href="../../vw/latest/fullcalendar/about.html">Full Calendar</a>
<a class="navbar-item" href="../../vw/latest/pdfjs/about.html">pdf.js</a>
<a class="navbar-item" href="../../vw/latest/sse/about.html">Server Side Events</a>
<a class="navbar-item" href="../../vw/latest/tabular/about.html">Tabular Download</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">REST API (Restful Objects)</span>
<a class="navbar-item" href="../../vro/latest/cors/about.html">CORS</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../querydsl/latest/about.html">QueryDSL</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Support</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Contact</span>
<a class="navbar-item" href="../../docs/latest/support/slack-channel.html">Slack</a>
<a class="navbar-item" href="../../docs/latest/support/mailing-list.html">Mailing Lists</a>
<a class="navbar-item" href="https://issues.apache.org/jira/browse/CAUSEWAY">JIRA</a>
<a class="navbar-item" href="https://stackoverflow.com/questions/tagged/causeway">Stack Overflow</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Releases</span>
<a class="navbar-item" href="../../docs/latest/downloads/how-to.html">Downloads</a>
<a class="navbar-item" href="../../relnotes/latest/about.html">Release Notes</a>
<hr class="navbar-divider"/>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Framework</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Process</span>
<a class="navbar-item" href="../../comguide/latest/about.html">Committers' Guide</a>
<a class="navbar-item" href="../../tooling/latest/about.html">Tooling</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Automated Analysis</span>
<a class="navbar-item" href="https://sonarcloud.io/dashboard?id=apache_causeway">SonarCloud.io</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Interim Builds</span>
<a class="navbar-item" href="../../comguide/latest/nightly-builds.html">Nightly builds</a>
<a class="navbar-item" href="../../comguide/latest/weekly-builds.html">Weekly builds</a>
<a class="navbar-item" href="https://apache-causeway-committers.github.io/causeway-nightly">Website Preview (not ASF hosted)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../core/latest/about.html">Internal Design Docs</a>
<a class="navbar-item" href="../../regressiontests/latest/about.html">Regression Tests</a>
<a class="navbar-item" href="../../incubator/latest/about.html">Incubator</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Thanks</span>
<a class="navbar-item" href="../../more-thanks/latest/more-thanks.html">Acknowledgements</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">ASF</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a>
<a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a>
<a class="navbar-item" href="https://www.apache.org/licenses/">License</a>
<a class="navbar-item" href="https://www.apache.org/security/">Security</a>
<a class="navbar-item" href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a>
<a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
<hr class="navbar-divider"/>
<a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Causeway.html">PMC board minutes</a>
</div>
</div>
<a class="navbar-item" href="../../docs/latest/about.html">
<span class="icon">
<img src="../../_/img/home.png"></img>
</span>
</a>
</div>
</div>
</nav>
</header>
<div class="body ">
<div class="nav-container" data-component="conguide" data-version="4.0.0-M1">
<aside class="nav">
<div class="panels">
<div class="nav-panel-search hide-for-print">
<input id="algolia-search-input" placeholder="Search"></span>
</div>
<div class="nav-panel-pagination">
<a class="page-previous" rel="prev" href="about.html" title="Contributors&#x27; Guide"><span></span></a>
<a class="page-next" rel="next"
href="contributing.html" title="Contributing"><span></span></a>
<!--
page.parent doesn't seem to be set...
<a class="page-parent disabled" rel="prev" href="" title="Contributors&#x27; Guide"><span></span></a>
-->
</div>
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="about.html">Contributors&#x27; Guide</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item is-current-page" data-depth="1">
<a class="nav-link" href="building-apache-causeway.html">Building Apache Causeway</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="contributing.html">Contributing</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="documentation/about.html">Documentation</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="documentation/building-docs-and-website.html">Building Docs and Website</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="documentation/asciidoc-syntax.html">AsciiDoc Syntax</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="intellij/about.html">IntelliJ</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="eclipse/about.html">Eclipse</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="git/about.html">Git Cookbook</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Contributors&#x27; Guide</span>
<span class="version">4.0.0-M1</span>
</div>
<ul class="components">
<li class="component">
<span class="title"> </span>
<ul class="versions">
<li class="version">
<a href="../../docs/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../docs/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../docs/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../docs/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../docs/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../docs/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../docs/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../docs/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Committers' Guide</span>
<ul class="versions">
<li class="version">
<a href="../../comguide/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../comguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../comguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../comguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../comguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../comguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../comguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../comguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component is-current">
<span class="title">Contributors' Guide</span>
<ul class="versions">
<li class="version is-current">
<a href="about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Design Docs</span>
<ul class="versions">
<li class="version">
<a href="../../core/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../core/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../core/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../core/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../core/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../core/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../core/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../core/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Extensions</span>
<ul class="versions">
<li class="version">
<a href="../../extensions/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../extensions/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../extensions/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../extensions/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../extensions/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../extensions/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../extensions/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../extensions/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">GraphQL Viewer</span>
<ul class="versions">
<li class="version">
<a href="../../gqlv/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../gqlv/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../gqlv/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../gqlv/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Incubator Catalog</span>
<ul class="versions">
<li class="version">
<a href="../../incubator/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../incubator/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../incubator/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../incubator/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../incubator/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../incubator/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../incubator/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../incubator/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JDO/DataNucleus</span>
<ul class="versions">
<li class="version">
<a href="../../pjdo/latest/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../pjdo/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../pjdo/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JPA</span>
<ul class="versions">
<li class="version">
<a href="../../pjpa/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../pjpa/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../pjpa/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../pjpa/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">QueryDSL</span>
<ul class="versions">
<li class="version">
<a href="../../querydsl/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../querydsl/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../querydsl/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../querydsl/3.2.0/about.html">3.2.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Reference Guide</span>
<ul class="versions">
<li class="version">
<a href="../../refguide/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../refguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../refguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../refguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../refguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../refguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../refguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../refguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">regressiontests</span>
<ul class="versions">
<li class="version">
<a href="../../regressiontests/latest/index.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../regressiontests/3.4.0/index.html">3.4.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.3.0/index.html">3.3.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.2.0/index.html">3.2.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.1.0/index.html">3.1.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.0.0/index.html">3.0.0</a>
</li>
<li class="version">
<a href="../../regressiontests/2.1.0/index.html">2.1.0</a>
</li>
<li class="version">
<a href="../../regressiontests/2.0.0/index.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Release Notes</span>
<ul class="versions">
<li class="version">
<a href="../../relnotes/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../relnotes/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../relnotes/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../relnotes/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">REST API (Restful Objects Viewer)</span>
<ul class="versions">
<li class="version">
<a href="../../vro/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../vro/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../vro/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../vro/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../vro/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../vro/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../vro/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../vro/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Security Guide</span>
<ul class="versions">
<li class="version">
<a href="../../security/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../security/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../security/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../security/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../security/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../security/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../security/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../security/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Setup Guide</span>
<ul class="versions">
<li class="version">
<a href="../../setupguide/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../setupguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../setupguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../setupguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Testing Guide</span>
<ul class="versions">
<li class="version">
<a href="../../testing/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../testing/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../testing/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../testing/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../testing/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../testing/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../testing/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../testing/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Tutorials</span>
<ul class="versions">
<li class="version">
<a href="../../tutorials/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../tutorials/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../tutorials/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../tutorials/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">User Guide</span>
<ul class="versions">
<li class="version">
<a href="../../userguide/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../userguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../userguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../userguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../userguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../userguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../userguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../userguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Value Types Catalog</span>
<ul class="versions">
<li class="version">
<a href="../../valuetypes/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../valuetypes/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../valuetypes/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../valuetypes/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Web UI (Wicket Viewer)</span>
<ul class="versions">
<li class="version">
<a href="../../vw/latest/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../vw/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../vw/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../vw/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../vw/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../vw/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../vw/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../vw/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main role="main">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../docs/latest/about.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="about.html">Contributors' Guide</a></li>
<li><a href="building-apache-causeway.html">Building Apache Causeway</a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="Show other versions of page">4.0.0-M1</button>
<div class="version-menu">
<a class="version is-current" href="building-apache-causeway.html">4.0.0-M1</a>
<a class="version" href="../3.4.0/building-apache-causeway.html">3.4.0</a>
<a class="version" href="../3.3.0/building-apache-causeway.html">3.3.0</a>
<a class="version" href="../3.2.0/building-apache-causeway.html">3.2.0</a>
<a class="version" href="../3.1.0/building-apache-causeway.html">3.1.0</a>
<a class="version" href="../3.0.0/building-apache-causeway.html">3.0.0</a>
<a class="version" href="../2.1.0/building-apache-causeway.html">2.1.0</a>
<a class="version" href="../2.0.0/building-apache-causeway.html">2.0.0</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/apache/causeway/edit/4.0.0-M1/antora/components/conguide/modules/ROOT/pages/building-apache-causeway.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">Building Apache Causeway</h1>
<div class="sect1">
<h2 id="tldr"><a class="anchor" href="#tldr"></a>TL;DR</h2>
<div class="sectionbody">
<div class="paragraph">
<p>From the root project root run:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn clean install</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="git"><a class="anchor" href="#git"></a>Git</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Apache Causeway source code lives in a git repo.</p>
</div>
<div class="sect2">
<h3 id="installation"><a class="anchor" href="#installation"></a>Installation</h3>
<div class="paragraph">
<p>The easiest place to get hold of command-line git is probably the <a href="http://git-scm.com/downloads">github download page</a>.</p>
</div>
<div class="paragraph">
<p>On Windows, this also installs the rather good mSysGit Unix shell.
We recommend that you enable git for both the mSysgit and the Windows command prompt:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="_images/building-apache-causeway/setting-up-git.png" alt="setting up git" width="350px">
</div>
</div>
<div class="paragraph">
<p>Once git is installed, the two main command line tools to note are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>git</code> command line tool</p>
</li>
<li>
<p><code>gitk</code> for viewing the commit history</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>If using Windows, note that github also have a dedicated <a href="https://help.github.com/articles/set-up-git">Windows client</a>.
With a little <a href="http://haacked.com/archive/2012/05/30/using-github-for-windows-with-non-github-repositories.aspx">hacking around</a>, it can also be made to work with non-github repositories.</p>
</div>
<div class="paragraph">
<p>If using Mac, you might also want to check out Atlassian&#8217;s <a href="http://www.atlassian.com/software/sourcetree/overview">Sourcetree</a>.</p>
</div>
<div class="sect3">
<h4 id="cloning-the-apache-causeway-repo"><a class="anchor" href="#cloning-the-apache-causeway-repo"></a>Cloning the Apache Causeway repo</h4>
<div class="paragraph">
<p>First, clone the Apache Causeway repo:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git clone https://github.com/apache/causeway.git</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="configuring-git"><a class="anchor" href="#configuring-git"></a>Configuring Git</h4>
<div class="paragraph">
<p>Next up is to configure your user name and password:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git config user.name "<em>My Name Here</em>"
git config user.email <em>myusername@apache.org</em></code></pre>
</div>
</div>
<div class="paragraph">
<p>Next, configure the <code>core.autocrlf</code> so that line endings are normalized to LF (Unix style) in the rep; again see <a href="https://git-wip-us.apache.org/">Apache&#8217;s git</a> page:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>on Windows, use:<br></p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git config core.autocrlf true</code></pre>
</div>
</div>
</li>
<li>
<p>on Mac/Linux, use:<br></p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git config core.autocrlf input</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>The Windows setting means that files are converted back to CRLF on checkout; the Mac/Linux setting means that the file is left as LF on checkout.</p>
</div>
<div class="paragraph">
<p>We also recommend setting <code>core.safecrlf</code>, which aims to ensure that any line ending conversion is repeatable.
Do this on all platforms:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git config core.safecrlf true</code></pre>
</div>
</div>
<div class="paragraph">
<p>Note that these settings are supplemented in the repo by the <code>.gitattributes</code> file and that explicitly specifies line handling treatment for most of the common file types that we have.</p>
</div>
<div class="paragraph">
<p>Next, we recommend you setup this a refspec so that you can distinguish remote tags from local ones.
To do that, locate the <code>[remote &quot;origin&quot;]</code> section in your <code>.git/config</code> and add the third entry shown below:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">[remote "origin"]
url = ... whatever ...
fetch = ... whatever ...
fetch = +refs/tags/*:refs/tags/origin/*</code></pre>
</div>
</div>
<div class="paragraph">
<p>This will ensure that a <code>git fetch</code> or <code>git pull</code> places any remote tags under <code>origin/xxx</code>.
For example, the <code>causeway-1.0.0</code> tag on the origin will appear under <code>origin/causeway-1.0.0</code>.</p>
</div>
<div class="paragraph">
<p>If you don&#8217;t use git outside of Apache, you can add the <code>--global</code> flag so that the above settings apply for all repos managed by git on your PC.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="getting-help"><a class="anchor" href="#getting-help"></a>Getting help</h3>
<div class="paragraph">
<p>Three commands of git that in particular worth knowing:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>git help <em>command</em></code><br></p>
<div class="paragraph">
<p>will open the man page in your web browser</p>
</div>
</li>
<li>
<p><code>git gui</code><br></p>
<div class="paragraph">
<p>will open up a basic GUI client to staging changes and making commits.</p>
</div>
</li>
<li>
<p><code>gitk --all</code><br></p>
<div class="paragraph">
<p>will open the commit history for all branches.
In particular, you should be able to see the local <code>main</code>, which branch you are working on (the <code>HEAD</code>), and also the last known position of the <code>main</code> branch from the central repo, called <code>origin/main</code>.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>You might also want to explore using a freely available equivalent such as <a href="https://www.sourcetreeapp.com/">Atlassian SourceTree</a>.</p>
</div>
<div class="paragraph">
<p>For further reading, see:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html">git config man page</a></p>
</li>
<li>
<p><a href="http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html">.gitattributes man page</a></p>
</li>
<li>
<p><a href="http://git-scm.com/docs/gitattributes">.gitattributes git-scm.com docs</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="installing-java"><a class="anchor" href="#installing-java"></a>Installing Java</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Apache Causeway v2 is compatible with Java 11 and above, and releases are <a href="../../comguide/latest/cutting-a-release.html" class="xref page">cut</a> using Java 11, leveraging the <a href="http://maven.apache.org/plugins/maven-toolchains-plugin/">Maven toolchains plugin</a>).</p>
</div>
<div class="paragraph">
<p>Therefore install Java 11 JDK or newer.
Note that the JRE is <em>not</em> sufficient.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
<div class="paragraph">
<p>If you intend to contribute back patches to Apache Causeway, note that while you can develop using Java 11 or above within your IDE, be sure not to use any APIs more recent than Java 11.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="installing-maven"><a class="anchor" href="#installing-maven"></a>Installing Maven</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Install Maven 3.6.3 or later, downloadable <a href="http://maven.apache.org/download.html">here</a>.</p>
</div>
<div class="paragraph">
<p>Set <code>MAVEN_OPTS</code> environment variable:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">export MAVEN_OPTS="-Xms512m -Xmx1024m"</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="building-apache-causeway-2"><a class="anchor" href="#building-apache-causeway-2"></a>Building Apache Causeway</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To build the source code from the command line, simply go to the root directory and type:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn clean install</code></pre>
</div>
</div>
<div class="paragraph">
<p>The first time you do this, you&#8217;ll find it takes a while since Maven needs to download all of the Apache Causeway prerequisites.</p>
</div>
<div class="paragraph">
<p>Thereafter you can speed up the build by adding the <code>-o</code> (offline flag).
To save more time still, we also recommend that you build in parallel.
(Per this <a href="http://zeroturnaround.com/rebellabs/your-maven-build-is-slow-speed-it-up/">blog post</a>), you could also experiment with a number of JDK parameters that we&#8217;ve found also speed up Maven:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">export MAVEN_OPTS="-Xms512m -Xmx1024m -XX:+TieredCompilation -XX:TieredStopAtLevel=1"
mvn clean install -o -T1C</code></pre>
</div>
</div>
<div class="paragraph">
<p>For the most part, though, you may want to rely on an IDE such as Eclipse to build the codebase for you.
Both Eclipse and Idea (12.0+) support incremental background compilation.</p>
</div>
<div class="paragraph">
<p>When using Eclipse, a Maven profile is configured such that Eclipse compiles to <code>target-ide</code> directory rather than the usual <code>target</code> directory.
You can therefore switch between Eclipse and Maven command line without one interfering with the other.</p>
</div>
<div class="sect2">
<h3 id="additional-build-profiles"><a class="anchor" href="#additional-build-profiles"></a>Additional Build Profiles</h3>
<div class="paragraph">
<p>Additional artifacts can be selected for inclusion with the build:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn clean install -Dmodule-xxx -Dmodule-yyy ...</code></pre>
</div>
</div>
<div class="paragraph">
<p>where <code>module-xxx</code> and <code>module-yyy</code> correspond to profile names, as provided with the root <code>pom.xml</code>.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 1. Custom Build Profiles</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 66.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Profile Name</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-all</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All Apache Causeway Modules</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-antora</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Official Project Documentation</p>
<p class="tableblock">Note that this also includes the Restful Objects and GraphQL viewers.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-incubator-all</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">All Incubation Modules</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-incubator-graphql</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The GraphQL Viewer</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-incubator-javafx</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The JavaFX Viewer (version 3+ only)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-incubator-kroviz</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">The Kroviz Client (standalone viewer, version 3+ only)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>module-regressiontests</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Regression Tests (for the CI pipelines)</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>You can also skip building the "essential" modules that are released, by adding the <code>-Dskip.essential</code>.
For example, to just build the xxx module, use:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn clean install -Dmodule-xxx -Dskip.essential</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="checking-for-vulnerabilities"><a class="anchor" href="#checking-for-vulnerabilities"></a>Checking for Vulnerabilities</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Apache Causeway configures the <a href="https://www.owasp.org/index.php/Main_Page">OWASP</a> <a href="https://www.owasp.org/index.php/OWASP_Dependency_Check">dependency check</a> <a href="http://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html">Maven plugin</a> to determine whether the framework uses libraries that are known to have security vulnerabilities.</p>
</div>
<div class="paragraph">
<p>To check, run:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn org.owasp:dependency-check-maven:aggregate -Dowasp</code></pre>
</div>
</div>
<div class="paragraph">
<p>This will generate a single report under <code>target/dependency-check-report.html</code>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>The first time this runs can take 10~20 minutes to download the NVD data feeds.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>To disable, either run in offline mode (add <code>-o</code> or <code>--offline</code>) or omit the <code>owasp</code> property.</p>
</div>
</div>
</div>
</article>
<aside class="article-aside toc hide-for-print" role="navigation">
<p class="toc-title">On this page</p>
<div id="article-toc"></div>
</aside>
</main>
</div>
<footer class="footer">
<div class="content">
<div class="copyright">
<p>
Copyright © 2010~2024 The Apache Software Foundation, licensed under the Apache License, v2.0.
<br/>
Apache, the Apache feather logo, Apache Causeway, and the Apache Causeway project logo are all trademarks of The Apache Software Foundation.
</p>
</div>
<div class="revision">
<p>Revision: build-website.20251019-2317</p>
</div>
</div>
</footer>
<script src="../../_/js/site.js"></script>
<script async src="../../_/js/vendor/highlight.js"></script>
<script src="../../_/js/vendor/jquery-3.4.1.min.js"></script>
<script src="../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script>
<script src="../../_/js/vendor/jquery.tocify.min.js"></script>
<script>
$(function() {
$("#article-toc").tocify( {
showEffect: "slideDown",
hashGenerator: "pretty",
hideEffect: "slideUp",
selectors: "h2, h3",
scrollTo: 120,
smoothScroll: true,
theme: "jqueryui",
highlightOnScroll: true
} );
});
</script>
<script src="../../_/js/vendor/docsearch.min.js"></script>
<script>
function focusSearchInput () { document.querySelector('#algolia-search-input').focus() }
var search = docsearch({
appId: '5ISP5TFAEN',
apiKey: '0fc51c28b4ad46e7318e96d4e97fab7c',
indexName: 'causeway-apache-org',
inputSelector: '#algolia-search-input',
autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
debug: false,
}).autocomplete
search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
focusSearchInput()
window.addEventListener('load', focusSearchInput);
</script>
<!--
docsearch options:
https://docsearch.algolia.com/docs/behavior/
-->
<!--
https://www.algolia.com/doc/api-reference/api-parameters/
algoliaOptions: { hitsPerPage: 6 },
-->
</body>
</html>