Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-release > by-pkgid > 016232f1d9a3f7bee85855d35a2bca58 > files > 219

elixir-doc-1.7.2-1.mga7.noarch.rpm

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="ExDoc v0.19.1">
    <title>compile.app – Mix v1.7.2</title>
    <link rel="stylesheet" href="dist/app-240d7fc7e5.css" />
      <link rel="canonical" href="https://hexdocs.pm/mix/v1.7/Mix.Tasks.Compile.App.html" />
    <script src="dist/sidebar_items-0c0044e6e4.js"></script>
    
  </head>
  <body data-type="tasks">
    <script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
    <div class="main">
<button class="sidebar-button sidebar-toggle">
  <span class="icon-menu" aria-hidden="true"></span>
  <span class="sr-only">Toggle Sidebar</span>
</button>
<button class="sidebar-button night-mode-toggle">
  <span class="icon-theme" aria-hidden="true"></span>
  <span class="sr-only">Toggle Theme</span>
</button>
<section class="sidebar">

  <a href="http://elixir-lang.org/docs.html" class="sidebar-projectLink">
    <div class="sidebar-projectDetails">
      <h1 class="sidebar-projectName">
Mix      </h1>
      <h2 class="sidebar-projectVersion">
        v1.7.2
      </h2>
    </div>
      <img src="assets/logo.png" alt="Mix" class="sidebar-projectImage">
  </a>

  <form class="sidebar-search" action="search.html">
    <button type="submit" class="search-button">
      <span class="icon-search" aria-hidden="true"></span>
    </button>
    <input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" />
  </form>

  <ul class="sidebar-listNav">
    <li><a id="extras-list" href="#full-list">Pages</a></li>

      <li><a id="modules-list" href="#full-list">Modules</a></li>

      <li><a id="exceptions-list" href="#full-list">Exceptions</a></li>

      <li><a id="tasks-list" href="#full-list">Mix Tasks</a></li>
  </ul>
  <div class="gradient"></div>
  <ul id="full-list" class="sidebar-fullList"></ul>
</section>

<section class="content">
  <div class="content-outer">
    <div id="content" class="content-inner">


      <h1>
        <small class="visible-xs">Mix v1.7.2</small>
mix compile.app        
          <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix/tasks/compile.app.ex#L1" title="View Source" class="view-source" rel="help">
            <span class="icon-code" aria-hidden="true"></span>
            <span class="sr-only">View Source</span>
          </a>
      </h1>


        <section id="moduledoc">
