blob: 96b553d392e0ecb2b867780d19da357a6ba991ae [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Apache Aurora</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<link href="/assets/css/main.css" rel="stylesheet">
<!-- Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-45879646-1']);
_gaq.push(['_setDomainName', 'apache.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="container-fluid section-header">
<div class="container">
<div class="nav nav-bar">
<a href="/"><img src="/assets/img/aurora_logo_white_bkg.svg" width="300" alt="Transparent Apache Aurora logo with dark background"/></a>
<ul class="nav navbar-nav navbar-right">
<li><a href="/documentation/latest/">Documentation</a></li>
<li><a href="/community/">Community</a></li>
<li><a href="/downloads/">Downloads</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
</div>
</div>
</div>
<div class="container-fluid">
<div class="container content">
<p>Java code in the aurora repo is built with <a href="http://gradle.org">Gradle</a>.</p>
<h1 id="getting-started">Getting Started</h1>
<p>You will need Java 7 installed and on your <code>PATH</code> or unzipped somewhere with <code>JAVA_HOME</code> set. Then</p>
<pre class="highlight text">./gradlew tasks
</pre>
<p>will bootstrap the build system and show available tasks. This can take a while the first time you
run it but subsequent runs will be much faster due to cached artifacts.</p>
<h2 id="running-the-tests">Running the Tests</h2>
<p>Aurora has a comprehensive unit test suite. To run the tests use</p>
<pre class="highlight text">./gradlew build
</pre>
<p>Gradle will only re-run tests when dependencies of them have changed. To force a re-run of all
tests use</p>
<pre class="highlight text">./gradlew clean build
</pre>
<h2 id="running-the-build-with-code-quality-checks">Running the build with code quality checks</h2>
<p>To speed up development iteration, the plain gradle commands will not run static analysis tools.
However, you should run these before posting a review diff, and <strong>always</strong> run this before pushing a
commit to origin/master.</p>
<pre class="highlight text">./gradlew build -Pq
</pre>
<h2 id="creating-a-bundle-for-deployment">Creating a bundle for deployment</h2>
<p>Gradle can create a zip file containing Aurora, all of its dependencies, and a launch script with</p>
<pre class="highlight text">./gradlew distZip
</pre>
<p>or a tar file containing the same files with</p>
<pre class="highlight text">./gradlew distTar
</pre>
<p>The output file will be written to <code>dist/distributions/aurora-scheduler.zip</code> or
<code>dist/distributions/aurora-scheduler.tar</code>.</p>
<h1 id="developing-aurora-java-code">Developing Aurora Java code</h1>
<h2 id="setting-up-an-ide">Setting up an IDE</h2>
<p>Gradle can generate project files for your IDE. To generate an IntelliJ IDEA project run</p>
<pre class="highlight text">./gradlew idea
</pre>
<p>and import the generated <code>aurora.ipr</code> file.</p>
<h2 id="adding-or-upgrading-a-dependency">Adding or Upgrading a Dependency</h2>
<p>New dependencies can be added from Maven central by adding a <code>compile</code> dependency to <code>build.gradle</code>.
For example, to add a dependency on <code>com.example</code>&rsquo;s <code>example-lib</code> 1.0 add this block:</p>
<pre class="highlight text">compile &#39;com.example:example-lib:1.0&#39;
</pre>
<p>NOTE: Anyone thinking about adding a new dependency should first familiarize themself with the
Apache Foundation&rsquo;s third-party licensing
<a href="http://www.apache.org/legal/resolved.html#category-x">policy</a>.</p>
<h1 id="developing-aurora-ui">Developing Aurora UI</h1>
<h2 id="installing-bower-(optional)">Installing bower (optional)</h2>
<p>Third party JS libraries used in Aurora (located at 3rdparty/javascript/bower_components) are
managed by bower, a JS dependency manager. Bower is only required if you plan to add, remove or
update JS libraries. Bower can be installed using the following command:</p>
<pre class="highlight text">npm install -g bower
</pre>
<p>Bower depends on node.js and npm. The easiest way to install node on a mac is via brew:</p>
<pre class="highlight text">brew install node
</pre>
<p>For more node.js installation options refer to <a href="https://github.com/joyent/node/wiki/Installation">https://github.com/joyent/node/wiki/Installation</a>.</p>
<p>More info on installing and using bower can be found at: <a href="http://bower.io/">http://bower.io/</a>. Once installed, you can
use the following commands to view and modify the bower repo at
3rdparty/javascript/bower_components</p>
<pre class="highlight text">bower list
bower install &lt;library name&gt;
bower remove &lt;library name&gt;
bower update &lt;library name&gt;
bower help
</pre>
<h1 id="developing-the-aurora-build-system">Developing the Aurora Build System</h1>
<h2 id="bootstrapping-gradle">Bootstrapping Gradle</h2>
<p>The following files were autogenerated by <code>gradle wrapper</code> using gradle 1.8&rsquo;s
<a href="http://www.gradle.org/docs/1.8/dsl/org.gradle.api.tasks.wrapper.Wrapper.html">Wrapper</a> plugin and
should not be modified directly:</p>
<pre class="highlight text">./gradlew
./gradlew.bat
./gradle/wrapper/gradle-wrapper.jar
./gradle/wrapper/gradle-wrapper.properties
</pre>
<p>To upgrade Gradle unpack the new version somewhere, run <code>/path/to/new/gradle wrapper</code> in the
repository root and commit the changed files.</p>
</div>
</div>
<div class="container-fluid section-footer buffer">
<div class="container">
<div class="row">
<div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3>
<ul>
<li><a href="/downloads/">Downloads</a></li>
<li><a href="/community/">Mailing Lists</a></li>
<li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li>
<li><a href="/documentation/latest/contributing/">How To Contribute</a></li>
</ul>
</div>
<div class="col-md-2"><h3>The ASF</h3>
<ul>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="http://www.apache.org/security/">Security</a></li>
</ul>
</div>
<div class="col-md-6">
<p class="disclaimer">Apache Aurora is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>
<p class="disclaimer">Copyright 2014 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
</div>
</div>
</div>
</body>
</html>