1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt-doc.git synced 2025-04-26 04:17:11 -07:00

Merge branch 'master' of github.com:cbeust/kobalt-doc

This commit is contained in:
Cedric Beust 2016-04-10 21:07:25 -07:00
commit 491722bff7
4 changed files with 320 additions and 246 deletions

View file

@ -527,8 +527,8 @@ Here are the options that you can pass to <code>./kobaltw</code>:
<table style="font-size: 14px" class="table table-striped"> <table style="font-size: 14px" class="table table-striped">
<colgroup> <colgroup>
<col span="1" style="width: 25%;"> <col span="1" style="width: 30%;">
<col span="1" style="width: 10%;"> <col span="1" style="width: 5%;">
<col span="1" style="width: 10%;"> <col span="1" style="width: 10%;">
<col span="1" style="width: 20%;"> <col span="1" style="width: 20%;">
<col span="1" style="width: 40%;"> <col span="1" style="width: 40%;">
@ -551,9 +551,9 @@ Here are the options that you can pass to <code>./kobaltw</code>:
<td>Use this option if you are trying to build a project whose <code>Build.kt</code> is not in <code>kobalt/src</code>.</td> <td>Use this option if you are trying to build a project whose <code>Build.kt</code> is not in <code>kobalt/src</code>.</td>
</tr> </tr>
<tr> <tr>
<td><code>--checkVersions</code></td> <td><code><span style="white-space:nowrap">--checkVersions</span></code></td>
<td>Boolean</td> <td>Boolean</td>
<td>false</td>td> <td>false</td>
<td>Display all the new versions of your dependencies.</td> <td>Display all the new versions of your dependencies.</td>
<td>This option looks at all the dependencies found in your build file and then contacts all the Maven repositories in order to find out if any of these repos contains a newer version. If any are found, they are displayed: <td>This option looks at all the dependencies found in your build file and then contacts all the Maven repositories in order to find out if any of these repos contains a newer version. If any are found, they are displayed:
<pre class="brush:plain"> <pre class="brush:plain">
@ -579,7 +579,7 @@ New versions found:
<td>The parameter to this argument is a list of template names separated by commas, e.g. <code>"java,myProject"</code>. Each template will be invoked in order so they can generate their files.</td> <td>The parameter to this argument is a list of template names separated by commas, e.g. <code>"java,myProject"</code>. Each template will be invoked in order so they can generate their files.</td>
</tr> </tr>
<tr> <tr>
<td><code>--listTemplates</code></td> <td><code><span style="white-space:nowrap">--listTemplates</span></code></td>
<td></td> <td></td>
<td>N/A</td> <td>N/A</td>
<td>List all the templates available.</td> <td>List all the templates available.</td>
@ -592,6 +592,14 @@ New versions found:
<td>Specify the log level.</td> <td>Specify the log level.</td>
<td>The default level is 1. Level 0 will quiet everything and 2 and 3 will display increasingly verbose output.</td> <td>The default level is 1. Level 0 will quiet everything and 2 and 3 will display increasingly verbose output.</td>
</tr> </tr>
<tr>
<td><code><span style="white-space:nowrap">--noIncremental</span></code></td>
<td>Boolean</td>
<td>false</td>
<td>Turn off incremental builds.</td>
<td>If this flag is specified, Kobalt will run all the tasks, even those that are incremental and would have
been skipped.</td>
</tr>
<tr> <tr>
<td><code>--plugins</code></td> <td><code>--plugins</code></td>
<td>Comma-separated list of plugin id's</td> <td>Comma-separated list of plugin id's</td>
@ -600,7 +608,7 @@ New versions found:
<td>This is similar to specifying these plug-in id's in a build file except that no build file is needed.</td> <td>This is similar to specifying these plug-in id's in a build file except that no build file is needed.</td>
</tr> </tr>
<tr> <tr>
<td><code>--pluginJarFiles</code></td> <td><code><span style="white-space:nowrap">--pluginJarFiles</span></code></td>
<td>Comma-separated list of plugin jar files</td> <td>Comma-separated list of plugin jar files</td>
<td></td> <td></td>
<td>Specify the plug-ins to load.</td> <td>Specify the plug-ins to load.</td>
@ -613,13 +621,6 @@ New versions found:
<td>Display information about the given id.</td> <td>Display information about the given id.</td>
<td>Display which repo this artifact can be found in and the whole graph of its dependencies.</td> <td>Display which repo this artifact can be found in and the whole graph of its dependencies.</td>
</tr> </tr>
<tr>
<td><code>--resolve</code></td>
<td>Maven id<br/>(e.g.&nbsp;<code>"com.beust:kobalt:0.228"</code>)</td>
<td>N/A</td>
<td>Display information about the given id.</td>
<td>Display which repo this artifact can be found in and the whole graph of its dependencies.</td>
</tr>
<tr> <tr>
<td><code>--tasks</code></td> <td><code>--tasks</code></td>
<td>Boolean</td> <td>Boolean</td>

View file

@ -51,13 +51,13 @@ $ which kobaltw
</p> </p>
<h3 class="section" indent="1" id="manually">Manually</h3> <h3 class="section" indent="1" id="manually">Manually</h3>
<p> <p>
<a href="https://github.com/cbeust/kobalt/releases/latest">Download the zip file</a>, unzip it and add that directory to your <code>$PATH</code> variable so that you can invoke the command <code>kobaltw</code>. <a href="https://github.com/cbeust/kobalt/releases/latest">Download the zip file</a>, unzip it and add the <code>bin</code> directory to your <code>$PATH</code> variable so that you can invoke the command <code>kobaltw</code>:
</p> </p>
<pre class="brush:plain"> <pre class="brush:plain">
cd yourLocation cd yourLocation
unzip kobalt-xxx.zip unzip kobalt-xxx.zip
cd kobalt-xxx cd kobalt-xxx
export PATH=$PWD:$PATH export PATH=$PWD/bin:$PATH
</pre> </pre>
<h2 class="section" id="initialize">2. Initialize your project</h2> <h2 class="section" id="initialize">2. Initialize your project</h2>
<p> <p>
@ -129,7 +129,7 @@ val jcommander = project {
</p> </p>
<pre class="brush:java"> <pre class="brush:java">
./kobaltw assemble</pre> ./kobaltw assemble</pre>
<h2 class="section" id="idea-plugin">5. IDEA users: generate IDEA files</h2> <h2 class="section" id="generate-idea-files">5. IDEA users: generate IDEA files</h2>
<p> <p>
If you are planning to use IDEA to work on your project, you can ask Kobalt to generate all the IDEA files necessary to import your project: If you are planning to use IDEA to work on your project, you can ask Kobalt to generate all the IDEA files necessary to import your project:
</p> </p>
@ -147,7 +147,8 @@ If you are planning to use IDEA to work on your project, you can ask Kobalt to g
</p> </p>
<h2 class="section" id="idea-plugin">6. IDEA users: sync your build file</h2> <h2 class="section" id="idea-plugin">6. IDEA users: sync your build file</h2>
<p> <p>
If you're using Intellij IDEA, make sure you've <a href="../idea-plug-in/index.html">installed the Kobalt plugin</a> and then go to <code>Kobalt -> Sync Build File</code>. Once the build file is synchronized, the errors should disappear If you're using Intellij IDEA, make sure you've <a href="../idea-plug-in/index.html">installed the Kobalt plugin</a> and then go to <code>Tools &rarr; Kobalt &rarr; Sync Build File</code>. Once the build file is synchronized, the errors should
disappear
and you can now use all the regular functions of IDEA on <code>Build.kt</code> just like any other Kotlin and you can now use all the regular functions of IDEA on <code>Build.kt</code> just like any other Kotlin
files (auto completion, jump to symbol, etc...). files (auto completion, jump to symbol, etc...).
</p> </p>

View file

@ -72,7 +72,7 @@
<img src="../pics/install-plugin.png" class="img-rounded kb-wide"/> <img src="../pics/install-plugin.png" class="img-rounded kb-wide"/>
</p> </p>
<p> <p>
Install it and restart IDEA. If the plug-in was correctly installed, you should see a new menu called "Kobalt" juste before the "Help" menu: Install it and restart IDEA. If the plug-in was correctly installed, you should see a new menu called "Kobalt" in the "Tools" menu:
</p> </p>
<p align="center"> <p align="center">
<img src="../pics/kobalt-menu.png" class="img-rounded"/> <img src="../pics/kobalt-menu.png" class="img-rounded"/>

View file

@ -45,7 +45,73 @@
<a href="../ten-minutes/index.html">write and publish a plug-in in ten minutes</a> and then you can come back here <a href="../ten-minutes/index.html">write and publish a plug-in in ten minutes</a> and then you can come back here
and keep reading. and keep reading.
</p> </p>
<h2 class="section" id="idea-set-up">Setting up IDEA</h2>
<h3 class="section" indent="1" id="launch-configuration">Launch configuration</h3>
<p>
The simplest way to run your plug-in in your IDE is to create a main function in the main class of your
plug-in as follows:
</p>
<pre class="brush:java">
fun main(argv: Array&lt;String&gt;) {
com.beust.kobalt.main(argv)
}
</pre>
<p>
In order for this code to compile, you will have to switch the dependency of your plug-in from
<code>kobalt-plugin-api</code> to just <code>kobalt</code>, which is the actual application (and which
therefore contains the <code>main()</code> entry point).
</p>
<pre class="brush:java">
// Normal dependency
compile("com.beust:kobalt-plugin-api:$KOBALT_VERSION")
// Development dependency
compile("com.beust:kobalt:$KOBALT_VERSION")
</pre>
<p>
You might find it convenient to leverage Kobalt's ability to use regular Kotlin variables to make things easier:
</p>
<pre class="brush:java">
val dev = false
val kobaltDependency = if (dev) "kobalt" else "kobalt-plugin-api"
val p = project {
// ...
compile("com.beust:$kobaltDependency:$KOBALT_VERSION")
}
</pre>
<p>
Then you can simply set the <code>dev</code> to <code>true</code> during development and back to <code>false
</code> when you are ready to publish your plug-in.
</code>
</p>
<p>
Then resync your build file in IDEA and your <code>main()</code> function should now build and be launchable.
You can right click on that class file and select "Debug &lt;your class name&gt;", which will launch Kobalt
with your plug-in. You can set a breakpoint in one of your tasks or anywhere that gets invoked. Don't forget
to invoke this launch configuration with the regular parameters passed to Kobalt (e.g. <code>"assemble"</code>).
</p>
<h3 class="section" indent="1" id="local-dependencies">Local dependencies</h3>
<p>
In the process of building your plug-in, you will probably be invoking it from test projects and since
you will be making changes to your plug-in and generating jar files often, you might find it more convenient
to have these test projects point to your local jar file instead of the Maven one (which would require you
to upload your plug-in all the time). For this, you might find the <code>file()</code> and <code>homeDir
()</code> directives convenient:
</p>
<pre class="brush:java">
// Regular dependency
compile("com.example:myPlugin:0.1")
// Development dependency
compile(file(homeDir("kotlin/myPlugin/kobaltBuild/libs/myPlugin-0.1.jar"))
</pre>
<p>
With this latter configuration, simply build your plug-in to generate the jar file with <code>./kobaltw
assemble</code>, switch to your test project and invoke Kobalt on it so that your plug-in will get invoked
and you should see the latest version of your code being invoked.
</p>
<h2 class="section" id="philosophy">Plug-in architecture</h3> <h2 class="section" id="philosophy">Plug-in architecture</h3>
<p> <p>
<p> <p>
@ -511,7 +577,13 @@ Running dynamictask
</p> </p>
<pre class="brush:java"> <pre class="brush:java">
fun taskAssemble(project: Project) : TaskResult { fun taskAssemble(project: Project) : TaskResult {
project.projectProperties.put(PACKAGES, packages) project.projectProperties.put("packages", packages)
</pre>
<p>
Another plug-in can then query this property as follows:
</p>
<pre class="brush:java">
val packages = project.projectProperties.put("packages")
</pre> </pre>
<h3 class="section" indent="1" id="plugin-properties">Plug-in properties</h3> <h3 class="section" indent="1" id="plugin-properties">Plug-in properties</h3>
<p> <p>