<p>Writes an .app file.</p>
<p>An <code class="inline">.app</code> file is a file containing Erlang terms that defines
your application. Mix automatically generates this file based on
your <code class="inline">mix.exs</code> configuration.</p>
<p>In order to generate the <code class="inline">.app</code> file, Mix expects your project
to have both <code class="inline">:app</code> and <code class="inline">:version</code> keys. Furthermore, you can
configure the generated application by defining an <code class="inline">application/0</code>
function in your <code class="inline">mix.exs</code> that returns a keyword list.</p>
<p>The most commonly used keys are:</p>
<ul>
<li><p><code class="inline">:extra_applications</code> - a list of OTP applications
your application depends on which are not included in <code class="inline">:deps</code>
(usually defined in <code class="inline">deps/0</code> in your <code class="inline">mix.exs</code>). For example,
here you can declare a dependency on applications that ship with
Erlang/OTP or Elixir, like <code class="inline">:crypto</code> or <code class="inline">:logger</code>, but anything in
the code path works. Mix guarantees that these applications and
the rest of your runtime dependencies are started before your
application starts.</p>
</li>
<li><p><code class="inline">:registered</code> - the name of all registered processes in the
application. If your application defines a local GenServer
with name <code class="inline">MyServer</code>, it is recommended to add <code class="inline">MyServer</code>
to this list. It is most useful in detecting conflicts
between applications that register the same names.</p>
</li>
<li><p><code class="inline">:env</code> - the default values for the application environment.
The application environment is one of the most common ways
to configure applications. See the <a href="https://hexdocs.pm/elixir/Application.html"><code class="inline">Application</code></a> module for
mechanisms to read and write to the application environment.</p>
</li>
</ul>
<p>For example:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">def</span><span class="w"> </span><span class="nf">application</span><span class="w"> </span><span class="k" data-group-id="5818124094-1">do</span><span class="w">
  </span><span class="p" data-group-id="5818124094-2">[</span><span class="ss">extra_applications</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5818124094-3">[</span><span class="ss">:logger</span><span class="p">,</span><span class="w"> </span><span class="ss">:crypto</span><span class="p" data-group-id="5818124094-3">]</span><span class="p">,</span><span class="w">
   </span><span class="ss">env</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5818124094-4">[</span><span class="ss">key</span><span class="p">:</span><span class="w"> </span><span class="ss">:value</span><span class="p" data-group-id="5818124094-4">]</span><span class="p">,</span><span class="w">
   </span><span class="ss">registered</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5818124094-5">[</span><span class="nc">MyServer</span><span class="p" data-group-id="5818124094-5">]</span><span class="p" data-group-id="5818124094-2">]</span><span class="w">
</span><span class="k" data-group-id="5818124094-1">end</span></code></pre>
<p>Other options include:</p>
<ul>
<li><p><code class="inline">:applications</code> - all applications your application depends
on at runtime. By default, this list is automatically inferred
from your dependencies. Mix and other tools use the application
list in order to start your dependencies before starting the
application itself.</p>
</li>
<li><p><code class="inline">:mod</code> - specifies a module to invoke when the application
is started. It must be in the format <code class="inline">{Mod, args}</code> where
args is often an empty list. The module specified must
implement the callbacks defined by the <a href="https://hexdocs.pm/elixir/Application.html"><code class="inline">Application</code></a>
module.</p>
</li>
<li><p><code class="inline">:start_phases</code> - specifies a list of phases and their arguments
to be called after the application is started. See the “Phases”
section below.</p>
</li>
<li><p><code class="inline">:included_applications</code> - specifies a list of applications
that will be included in the application. It is the responsibility of
the primary application to start the supervision tree of all included
applications, as only the primary application will be started. A process
in an included application considers itself belonging to the
primary application.</p>
</li>
<li><p><code class="inline">:maxT</code> - specifies the maximum time the application is allowed to run, in
milliseconds. Applications are stopped if <code class="inline">:maxT</code> is reached, and their
top-level supervisor terminated with reason <code class="inline">:normal</code>. This threshold is
technically valid in any resource file, but it is only effective for
applications with a callback module. Defaults to <code class="inline">:infinity</code>.</p>
</li>
</ul>
<p>Besides the options above, <code class="inline">.app</code> files also expect other options like
<code class="inline">:modules</code> and <code class="inline">:vsn</code>, but these are automatically added by Mix.</p>
<h2 id="module-command-line-options" class="section-heading">
  <a href="#module-command-line-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Command line options
</h2>

<ul>
<li><code class="inline">--force</code> - forces compilation regardless of modification times
</li>
</ul>
<h2 id="module-phases" class="section-heading">
  <a href="#module-phases" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Phases
</h2>

<p>Applications provide a start phases mechanism which will be called,
in order, for the application and all included applications. If a phase
is not defined for an included application, that application is skipped.</p>
<p>Let’s see an example <code class="inline">MyApp.application/0</code> function:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">def</span><span class="w"> </span><span class="nf">application</span><span class="w"> </span><span class="k" data-group-id="8113689669-1">do</span><span class="w">
  </span><span class="p" data-group-id="8113689669-2">[</span><span class="ss">start_phases</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8113689669-3">[</span><span class="ss">init</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8113689669-4">[</span><span class="p" data-group-id="8113689669-4">]</span><span class="p">,</span><span class="w"> </span><span class="ss">go</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8113689669-5">[</span><span class="p" data-group-id="8113689669-5">]</span><span class="p">,</span><span class="w"> </span><span class="ss">finish</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8113689669-6">[</span><span class="p" data-group-id="8113689669-6">]</span><span class="p" data-group-id="8113689669-3">]</span><span class="p">,</span><span class="w">
   </span><span class="ss">included_applications</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8113689669-7">[</span><span class="ss">:my_included_app</span><span class="p" data-group-id="8113689669-7">]</span><span class="p" data-group-id="8113689669-2">]</span><span class="w">
</span><span class="k" data-group-id="8113689669-1">end</span></code></pre>
<p>And an example <code class="inline">:my_included_app</code> defines on its <code class="inline">mix.exs</code> the function:</p>
<pre><code class="nohighlight makeup elixir"><span class="kd">def</span><span class="w"> </span><span class="nf">application</span><span class="w"> </span><span class="k" data-group-id="6354375028-1">do</span><span class="w">
  </span><span class="p" data-group-id="6354375028-2">[</span><span class="ss">mod</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="6354375028-3">{</span><span class="nc">MyIncludedApp</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="6354375028-4">[</span><span class="p" data-group-id="6354375028-4">]</span><span class="p" data-group-id="6354375028-3">}</span><span class="p">,</span><span class="w">
   </span><span class="ss">start_phases</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="6354375028-5">[</span><span class="ss">go</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="6354375028-6">[</span><span class="p" data-group-id="6354375028-6">]</span><span class="p" data-group-id="6354375028-5">]</span><span class="p" data-group-id="6354375028-2">]</span><span class="w">
</span><span class="k" data-group-id="6354375028-1">end</span></code></pre>
<p>In this example, the order that the application callbacks are called in is:</p>
<pre><code class="nohighlight makeup elixir"><span class="nc">Application</span><span class="o">.</span><span class="n">start</span><span class="p" data-group-id="5843195970-1">(</span><span class="nc">MyApp</span><span class="p" data-group-id="5843195970-1">)</span><span class="w">
</span><span class="nc">MyApp</span><span class="o">.</span><span class="n">start</span><span class="p" data-group-id="5843195970-2">(</span><span class="ss">:normal</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="5843195970-3">[</span><span class="p" data-group-id="5843195970-3">]</span><span class="p" data-group-id="5843195970-2">)</span><span class="w">
</span><span class="nc">MyApp</span><span class="o">.</span><span class="n">start_phase</span><span class="p" data-group-id="5843195970-4">(</span><span class="ss">:init</span><span class="p">,</span><span class="w"> </span><span class="ss">:normal</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="5843195970-5">[</span><span class="p" data-group-id="5843195970-5">]</span><span class="p" data-group-id="5843195970-4">)</span><span class="w">
</span><span class="nc">MyApp</span><span class="o">.</span><span class="n">start_phase</span><span class="p" data-group-id="5843195970-6">(</span><span class="ss">:go</span><span class="p">,</span><span class="w"> </span><span class="ss">:normal</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="5843195970-7">[</span><span class="p" data-group-id="5843195970-7">]</span><span class="p" data-group-id="5843195970-6">)</span><span class="w">
</span><span class="nc">MyIncludedApp</span><span class="o">.</span><span class="n">start_phase</span><span class="p" data-group-id="5843195970-8">(</span><span class="ss">:go</span><span class="p">,</span><span class="w"> </span><span class="ss">:normal</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="5843195970-9">[</span><span class="p" data-group-id="5843195970-9">]</span><span class="p" data-group-id="5843195970-8">)</span><span class="w">
</span><span class="nc">MyApp</span><span class="o">.</span><span class="n">start_phase</span><span class="p" data-group-id="5843195970-10">(</span><span class="ss">:finish</span><span class="p">,</span><span class="w"> </span><span class="ss">:normal</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="5843195970-11">[</span><span class="p" data-group-id="5843195970-11">]</span><span class="p" data-group-id="5843195970-10">)</span></code></pre>
        </section>

        <section id="summary" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#summary">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Summary
          </h1>
          
  <div class="summary-functions summary">
    <h2>
      <a href="#functions">Functions</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#run/1">run(args)</a>
  </div>
    <div class="summary-synopsis"><p>Receives command-line arguments and performs compilation. If it
produces errors, warnings, or any other diagnostic information,
it should return a tuple with the status and a list of diagnostics</p>
</div>
</div>
  </div>
          
        </section>



        <section id="functions" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#functions">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Functions
          </h1>
<div class="detail" id="run/1">
    <div class="detail-header">
    <a href="#run/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">run(args)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/mix/lib/mix/tasks/compile.app.ex#L116" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
          </div>
  <section class="docstring">
<p>Receives command-line arguments and performs compilation. If it
produces errors, warnings, or any other diagnostic information,
it should return a tuple with the status and a list of diagnostics.</p>
<p>Callback implementation for <a href="Mix.Task.Compiler.html#c:run/1"><code class="inline">Mix.Task.Compiler.run/1</code></a>.</p>
  </section>
</div>
        </section>

          <footer class="footer">
        <p>
          <span class="line">
            Built using
            <a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.1),
          </span>
          <span class="line">
            designed by
            <a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
            </span>
        </p>
      </footer>
    </div>
  </div>
</section>
</div>
  <script src="dist/app-a0c90688fa.js"></script>
  
  </body>
</html>