mirror of
https://git.gay/pyrox/aux-docs
synced 2024-11-23 09:37:56 +00:00
3294 lines
88 KiB
HTML
3294 lines
88 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
<meta name="description" content="Aux Documentation">
|
||
|
||
|
||
<meta name="author" content="Nixpkgs Aux, and Lix Contributors">
|
||
|
||
|
||
<link rel="canonical" href="https://docs.auxolotl.org/Nixpkgs/Languages-And-Frameworks/maven.section/">
|
||
|
||
|
||
<link rel="prev" href="../lua.section/">
|
||
|
||
|
||
<link rel="next" href="../nim.section/">
|
||
|
||
|
||
<link rel="icon" href="../../../assets/aux-logo.svg">
|
||
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
|
||
|
||
|
||
|
||
<title>Maven - Aux Docs</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../../../assets/stylesheets/main.76a95c52.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.bunny.net/css?family=IBM+Plex+Sans:300,300i,400,400i,700,700i%7CIBM+Plex+Mono:400,400i,700,700i&display=fallback">
|
||
<style>:root{--md-text-font:"IBM Plex Sans";--md-code-font:"IBM Plex Mono"}</style>
|
||
|
||
|
||
|
||
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:type" content="website" >
|
||
|
||
<meta property="og:title" content="Maven {#maven} - Aux Docs" >
|
||
|
||
<meta property="og:description" content="Aux Documentation" >
|
||
|
||
<meta property="og:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Languages-And-Frameworks/maven.section.png" >
|
||
|
||
<meta property="og:image:type" content="image/png" >
|
||
|
||
<meta property="og:image:width" content="1200" >
|
||
|
||
<meta property="og:image:height" content="630" >
|
||
|
||
<meta property="og:url" content="https://docs.auxolotl.org/Nixpkgs/Languages-And-Frameworks/maven.section/" >
|
||
|
||
<meta name="twitter:card" content="summary_large_image" >
|
||
|
||
<meta name="twitter:title" content="Maven {#maven} - Aux Docs" >
|
||
|
||
<meta name="twitter:description" content="Aux Documentation" >
|
||
|
||
<meta name="twitter:image" content="https://docs.auxolotl.org/assets/images/social/Nixpkgs/Languages-And-Frameworks/maven.section.png" >
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#maven" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<header class="md-header" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
<a href="../../.." title="Aux Docs" class="md-header__button md-logo" aria-label="Aux Docs" data-md-component="logo">
|
||
|
||
<img src="../../../assets/aux-logo.svg" alt="logo">
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Aux Docs
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
Maven
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<form class="md-header__option" data-md-component="palette">
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Dark Mode" type="radio" name="__palette" id="__palette_0">
|
||
|
||
<label class="md-header__button md-icon" title="Dark Mode" for="__palette_1" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
|
||
</label>
|
||
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Light Mode" type="radio" name="__palette" id="__palette_1">
|
||
|
||
<label class="md-header__button md-icon" title="Light Mode" for="__palette_0" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
|
||
</label>
|
||
|
||
|
||
</form>
|
||
|
||
|
||
|
||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||
</label>
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="Search">
|
||
|
||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list" role="presentation"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-header__source">
|
||
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
auxolotl/docs
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
|
||
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
||
<div class="md-grid">
|
||
<ul class="md-tabs__list">
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../.." class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Aux Documentation Hub
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../../TODO/" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
TODO
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../../Aux/" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Aux
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../../Lix/" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Lix
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../../NixOS/appstream/" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
NixOS
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item md-tabs__item--active">
|
||
<a href="../../" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Nixpkgs
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href="../../.." title="Aux Docs" class="md-nav__button md-logo" aria-label="Aux Docs" data-md-component="logo">
|
||
|
||
<img src="../../../assets/aux-logo.svg" alt="logo">
|
||
|
||
</a>
|
||
Aux Docs
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
auxolotl/docs
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../.." class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Aux Documentation Hub
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../../TODO/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
TODO
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../../Aux/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Aux
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../../Lix/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Lix
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../../NixOS/appstream/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
NixOS
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
|
||
|
||
|
||
|
||
<div class="md-nav__link md-nav__container">
|
||
<a href="../../" class="md-nav__link ">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Nixpkgs
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
</div>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Nixpkgs
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../options/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Options
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Build-Helpers/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Build Helpers
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Development/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Development
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Functions/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Functions
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Hooks/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Hooks
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_7" checked>
|
||
|
||
|
||
|
||
<div class="md-nav__link md-nav__container">
|
||
<a href="../" class="md-nav__link ">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Languages And Frameworks
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
<label class="md-nav__link " for="__nav_6_7" id="__nav_6_7_label" tabindex="0">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
</div>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_7_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_6_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Languages And Frameworks
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../agda.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Agda
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../android.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Android
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../beam.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
BEAM Languages (Erlang, Elixir & LFE)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../bower.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Bower
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../chicken.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
CHICKEN
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../coq.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Coq and coq packages
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../crystal.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Crystal
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../cuda.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
CUDA
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../cuelang.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Cue (Cuelang)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dart.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Dart
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dhall.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Dhall
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dlang.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
D (Dlang)
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Dotnet
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../emscripten.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Emscripten
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../gnome.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
GNOME
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../go.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Go
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../gradle.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Gradle
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../hare.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Hare
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../haskell.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Haskell
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../hy.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Hy
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../idris.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Idris
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../idris2.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Idris2
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../ios.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
iOS
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Javascript
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../julia.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Julia
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../lisp.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
lisp-modules
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../lua.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Lua
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Maven
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="./" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Maven
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#maven-buildmavenpackage" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Building a package using maven.buildMavenPackage
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Building a package using maven.buildMavenPackage">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#stable-maven-plugins" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Stable Maven plugins
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#maven-mvn2nix" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Manually using mvn2nix
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Manually using mvn2nix">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#solving-for-dependencies" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Solving for dependencies
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Solving for dependencies">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#buildmaven-with-nixosmvn2nix-maven-plugin" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
buildMaven with NixOS/mvn2nix-maven-plugin
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#double-invocation" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Double Invocation
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#building-a-jar" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Building a JAR
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#runnable-jar" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Runnable JAR
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Runnable JAR">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#classpath" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
CLASSPATH
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#manifest-file-via-maven-plugin" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
MANIFEST file via Maven Plugin
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../nim.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Nim
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../ocaml.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
OCaml
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../octave.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Octave
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../perl.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Perl
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PHP
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../pkg-config.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
pkg-config
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../python.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Python
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../qt.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Qt
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../r.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
R
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../ruby.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Ruby
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rust.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Rust
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../scheme.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Scheme
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../swift.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Swift
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../texlive.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
TeX Live
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../titanium.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Titanium
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../vim.section/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Vim
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Library-Reference/asserts/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Library Reference
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Module-System/module-system.chapter/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Module System
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Packages/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Packages
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Standard-Environment/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Standard Environment
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
|
||
|
||
|
||
|
||
|
||
<a href="../../Using-Nixpkgs/" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Using Nixpkgs
|
||
</span>
|
||
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#maven-buildmavenpackage" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Building a package using maven.buildMavenPackage
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Building a package using maven.buildMavenPackage">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#stable-maven-plugins" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Stable Maven plugins
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#maven-mvn2nix" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Manually using mvn2nix
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Manually using mvn2nix">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#solving-for-dependencies" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Solving for dependencies
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Solving for dependencies">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#buildmaven-with-nixosmvn2nix-maven-plugin" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
buildMaven with NixOS/mvn2nix-maven-plugin
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#double-invocation" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Double Invocation
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#building-a-jar" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Building a JAR
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#runnable-jar" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Runnable JAR
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Runnable JAR">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#classpath" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
CLASSPATH
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#manifest-file-via-maven-plugin" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
MANIFEST file via Maven Plugin
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
|
||
<h1 id="maven">Maven</h1>
|
||
<p>Maven is a well-known build tool for the Java ecosystem however it has some challenges when integrating into the Nix build system.</p>
|
||
<p>The following provides a list of common patterns with how to package a Maven project (or any JVM language that can export to Maven) as a Nix package.</p>
|
||
<h2 id="maven-buildmavenpackage">Building a package using <code>maven.buildMavenPackage</code></h2>
|
||
<p>Consider the following package:</p>
|
||
<div class="highlight"><pre><span></span><code><span class="p">{</span> lib<span class="p">,</span> fetchFromGitHub<span class="p">,</span> jre<span class="p">,</span> makeWrapper<span class="p">,</span> maven <span class="p">}:</span>
|
||
|
||
maven<span class="o">.</span>buildMavenPackage <span class="k">rec</span> <span class="p">{</span>
|
||
<span class="ss">pname</span> <span class="o">=</span> <span class="s2">"jd-cli"</span><span class="p">;</span>
|
||
<span class="ss">version</span> <span class="o">=</span> <span class="s2">"1.2.1"</span><span class="p">;</span>
|
||
|
||
<span class="ss">src</span> <span class="o">=</span> fetchFromGitHub <span class="p">{</span>
|
||
<span class="ss">owner</span> <span class="o">=</span> <span class="s2">"intoolswetrust"</span><span class="p">;</span>
|
||
<span class="ss">repo</span> <span class="o">=</span> pname<span class="p">;</span>
|
||
<span class="ss">rev</span> <span class="o">=</span> <span class="s2">"</span><span class="si">${</span>pname<span class="si">}</span><span class="s2">-</span><span class="si">${</span>version<span class="si">}</span><span class="s2">"</span><span class="p">;</span>
|
||
<span class="ss">hash</span> <span class="o">=</span> <span class="s2">"sha256-rRttA5H0A0c44loBzbKH7Waoted3IsOgxGCD2VM0U/Q="</span><span class="p">;</span>
|
||
<span class="p">};</span>
|
||
|
||
<span class="ss">mvnHash</span> <span class="o">=</span> <span class="s2">"sha256-kLpjMj05uC94/5vGMwMlFzLKNFOKeyNvq/vmB6pHTAo="</span><span class="p">;</span>
|
||
|
||
<span class="ss">nativeBuildInputs</span> <span class="o">=</span> <span class="p">[</span> makeWrapper <span class="p">];</span>
|
||
|
||
<span class="ss">installPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> mkdir -p $out/bin $out/share/jd-cli</span>
|
||
<span class="s s-Multiline"> install -Dm644 jd-cli/target/jd-cli.jar $out/share/jd-cli</span>
|
||
|
||
<span class="s s-Multiline"> makeWrapper </span><span class="si">${</span>jre<span class="si">}</span><span class="s s-Multiline">/bin/java $out/bin/jd-cli \</span>
|
||
<span class="s s-Multiline"> --add-flags "-jar $out/share/jd-cli/jd-cli.jar"</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
||
<span class="ss">meta</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="ss">description</span> <span class="o">=</span> <span class="s2">"Simple command line wrapper around JD Core Java Decompiler project"</span><span class="p">;</span>
|
||
<span class="ss">homepage</span> <span class="o">=</span> <span class="s2">"https://github.com/intoolswetrust/jd-cli"</span><span class="p">;</span>
|
||
<span class="ss">license</span> <span class="o">=</span> lib<span class="o">.</span>licenses<span class="o">.</span>gpl3Plus<span class="p">;</span>
|
||
<span class="ss">maintainers</span> <span class="o">=</span> <span class="k">with</span> lib<span class="o">.</span>maintainers<span class="p">;</span> <span class="p">[</span> majiir <span class="p">];</span>
|
||
<span class="p">};</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
<p>This package calls <code>maven.buildMavenPackage</code> to do its work. The primary difference from <code>stdenv.mkDerivation</code> is the <code>mvnHash</code> variable, which is a hash of all of the Maven dependencies.</p>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title">Tip</p>
|
||
<p>After setting <code>maven.buildMavenPackage</code>, we then do standard Java <code>.jar</code> installation by saving the <code>.jar</code> to <code>$out/share/java</code> and then making a wrapper which allows executing that file; see <a href="#sec-language-java"></a> for additional generic information about packaging Java applications.</p>
|
||
</div>
|
||
<h3 id="stable-maven-plugins">Stable Maven plugins</h3>
|
||
<p>Maven defines default versions for its core plugins, e.g. <code>maven-compiler-plugin</code>. If your project does not override these versions, an upgrade of Maven will change the version of the used plugins, and therefore the derivation and hash.</p>
|
||
<p>When <code>maven</code> is upgraded, <code>mvnHash</code> for the derivation must be updated as well: otherwise, the project will be built on the derivation of old plugins, and fail because the requested plugins are missing.</p>
|
||
<p>This clearly prevents automatic upgrades of Maven: a manual effort must be made throughout nixpkgs by any maintainer wishing to push the upgrades.</p>
|
||
<p>To make sure that your package does not add extra manual effort when upgrading Maven, explicitly define versions for all plugins. You can check if this is the case by adding the following plugin to your (parent) POM:</p>
|
||
<div class="highlight"><pre><span></span><code><span class="nt"><plugin></span>
|
||
<span class="w"> </span><span class="nt"><groupId></span>org.apache.maven.plugins<span class="nt"></groupId></span>
|
||
<span class="w"> </span><span class="nt"><artifactId></span>maven-enforcer-plugin<span class="nt"></artifactId></span>
|
||
<span class="w"> </span><span class="nt"><version></span>3.3.0<span class="nt"></version></span>
|
||
<span class="w"> </span><span class="nt"><executions></span>
|
||
<span class="w"> </span><span class="nt"><execution></span>
|
||
<span class="w"> </span><span class="nt"><id></span>enforce-plugin-versions<span class="nt"></id></span>
|
||
<span class="w"> </span><span class="nt"><goals></span>
|
||
<span class="w"> </span><span class="nt"><goal></span>enforce<span class="nt"></goal></span>
|
||
<span class="w"> </span><span class="nt"></goals></span>
|
||
<span class="w"> </span><span class="nt"><configuration></span>
|
||
<span class="w"> </span><span class="nt"><rules></span>
|
||
<span class="w"> </span><span class="nt"><requirePluginVersions</span><span class="w"> </span><span class="nt">/></span>
|
||
<span class="w"> </span><span class="nt"></rules></span>
|
||
<span class="w"> </span><span class="nt"></configuration></span>
|
||
<span class="w"> </span><span class="nt"></execution></span>
|
||
<span class="w"> </span><span class="nt"></executions></span>
|
||
<span class="nt"></plugin></span>
|
||
</code></pre></div>
|
||
<h2 id="maven-mvn2nix">Manually using <code>mvn2nix</code></h2>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>This way is no longer recommended; see <a href="#maven-buildmavenpackage"></a> for the simpler and preferred way.</p>
|
||
</div>
|
||
<p>For the purposes of this example let's consider a very basic Maven project with the following <code>pom.xml</code> with a single dependency on <a href="https://github.com/vdurmont/emoji-java">emoji-java</a>.</p>
|
||
<div class="highlight"><pre><span></span><code><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
|
||
<span class="nt"><project</span><span class="w"> </span><span class="na">xmlns=</span><span class="s">"http://maven.apache.org/POM/4.0.0"</span><span class="w"> </span><span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span>
|
||
<span class="w"> </span><span class="na">xsi:schemaLocation=</span><span class="s">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span><span class="nt">></span>
|
||
<span class="w"> </span><span class="nt"><modelVersion></span>4.0.0<span class="nt"></modelVersion></span>
|
||
<span class="w"> </span><span class="nt"><groupId></span>io.github.fzakaria<span class="nt"></groupId></span>
|
||
<span class="w"> </span><span class="nt"><artifactId></span>maven-demo<span class="nt"></artifactId></span>
|
||
<span class="w"> </span><span class="nt"><version></span>1.0<span class="nt"></version></span>
|
||
<span class="w"> </span><span class="nt"><packaging></span>jar<span class="nt"></packaging></span>
|
||
<span class="w"> </span><span class="nt"><name></span>NixOS<span class="w"> </span>Maven<span class="w"> </span>Demo<span class="nt"></name></span>
|
||
|
||
<span class="w"> </span><span class="nt"><dependencies></span>
|
||
<span class="w"> </span><span class="nt"><dependency></span>
|
||
<span class="w"> </span><span class="nt"><groupId></span>com.vdurmont<span class="nt"></groupId></span>
|
||
<span class="w"> </span><span class="nt"><artifactId></span>emoji-java<span class="nt"></artifactId></span>
|
||
<span class="w"> </span><span class="nt"><version></span>5.1.1<span class="nt"></version></span>
|
||
<span class="w"> </span><span class="nt"></dependency></span>
|
||
<span class="w"> </span><span class="nt"></dependencies></span>
|
||
<span class="nt"></project></span>
|
||
</code></pre></div>
|
||
<p>Our main class file will be very simple:</p>
|
||
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">com.vdurmont.emoji.EmojiParser</span><span class="p">;</span>
|
||
|
||
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Main</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"NixOS :grinning: is super cool :smiley:!"</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">EmojiParser</span><span class="p">.</span><span class="na">parseToUnicode</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">result</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
<p>You find this demo project at <a href="https://github.com/fzakaria/nixos-maven-example">https://github.com/fzakaria/nixos-maven-example</a>.</p>
|
||
<h3 id="solving-for-dependencies">Solving for dependencies</h3>
|
||
<h4 id="buildmaven-with-nixosmvn2nix-maven-plugin">buildMaven with NixOS/mvn2nix-maven-plugin</h4>
|
||
<p><code>buildMaven</code> is an alternative method that tries to follow similar patterns of other programming languages by generating a lock file. It relies on the maven plugin <a href="https://github.com/NixOS/mvn2nix-maven-plugin">mvn2nix-maven-plugin</a>.</p>
|
||
<p>First you generate a <code>project-info.json</code> file using the maven plugin.</p>
|
||
<blockquote>
|
||
<p>This should be executed in the project's source repository or be told which <code>pom.xml</code> to execute with.</p>
|
||
</blockquote>
|
||
<div class="highlight"><pre><span></span><code><span class="c1"># run this step within the project's source repository</span>
|
||
❯<span class="w"> </span>mvn<span class="w"> </span>org.nixos.mvn2nix:mvn2nix-maven-plugin:mvn2nix
|
||
|
||
❯<span class="w"> </span>cat<span class="w"> </span>project-info.json<span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="p">|</span><span class="w"> </span>head
|
||
<span class="o">{</span>
|
||
<span class="w"> </span><span class="s2">"project"</span>:<span class="w"> </span><span class="o">{</span>
|
||
<span class="w"> </span><span class="s2">"artifactId"</span>:<span class="w"> </span><span class="s2">"maven-demo"</span>,
|
||
<span class="w"> </span><span class="s2">"groupId"</span>:<span class="w"> </span><span class="s2">"org.nixos"</span>,
|
||
<span class="w"> </span><span class="s2">"version"</span>:<span class="w"> </span><span class="s2">"1.0"</span>,
|
||
<span class="w"> </span><span class="s2">"classifier"</span>:<span class="w"> </span><span class="s2">""</span>,
|
||
<span class="w"> </span><span class="s2">"extension"</span>:<span class="w"> </span><span class="s2">"jar"</span>,
|
||
<span class="w"> </span><span class="s2">"dependencies"</span>:<span class="w"> </span><span class="o">[</span>
|
||
<span class="w"> </span><span class="o">{</span>
|
||
<span class="w"> </span><span class="s2">"artifactId"</span>:<span class="w"> </span><span class="s2">"maven-resources-plugin"</span>,
|
||
</code></pre></div>
|
||
<p>This file is then given to the <code>buildMaven</code> function, and it returns 2 attributes.</p>
|
||
<p><strong><code>repo</code></strong>:
|
||
A Maven repository that is a symlink farm of all the dependencies found in the <code>project-info.json</code></p>
|
||
<p><strong><code>build</code></strong>:
|
||
A simple derivation that runs through <code>mvn compile</code> & <code>mvn package</code> to build the JAR. You may use this as inspiration for more complicated derivations.</p>
|
||
<p>Here is an <a href="https://github.com/fzakaria/nixos-maven-example/blob/main/build-maven-repository.nix">example</a> of building the Maven repository</p>
|
||
<div class="highlight"><pre><span></span><code><span class="p">{</span> pkgs <span class="o">?</span> <span class="nb">import</span> <span class="l"><nixpkgs></span> <span class="p">{</span> <span class="p">}</span> <span class="p">}:</span>
|
||
<span class="k">with</span> pkgs<span class="p">;</span>
|
||
<span class="p">(</span>buildMaven <span class="l">./project-info.json</span><span class="p">)</span><span class="o">.</span>repo
|
||
</code></pre></div>
|
||
<p>The benefit over the <em>double invocation</em> as we will see below, is that the <em>/nix/store</em> entry is a <em>linkFarm</em> of every package, so that changes to your dependency set doesn't involve downloading everything from scratch.</p>
|
||
<div class="highlight"><pre><span></span><code>❯<span class="w"> </span>tree<span class="w"> </span><span class="k">$(</span>nix-build<span class="w"> </span>--no-out-link<span class="w"> </span>build-maven-repository.nix<span class="k">)</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>head
|
||
/nix/store/g87va52nkc8jzbmi1aqdcf2f109r4dvn-maven-repository
|
||
├──<span class="w"> </span>antlr
|
||
│<span class="w"> </span>└──<span class="w"> </span>antlr
|
||
│<span class="w"> </span>└──<span class="w"> </span><span class="m">2</span>.7.2
|
||
│<span class="w"> </span>├──<span class="w"> </span>antlr-2.7.2.jar<span class="w"> </span>-><span class="w"> </span>/nix/store/d027c8f2cnmj5yrynpbq2s6wmc9cb559-antlr-2.7.2.jar
|
||
│<span class="w"> </span>└──<span class="w"> </span>antlr-2.7.2.pom<span class="w"> </span>-><span class="w"> </span>/nix/store/mv42fc5gizl8h5g5vpywz1nfiynmzgp2-antlr-2.7.2.pom
|
||
├──<span class="w"> </span>avalon-framework
|
||
│<span class="w"> </span>└──<span class="w"> </span>avalon-framework
|
||
│<span class="w"> </span>└──<span class="w"> </span><span class="m">4</span>.1.3
|
||
│<span class="w"> </span>├──<span class="w"> </span>avalon-framework-4.1.3.jar<span class="w"> </span>-><span class="w"> </span>/nix/store/iv5fp3955w3nq28ff9xfz86wvxbiw6n9-avalon-framework-4.1.3.jar
|
||
</code></pre></div>
|
||
<h4 id="double-invocation">Double Invocation</h4>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>This pattern is the simplest but may cause unnecessary rebuilds due to the output hash changing.</p>
|
||
</div>
|
||
<p>The double invocation is a <em>simple</em> way to get around the problem that <code>nix-build</code> may be sandboxed and have no Internet connectivity.</p>
|
||
<p>It treats the entire Maven repository as a single source to be downloaded, relying on Maven's dependency resolution to satisfy the output hash. This is similar to fetchers like <code>fetchgit</code>, except it has to run a Maven build to determine what to download.</p>
|
||
<p>The first step will be to build the Maven project as a fixed-output derivation in order to collect the Maven repository -- below is an <a href="https://github.com/fzakaria/nixos-maven-example/blob/main/double-invocation-repository.nix">example</a>.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Traditionally the Maven repository is at <code>~/.m2/repository</code>. We will override this to be the <code>$out</code> directory.</p>
|
||
</div>
|
||
<div class="highlight"><pre><span></span><code><span class="p">{</span> lib<span class="p">,</span> stdenv<span class="p">,</span> maven <span class="p">}:</span>
|
||
stdenv<span class="o">.</span>mkDerivation <span class="p">{</span>
|
||
<span class="ss">name</span> <span class="o">=</span> <span class="s2">"maven-repository"</span><span class="p">;</span>
|
||
<span class="ss">buildInputs</span> <span class="o">=</span> <span class="p">[</span> maven <span class="p">];</span>
|
||
<span class="ss">src</span> <span class="o">=</span> <span class="l">./.</span><span class="p">;</span> <span class="c1"># or fetchFromGitHub, cleanSourceWith, etc</span>
|
||
<span class="ss">buildPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> mvn package -Dmaven.repo.local=$out</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
||
<span class="c1"># keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside</span>
|
||
<span class="ss">installPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> find $out -type f \</span>
|
||
<span class="s s-Multiline"> -name \*.lastUpdated -or \</span>
|
||
<span class="s s-Multiline"> -name resolver-status.properties -or \</span>
|
||
<span class="s s-Multiline"> -name _remote.repositories \</span>
|
||
<span class="s s-Multiline"> -delete</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
||
<span class="c1"># don't do any fixup</span>
|
||
<span class="ss">dontFixup</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
|
||
<span class="ss">outputHashAlgo</span> <span class="o">=</span> <span class="s2">"sha256"</span><span class="p">;</span>
|
||
<span class="ss">outputHashMode</span> <span class="o">=</span> <span class="s2">"recursive"</span><span class="p">;</span>
|
||
<span class="c1"># replace this with the correct SHA256</span>
|
||
<span class="ss">outputHash</span> <span class="o">=</span> lib<span class="o">.</span>fakeSha256<span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
<p>The build will fail, and tell you the expected <code>outputHash</code> to place. When you've set the hash, the build will return with a <code>/nix/store</code> entry whose contents are the full Maven repository.</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>Some additional files are deleted that would cause the output hash to change potentially on subsequent runs.</p>
|
||
</div>
|
||
<div class="highlight"><pre><span></span><code>❯<span class="w"> </span>tree<span class="w"> </span><span class="k">$(</span>nix-build<span class="w"> </span>--no-out-link<span class="w"> </span>double-invocation-repository.nix<span class="k">)</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>head
|
||
/nix/store/8kicxzp98j68xyi9gl6jda67hp3c54fq-maven-repository
|
||
├──<span class="w"> </span>backport-util-concurrent
|
||
│<span class="w"> </span>└──<span class="w"> </span>backport-util-concurrent
|
||
│<span class="w"> </span>└──<span class="w"> </span><span class="m">3</span>.1
|
||
│<span class="w"> </span>├──<span class="w"> </span>backport-util-concurrent-3.1.pom
|
||
│<span class="w"> </span>└──<span class="w"> </span>backport-util-concurrent-3.1.pom.sha1
|
||
├──<span class="w"> </span>classworlds
|
||
│<span class="w"> </span>└──<span class="w"> </span>classworlds
|
||
│<span class="w"> </span>├──<span class="w"> </span><span class="m">1</span>.1
|
||
│<span class="w"> </span>│<span class="w"> </span>├──<span class="w"> </span>classworlds-1.1.jar
|
||
</code></pre></div>
|
||
<p>If your package uses <em>SNAPSHOT</em> dependencies or <em>version ranges</em>; there is a strong likelihood that over-time your output hash will change since the resolved dependencies may change. Hence this method is less recommended then using <code>buildMaven</code>.</p>
|
||
<h3 id="building-a-jar">Building a JAR</h3>
|
||
<p>Regardless of which strategy is chosen above, the step to build the derivation is the same.</p>
|
||
<div class="highlight"><pre><span></span><code><span class="p">{</span> stdenv<span class="p">,</span> maven<span class="p">,</span> callPackage <span class="p">}:</span>
|
||
<span class="c1"># pick a repository derivation, here we will use buildMaven</span>
|
||
<span class="k">let</span> <span class="ss">repository</span> <span class="o">=</span> callPackage <span class="l">./build-maven-repository.nix</span> <span class="p">{</span> <span class="p">};</span>
|
||
<span class="k">in</span> stdenv<span class="o">.</span>mkDerivation <span class="k">rec</span> <span class="p">{</span>
|
||
<span class="ss">pname</span> <span class="o">=</span> <span class="s2">"maven-demo"</span><span class="p">;</span>
|
||
<span class="ss">version</span> <span class="o">=</span> <span class="s2">"1.0"</span><span class="p">;</span>
|
||
|
||
<span class="ss">src</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>fetchTarball <span class="s2">"https://github.com/fzakaria/nixos-maven-example/archive/main.tar.gz"</span><span class="p">;</span>
|
||
<span class="ss">buildInputs</span> <span class="o">=</span> <span class="p">[</span> maven <span class="p">];</span>
|
||
|
||
<span class="ss">buildPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> echo "Using repository </span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline">"</span>
|
||
<span class="s s-Multiline"> mvn --offline -Dmaven.repo.local=</span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline"> package;</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
||
<span class="ss">installPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> install -Dm644 target/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline">-</span><span class="si">${</span>version<span class="si">}</span><span class="s s-Multiline">.jar $out/share/java</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title">Tip</p>
|
||
<p>We place the library in <code>$out/share/java</code> since JDK package has a <em>stdenv setup hook</em> that adds any JARs in the <code>share/java</code> directories of the build inputs to the CLASSPATH environment.</p>
|
||
</div>
|
||
<div class="highlight"><pre><span></span><code>❯<span class="w"> </span>tree<span class="w"> </span><span class="k">$(</span>nix-build<span class="w"> </span>--no-out-link<span class="w"> </span>build-jar.nix<span class="k">)</span>
|
||
/nix/store/7jw3xdfagkc2vw8wrsdv68qpsnrxgvky-maven-demo-1.0
|
||
└──<span class="w"> </span>share
|
||
<span class="w"> </span>└──<span class="w"> </span>java
|
||
<span class="w"> </span>└──<span class="w"> </span>maven-demo-1.0.jar
|
||
|
||
<span class="m">2</span><span class="w"> </span>directories,<span class="w"> </span><span class="m">1</span><span class="w"> </span>file
|
||
</code></pre></div>
|
||
<h3 id="runnable-jar">Runnable JAR</h3>
|
||
<p>The previous example builds a <code>jar</code> file but that's not a file one can run.</p>
|
||
<p>You need to use it with <code>java -jar $out/share/java/output.jar</code> and make sure to provide the required dependencies on the classpath.</p>
|
||
<p>The following explains how to use <code>makeWrapper</code> in order to make the derivation produce an executable that will run the JAR file you created.</p>
|
||
<p>We will use the same repository we built above (either <em>double invocation</em> or <em>buildMaven</em>) to setup a CLASSPATH for our JAR.</p>
|
||
<p>The following two methods are more suited to Nix then building an <a href="https://imagej.net/Uber-JAR">UberJar</a> which may be the more traditional approach.</p>
|
||
<h4 id="classpath">CLASSPATH</h4>
|
||
<p>This method is ideal if you are providing a derivation for <em>nixpkgs</em> and don't want to patch the project's <code>pom.xml</code>.</p>
|
||
<p>We will read the Maven repository and flatten it to a single list. This list will then be concatenated with the <em>CLASSPATH</em> separator to create the full classpath.</p>
|
||
<p>We make sure to provide this classpath to the <code>makeWrapper</code>.</p>
|
||
<div class="highlight"><pre><span></span><code><span class="p">{</span> stdenv<span class="p">,</span> maven<span class="p">,</span> callPackage<span class="p">,</span> makeWrapper<span class="p">,</span> jre <span class="p">}:</span>
|
||
<span class="k">let</span>
|
||
<span class="ss">repository</span> <span class="o">=</span> callPackage <span class="l">./build-maven-repository.nix</span> <span class="p">{</span> <span class="p">};</span>
|
||
<span class="k">in</span> stdenv<span class="o">.</span>mkDerivation <span class="k">rec</span> <span class="p">{</span>
|
||
<span class="ss">pname</span> <span class="o">=</span> <span class="s2">"maven-demo"</span><span class="p">;</span>
|
||
<span class="ss">version</span> <span class="o">=</span> <span class="s2">"1.0"</span><span class="p">;</span>
|
||
|
||
<span class="ss">src</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>fetchTarball
|
||
<span class="s2">"https://github.com/fzakaria/nixos-maven-example/archive/main.tar.gz"</span><span class="p">;</span>
|
||
<span class="ss">nativeBuildInputs</span> <span class="o">=</span> <span class="p">[</span> makeWrapper <span class="p">];</span>
|
||
<span class="ss">buildInputs</span> <span class="o">=</span> <span class="p">[</span> maven <span class="p">];</span>
|
||
|
||
<span class="ss">buildPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> echo "Using repository </span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline">"</span>
|
||
<span class="s s-Multiline"> mvn --offline -Dmaven.repo.local=</span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline"> package;</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
||
<span class="ss">installPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> mkdir -p $out/bin</span>
|
||
|
||
<span class="s s-Multiline"> classpath=$(find </span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline"> -name "*.jar" -printf ':%h/%f');</span>
|
||
<span class="s s-Multiline"> install -Dm644 target/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline">-</span><span class="si">${</span>version<span class="si">}</span><span class="s s-Multiline">.jar $out/share/java</span>
|
||
<span class="s s-Multiline"> # create a wrapper that will automatically set the classpath</span>
|
||
<span class="s s-Multiline"> # this should be the paths from the dependency derivation</span>
|
||
<span class="s s-Multiline"> makeWrapper </span><span class="si">${</span>jre<span class="si">}</span><span class="s s-Multiline">/bin/java $out/bin/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline"> \</span>
|
||
<span class="s s-Multiline"> --add-flags "-classpath $out/share/java/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline">-</span><span class="si">${</span>version<span class="si">}</span><span class="s s-Multiline">.jar:</span><span class="se">''$</span><span class="s s-Multiline">{classpath#:}" \</span>
|
||
<span class="s s-Multiline"> --add-flags "Main"</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
<h4 id="manifest-file-via-maven-plugin">MANIFEST file via Maven Plugin</h4>
|
||
<p>This method is ideal if you are the project owner and want to change your <code>pom.xml</code> to set the CLASSPATH within it.</p>
|
||
<p>Augment the <code>pom.xml</code> to create a JAR with the following manifest:</p>
|
||
<div class="highlight"><pre><span></span><code><span class="nt"><build></span>
|
||
<span class="w"> </span><span class="nt"><plugins></span>
|
||
<span class="w"> </span><span class="nt"><plugin></span>
|
||
<span class="w"> </span><span class="nt"><artifactId></span>maven-jar-plugin<span class="nt"></artifactId></span>
|
||
<span class="w"> </span><span class="nt"><configuration></span>
|
||
<span class="w"> </span><span class="nt"><archive></span>
|
||
<span class="w"> </span><span class="nt"><manifest></span>
|
||
<span class="w"> </span><span class="nt"><addClasspath></span>true<span class="nt"></addClasspath></span>
|
||
<span class="w"> </span><span class="nt"><classpathPrefix></span>../../repository/<span class="nt"></classpathPrefix></span>
|
||
<span class="w"> </span><span class="nt"><classpathLayoutType></span>repository<span class="nt"></classpathLayoutType></span>
|
||
<span class="w"> </span><span class="nt"><mainClass></span>Main<span class="nt"></mainClass></span>
|
||
<span class="w"> </span><span class="nt"></manifest></span>
|
||
<span class="w"> </span><span class="nt"><manifestEntries></span>
|
||
<span class="w"> </span><span class="nt"><Class-Path></span>.<span class="nt"></Class-Path></span>
|
||
<span class="w"> </span><span class="nt"></manifestEntries></span>
|
||
<span class="w"> </span><span class="nt"></archive></span>
|
||
<span class="w"> </span><span class="nt"></configuration></span>
|
||
<span class="w"> </span><span class="nt"></plugin></span>
|
||
<span class="w"> </span><span class="nt"></plugins></span>
|
||
<span class="nt"></build></span>
|
||
</code></pre></div>
|
||
<p>The above plugin instructs the JAR to look for the necessary dependencies in the <code>lib/</code> relative folder. The layout of the folder is also in the <em>maven repository</em> style.</p>
|
||
<div class="highlight"><pre><span></span><code>❯<span class="w"> </span>unzip<span class="w"> </span>-q<span class="w"> </span>-c<span class="w"> </span><span class="k">$(</span>nix-build<span class="w"> </span>--no-out-link<span class="w"> </span>runnable-jar.nix<span class="k">)</span>/share/java/maven-demo-1.0.jar<span class="w"> </span>META-INF/MANIFEST.MF
|
||
|
||
Manifest-Version:<span class="w"> </span><span class="m">1</span>.0
|
||
Archiver-Version:<span class="w"> </span>Plexus<span class="w"> </span>Archiver
|
||
Built-By:<span class="w"> </span>nixbld
|
||
Class-Path:<span class="w"> </span>.<span class="w"> </span>../../repository/com/vdurmont/emoji-java/5.1.1/emoji-jav
|
||
<span class="w"> </span>a-5.1.1.jar<span class="w"> </span>../../repository/org/json/json/20170516/json-20170516.jar
|
||
Created-By:<span class="w"> </span>Apache<span class="w"> </span>Maven<span class="w"> </span><span class="m">3</span>.6.3
|
||
Build-Jdk:<span class="w"> </span><span class="m">1</span>.8.0_265
|
||
Main-Class:<span class="w"> </span>Main
|
||
</code></pre></div>
|
||
<p>We will modify the derivation above to add a symlink to our repository so that it's accessible to our JAR during the <code>installPhase</code>.</p>
|
||
<div class="highlight"><pre><span></span><code><span class="p">{</span> stdenv<span class="p">,</span> maven<span class="p">,</span> callPackage<span class="p">,</span> makeWrapper<span class="p">,</span> jre <span class="p">}:</span>
|
||
<span class="c1"># pick a repository derivation, here we will use buildMaven</span>
|
||
<span class="k">let</span> <span class="ss">repository</span> <span class="o">=</span> callPackage <span class="l">./build-maven-repository.nix</span> <span class="p">{</span> <span class="p">};</span>
|
||
<span class="k">in</span> stdenv<span class="o">.</span>mkDerivation <span class="k">rec</span> <span class="p">{</span>
|
||
<span class="ss">pname</span> <span class="o">=</span> <span class="s2">"maven-demo"</span><span class="p">;</span>
|
||
<span class="ss">version</span> <span class="o">=</span> <span class="s2">"1.0"</span><span class="p">;</span>
|
||
|
||
<span class="ss">src</span> <span class="o">=</span> <span class="nb">builtins</span><span class="o">.</span>fetchTarball
|
||
<span class="s2">"https://github.com/fzakaria/nixos-maven-example/archive/main.tar.gz"</span><span class="p">;</span>
|
||
<span class="ss">nativeBuildInputs</span> <span class="o">=</span> <span class="p">[</span> makeWrapper <span class="p">];</span>
|
||
<span class="ss">buildInputs</span> <span class="o">=</span> <span class="p">[</span> maven <span class="p">];</span>
|
||
|
||
<span class="ss">buildPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> echo "Using repository </span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline">"</span>
|
||
<span class="s s-Multiline"> mvn --offline -Dmaven.repo.local=</span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline"> package;</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
|
||
<span class="ss">installPhase</span> <span class="o">=</span> <span class="s s-Multiline">''</span>
|
||
<span class="s s-Multiline"> mkdir -p $out/bin</span>
|
||
|
||
<span class="s s-Multiline"> # create a symbolic link for the repository directory</span>
|
||
<span class="s s-Multiline"> ln -s </span><span class="si">${</span>repository<span class="si">}</span><span class="s s-Multiline"> $out/repository</span>
|
||
|
||
<span class="s s-Multiline"> install -Dm644 target/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline">-</span><span class="si">${</span>version<span class="si">}</span><span class="s s-Multiline">.jar $out/share/java</span>
|
||
<span class="s s-Multiline"> # create a wrapper that will automatically set the classpath</span>
|
||
<span class="s s-Multiline"> # this should be the paths from the dependency derivation</span>
|
||
<span class="s s-Multiline"> makeWrapper </span><span class="si">${</span>jre<span class="si">}</span><span class="s s-Multiline">/bin/java $out/bin/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline"> \</span>
|
||
<span class="s s-Multiline"> --add-flags "-jar $out/share/java/</span><span class="si">${</span>pname<span class="si">}</span><span class="s s-Multiline">-</span><span class="si">${</span>version<span class="si">}</span><span class="s s-Multiline">.jar"</span>
|
||
<span class="s s-Multiline"> ''</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</code></pre></div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Our script produces a dependency on <code>jre</code> rather than <code>jdk</code> to restrict the runtime closure necessary to run the application.</p>
|
||
</div>
|
||
<p>This will give you an executable shell-script that launches your JAR with all the dependencies available.</p>
|
||
<div class="highlight"><pre><span></span><code>❯<span class="w"> </span>tree<span class="w"> </span><span class="k">$(</span>nix-build<span class="w"> </span>--no-out-link<span class="w"> </span>runnable-jar.nix<span class="k">)</span>
|
||
/nix/store/8d4c3ibw8ynsn01ibhyqmc1zhzz75s26-maven-demo-1.0
|
||
├──<span class="w"> </span>bin
|
||
│<span class="w"> </span>└──<span class="w"> </span>maven-demo
|
||
├──<span class="w"> </span>repository<span class="w"> </span>-><span class="w"> </span>/nix/store/g87va52nkc8jzbmi1aqdcf2f109r4dvn-maven-repository
|
||
└──<span class="w"> </span>share
|
||
<span class="w"> </span>└──<span class="w"> </span>java
|
||
<span class="w"> </span>└──<span class="w"> </span>maven-demo-1.0.jar
|
||
|
||
❯<span class="w"> </span><span class="k">$(</span>nix-build<span class="w"> </span>--no-out-link<span class="w"> </span>--option<span class="w"> </span>tarball-ttl<span class="w"> </span><span class="m">1</span><span class="w"> </span>runnable-jar.nix<span class="k">)</span>/bin/maven-demo
|
||
NixOS<span class="w"> </span>😀<span class="w"> </span>is<span class="w"> </span>super<span class="w"> </span>cool<span class="w"> </span>😃!
|
||
</code></pre></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
|
||
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
|
||
</main>
|
||
|
||
<footer class="md-footer">
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
|
||
<div class="md-copyright__highlight">
|
||
Licenced MIT
|
||
</div>
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="md-social">
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://git.auxolotl.org/auxolotl/docs" target="_blank" rel="noopener" title="Aux Docs Repo" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
|
||
</a>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://forum.aux.computer/" target="_blank" rel="noopener" title="Aux Forum" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"/></svg>
|
||
</a>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://wiki.auxolotl.org/" target="_blank" rel="noopener" title="Aux Wiki" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.801 13.557c.148.098.288.202.417.313 1.854 1.6 3.127 4.656 2.582 7.311-1.091-.255-5.747-1.055-7.638-3.383-.91-1.12-1.366-2.081-1.569-2.885a5.65 5.65 0 0 0 .034-.219c.089.198.197.35.313.466.24.24.521.335.766.372.304.046.594-.006.806-.068l.001.001c.05-.015.433-.116.86-.342.325-.173 2.008-.931 3.428-1.566Zm-7.384 1.435C9.156 16.597 6.6 18.939.614 18.417c.219-1.492 1.31-3.019 2.51-4.11.379-.345.906-.692 1.506-1.009.286.168.598.332.939.486 2.689 1.221 3.903 1.001 4.89.573a1.3 1.3 0 0 0 .054-.025 6.156 6.156 0 0 0-.096.66Zm4.152-.462c.38-.341.877-.916 1.383-1.559-.389-.15-.866-.371-1.319-.591-.598-.29-1.305-.283-2.073-.315a4.685 4.685 0 0 1-.804-.103c.014-.123.027-.246.038-.369.062.104.673.057.871.057.354 0 1.621.034 3.074-.574 1.452-.608 2.55-1.706 3.022-3.225.474-1.52.22-3.091-.168-3.952-.169.709-1.453 2.381-1.926 2.871-.473.489-2.381 2.296-2.972 2.921-.7.74-.688.793-1.332 1.302-.202.19-.499.402-.563.53.027-.338.039-.675.027-.997a7.653 7.653 0 0 0-.032-.523c.322-.059.567-.522.567-.861 0-.224-.106-.247-.271-.229.075-.894.382-3.923 1.254-4.281.218.109.831.068.649-.295-.182-.364-.825-.074-1.081.266-.28.374-.956 2.046-.92 4.324-.113.014-.174.033-.322.033-.171 0-.321-.04-.433-.05.034-2.275-.714-3.772-.84-4.169-.12-.375-.491-.596-.781-.596-.146 0-.272.056-.333.179-.182.363.459.417.677.308.706.321 1.156 3.519 1.254 4.277-.125-.006-.199.035-.199.233 0 .311.17.756.452.843a.442.442 0 0 0-.007.03s-.287.99-.413 2.189a4.665 4.665 0 0 1-.718-.225c-.714-.286-1.355-.583-2.019-.566-.664.018-1.366.023-1.804-.036-.438-.058-.649-.15-.649-.15s-.234.365.257 1.075c.42.607 1.055 1.047 1.644 1.18.589.134 1.972.18 2.785-.377.16-.109.317-.228.459-.34a8.717 8.717 0 0 0-.013.626c-.289.753-.571 1.993-.268 3.338 0-.001.701-.842.787-2.958.006-.144.009-.271.01-.383.052-.248.103-.518.148-.799.072.135.151.277.234.413.511.842 1.791 1.37 2.383 1.49.091.019.187.032.285.038Zm-1.12.745c-.188.055-.445.1-.713.059-.21-.031-.45-.11-.655-.316-.169-.168-.312-.419-.401-.789a9.837 9.837 0 0 0 .039-.82l.049-.243c.563.855 1.865 1.398 2.476 1.522.036.008.072.014.109.02l-.013.009c-.579.415-.76.503-.891.558Zm6.333-2.818c-.257.114-4.111 1.822-5.246 2.363.98-.775 3.017-3.59 3.699-4.774 1.062.661 1.468 1.109 1.623 1.441.101.217.09.38.096.515a.57.57 0 0 1-.172.455Zm-9.213 1.62a1.606 1.606 0 0 1-.19.096c-.954.414-2.126.61-4.728-.571-2.023-.918-3.024-2.157-3.371-2.666.476.161 1.471.473 2.157.524.282.021.703.068 1.167.125.021.209.109.486.345.829l.001.001c.451.651 1.134 1.119 1.765 1.262.622.141 2.083.182 2.942-.407a3.12 3.12 0 0 0 .132-.093l.001.179a6.052 6.052 0 0 0-.221.721Zm5.512-1.271a17.49 17.49 0 0 1-1.326-.589c.437.042 1.054.083 1.692.108-.121.162-.244.323-.366.481Zm.932-1.26c-.12.17-.245.343-.373.517-.241.018-.478.03-.709.038a29.05 29.05 0 0 1-.741-.048c.608-.065 1.228-.252 1.823-.507Zm.22-.315c-.809.382-1.679.648-2.507.648-.472 0-.833.018-1.139.039v.001c-.324-.031-.665-.039-1.019-.054a3.555 3.555 0 0 1-.152-.009c.102-.002.192-.006.249-.006.363 0 1.662.034 3.151-.589 1.508-.632 2.645-1.773 3.136-3.351.37-1.186.31-2.402.086-3.312.458-.336.86-.651 1.147-.91.501-.451.743-.733.848-.869.199.206.714.864.685 2.138-.036 1.611-.606 3.187-1.501 4.154a9.099 9.099 0 0 1-1.321 1.132 11.978 11.978 0 0 0-.644-.422l-.089-.055-.051.091c-.184.332-.5.825-.879 1.374ZM4.763 5.817c-.157 1.144.113 2.323.652 3.099.539.776 2.088 2.29 3.614 2.505.991.14 2.055.134 2.055.134s-.593-.576-1.114-1.66c-.521-1.085-.948-2.104-1.734-2.786-.785-.681-1.601-1.416-2.045-1.945-.444-.53-.59-.86-.59-.86s-.656.175-.838 1.513Zm14.301 4.549a9.162 9.162 0 0 0 1.3-1.12c.326-.352.611-.782.845-1.265 1.315.145 2.399.371 2.791.434 0 0-.679 1.971-3.945 3.022l-.016-.035c-.121-.26-.385-.594-.975-1.036Zm-11.634.859a8.537 8.537 0 0 1-.598-.224c-1.657-.693-2.91-1.944-3.449-3.678-.498-1.601-.292-3.251.091-4.269.225.544.758 1.34 1.262 2.01a3.58 3.58 0 0 0-.172.726c-.163 1.197.123 2.428.687 3.24.416.599 1.417 1.62 2.555 2.193-.128.002-.253.003-.376.002Zm-1.758-.077c-.958-.341-1.901-.787-2.697-1.368C-.07 7.559 0 6.827 0 6.827s1.558-.005 3.088.179c.03.126.065.251.104.377.557 1.791 1.851 3.086 3.562 3.803l.047.019a4.254 4.254 0 0 1-.267-.026h-.001c-.401-.053-.595-.135-.595-.135l-.157-.069-.092.144-.017.029Zm6.807-1.59c.086.017.136.058.136.145 0 .197-.242.5-.597.597l-.01-.161a.887.887 0 0 0 .283-.243c.078-.099.142-.217.188-.338Zm-1.591.006c.033.1.076.197.129.282.061.097.134.18.217.24l-.021.083c-.276-.093-.424-.293-.424-.466 0-.078.035-.119.099-.139Zm-.025-.664c-.275-.816-.795-2.022-1.505-2.179-.296.072-.938.096-.691-.145.246-.24 1.085-.048 1.283.217.145.194.744.806 1.011 1.737l.032.227a.324.324 0 0 0-.13.143Zm1.454-.266c.251-.99.889-1.639 1.039-1.841.197-.265 1.036-.457 1.283-.217.247.241-.395.217-.691.145-.69.152-1.2 1.296-1.481 2.109a.364.364 0 0 0-.067-.059.37.37 0 0 0-.092-.043l.009-.094Zm4.802-2.708a9.875 9.875 0 0 1-.596.705c-.304.315-1.203 1.176-1.963 1.916.647-.955 1.303-1.806 2.184-2.376.123-.08.249-.161.375-.245Z"/></svg>
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
|
||
|
||
<script id="__config" type="application/json">{"base": "../../..", "features": ["content.tooltips", "search.highlight", "navigation.tabs", "navigation.indexes", "navigation.prune"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||
|
||
|
||
<script src="../../../assets/javascripts/bundle.fe8b6f2b.min.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |