default_build_script.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>Default Build Script :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/sdk/default_build_script.html">
  8. <meta name="keywords" content="documentation, sdk, builds, project, deployment">
  9. <meta name="generator" content="Antora 2.3.3">
  10. <link rel="stylesheet" href="../../_/css/site.css">
  11. <meta property="og:image" content="https://wiki.jmonkeyengine.org/_/img/iconx128.png">
  12. <meta property="og:description" content="Default Build Script">
  13. <meta property="og:title" content="jMonkeyEngine Docs">
  14. <link rel="stylesheet" href="../../_/css/site-extra.css">
  15. <link rel="icon" href="../../_/img/favicon.ico" type="image/x-icon">
  16. </head>
  17. <body class="article">
  18. <header class="header">
  19. <nav class="navbar">
  20. <div class="navbar-brand">
  21. <a class="navbar-item" href="https://wiki.jmonkeyengine.org">
  22. <img alt="" src="../../_/img/jMonkeyDocLogo.png" height="32" type="image/x-icon">
  23. </a>
  24. <div class="navbar-item hide-for-print">
  25. <input type="text" placeholder="Search docs..." id="search-input"/>
  26. </div>
  27. <button class="navbar-burger" data-target="topbar-nav">
  28. <span></span>
  29. <span></span>
  30. <span></span>
  31. </button>
  32. </div>
  33. <div id="topbar-nav" class="navbar-menu">
  34. <div class="navbar-end">
  35. <div class="navbar-item theme-switch-wrapper">
  36. <label class="theme-switch" for="checkbox">
  37. <input type="checkbox" id="checkbox" />
  38. <div class="slider round"></div>
  39. </label>
  40. </div>
  41. <a class="navbar-item" href="https://github.com/jmonkeyengine/wiki">Github</a>
  42. </div>
  43. </div>
  44. </nav>
  45. </header>
  46. <div class="body">
  47. <div class="nav-container" data-component="docs" data-version="master">
  48. <aside class="nav">
  49. <div class="panels">
  50. <div class="nav-panel-menu is-active" data-panel="menu">
  51. <nav class="nav-menu">
  52. <h3 class="title"><a href="../documentation.html">Docs</a></h3>
  53. <ul class="nav-list">
  54. <li class="nav-item" data-depth="0">
  55. <ul class="nav-list">
  56. <li class="nav-item" data-depth="1">
  57. <a class="nav-link" href="../documentation.html">Getting Started</a>
  58. </li>
  59. <li class="nav-item" data-depth="1">
  60. <a class="nav-link" href="https://javadoc.jmonkeyengine.org/v3.3.2-stable">JavaDoc</a>
  61. </li>
  62. <li class="nav-item" data-depth="1">
  63. <button class="nav-item-toggle"></button>
  64. <a class="nav-link" href="../jme3.html">jMonkeyEngine 3</a>
  65. <ul class="nav-list">
  66. <li class="nav-item" data-depth="2">
  67. <button class="nav-item-toggle"></button>
  68. <span class="nav-text">Beginner Tutorials</span>
  69. <ul class="nav-list">
  70. <li class="nav-item" data-depth="3">
  71. <a class="nav-link" href="../jme3/beginner/hello_simpleapplication.html">Hello SimpleApplication</a>
  72. </li>
  73. <li class="nav-item" data-depth="3">
  74. <a class="nav-link" href="../jme3/beginner/hello_node.html">Hello Node</a>
  75. </li>
  76. <li class="nav-item" data-depth="3">
  77. <a class="nav-link" href="../jme3/beginner/hello_asset.html">Hello Asset</a>
  78. </li>
  79. <li class="nav-item" data-depth="3">
  80. <a class="nav-link" href="../jme3/beginner/hello_main_event_loop.html">Hello Main Event Loop</a>
  81. </li>
  82. <li class="nav-item" data-depth="3">
  83. <a class="nav-link" href="../jme3/beginner/hello_input_system.html">Hello Input System</a>
  84. </li>
  85. <li class="nav-item" data-depth="3">
  86. <a class="nav-link" href="../jme3/beginner/hello_material.html">Hello Material</a>
  87. </li>
  88. <li class="nav-item" data-depth="3">
  89. <a class="nav-link" href="../jme3/beginner/hello_animation.html">Hello Animation</a>
  90. </li>
  91. <li class="nav-item" data-depth="3">
  92. <a class="nav-link" href="../jme3/beginner/hello_picking.html">Hello Picking</a>
  93. </li>
  94. <li class="nav-item" data-depth="3">
  95. <a class="nav-link" href="../jme3/beginner/hello_collision.html">Hello Collision</a>
  96. </li>
  97. <li class="nav-item" data-depth="3">
  98. <a class="nav-link" href="../jme3/beginner/hello_terrain.html">Hello Terrain</a>
  99. </li>
  100. <li class="nav-item" data-depth="3">
  101. <a class="nav-link" href="../jme3/beginner/hello_audio.html">Hello Audio</a>
  102. </li>
  103. <li class="nav-item" data-depth="3">
  104. <a class="nav-link" href="../jme3/beginner/hello_effects.html">Hello Effects</a>
  105. </li>
  106. <li class="nav-item" data-depth="3">
  107. <a class="nav-link" href="../jme3/beginner/hello_physics.html">Hello Physics</a>
  108. </li>
  109. </ul>
  110. </li>
  111. <li class="nav-item" data-depth="2">
  112. <button class="nav-item-toggle"></button>
  113. <span class="nav-text">Intermediate Tutorials</span>
  114. <ul class="nav-list">
  115. <li class="nav-item" data-depth="3">
  116. <button class="nav-item-toggle"></button>
  117. <span class="nav-text">Concepts</span>
  118. <ul class="nav-list">
  119. <li class="nav-item" data-depth="4">
  120. <a class="nav-link" href="../jme3/intermediate/best_practices.html">Best Practices</a>
  121. </li>
  122. <li class="nav-item" data-depth="4">
  123. <a class="nav-link" href="../jme3/intermediate/simpleapplication.html">Simple Application</a>
  124. </li>
  125. <li class="nav-item" data-depth="4">
  126. <a class="nav-link" href="../jme3/features.html">Features</a>
  127. </li>
  128. <li class="nav-item" data-depth="4">
  129. <a class="nav-link" href="../jme3/intermediate/optimization.html">Optimization</a>
  130. </li>
  131. <li class="nav-item" data-depth="4">
  132. <a class="nav-link" href="../jme3/faq.html">FAQ</a>
  133. </li>
  134. </ul>
  135. </li>
  136. <li class="nav-item" data-depth="3">
  137. <button class="nav-item-toggle"></button>
  138. <span class="nav-text">Math Concepts</span>
  139. <ul class="nav-list">
  140. <li class="nav-item" data-depth="4">
  141. <a class="nav-link" href="../jme3/math_for_dummies.html">Math For Dummies</a>
  142. </li>
  143. <li class="nav-item" data-depth="4">
  144. <a class="nav-link" href="../jme3/intermediate/math.html">Math</a>
  145. </li>
  146. <li class="nav-item" data-depth="4">
  147. <a class="nav-link" href="../jme3/math.html">More Math</a>
  148. </li>
  149. <li class="nav-item" data-depth="4">
  150. <a class="nav-link" href="../jme3/rotate.html">Rotate</a>
  151. </li>
  152. <li class="nav-item" data-depth="4">
  153. <a class="nav-link" href="../jme3/math_video_tutorials.html">Math Video Tutorials</a>
  154. </li>
  155. </ul>
  156. </li>
  157. <li class="nav-item" data-depth="3">
  158. <button class="nav-item-toggle"></button>
  159. <span class="nav-text">3D Graphics Concepts</span>
  160. <ul class="nav-list">
  161. <li class="nav-item" data-depth="4">
  162. <a class="nav-link" href="../jme3/intermediate/multi-media_asset_pipeline.html">Multi-Media Asset Pipeline</a>
  163. </li>
  164. <li class="nav-item" data-depth="4">
  165. <a class="nav-link" href="../jme3/scenegraph_for_dummies.html">Scenegraph for Dummies</a>
  166. </li>
  167. <li class="nav-item" data-depth="4">
  168. <a class="nav-link" href="../jme3/beginner/hellovector.html">Hello Vector</a>
  169. </li>
  170. <li class="nav-item" data-depth="4">
  171. <a class="nav-link" href="../jme3/terminology.html">Terminology</a>
  172. </li>
  173. <li class="nav-item" data-depth="4">
  174. <a class="nav-link" href="../jme3/intermediate/how_to_use_materials.html">How to Use Materials</a>
  175. </li>
  176. <li class="nav-item" data-depth="4">
  177. <a class="nav-link" href="../jme3/intermediate/transparency_sorting.html">Transparency and Sorting</a>
  178. </li>
  179. <li class="nav-item" data-depth="4">
  180. <a class="nav-link" href="../jme3/external/blender.html">Importing from Blender</a>
  181. </li>
  182. <li class="nav-item" data-depth="4">
  183. <a class="nav-link" href="../jme3/external/3dsmax.html">Importing from 3DS Max</a>
  184. </li>
  185. </ul>
  186. </li>
  187. </ul>
  188. </li>
  189. </ul>
  190. </li>
  191. <li class="nav-item" data-depth="1">
  192. <a class="nav-link" href="../logo.html">Logo Usage</a>
  193. </li>
  194. <li class="nav-item" data-depth="1">
  195. <a class="nav-link" href="../bsd_license.html">License</a>
  196. </li>
  197. <li class="nav-item" data-depth="1">
  198. <a class="nav-link" href="../github_tips.html">Github Tips</a>
  199. </li>
  200. </ul>
  201. </li>
  202. <li class="nav-item" data-depth="0">
  203. <button class="nav-item-toggle"></button>
  204. <span class="nav-text">SDK</span>
  205. <ul class="nav-list">
  206. <li class="nav-item" data-depth="1">
  207. <a class="nav-link" href="../sdk.html">jMonkeyEngine SDK</a>
  208. </li>
  209. </ul>
  210. </li>
  211. </ul>
  212. </nav>
  213. </div>
  214. <div class="nav-panel-explore" data-panel="explore">
  215. <div class="context">
  216. <span class="title">Docs</span>
  217. <span class="version">master</span>
  218. </div>
  219. <ul class="components">
  220. <li class="component is-current">
  221. <span class="title">Docs</span>
  222. <ul class="versions">
  223. <li class="version is-current is-latest">
  224. <a href="../documentation.html">master</a>
  225. </li>
  226. </ul>
  227. </li>
  228. <li class="component">
  229. <span class="title">Wiki UI</span>
  230. <ul class="versions">
  231. <li class="version is-latest">
  232. <a href="../../wiki-ui/index.html">master</a>
  233. </li>
  234. </ul>
  235. </li>
  236. </ul>
  237. </div>
  238. </div>
  239. </aside>
  240. </div>
  241. <main class="article">
  242. <div class="toolbar" role="navigation">
  243. <button class="nav-toggle"></button>
  244. <nav class="breadcrumbs" aria-label="breadcrumbs">
  245. <ul>
  246. <li><a href="../documentation.html">Docs</a></li>
  247. <li><a href="default_build_script.html">Default Build Script</a></li>
  248. </ul>
  249. </nav>
  250. <div class="edit-this-page"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/docs/modules/ROOT/pages/sdk/default_build_script.adoc">Edit this Page</a></div>
  251. </div>
  252. <div class="content">
  253. <article class="doc">
  254. <h1 class="page">Default Build Script</h1>
  255. <div id="preamble">
  256. <div class="sectionbody">
  257. <div class="paragraph">
  258. <p>If you use jMonkeyEngine libraries together with the jMonkeyEngine SDK (recommended) then you benefit from the provided build script. Every new project comes with a default Ant script. The toolbar buttons and clean/build/run actions in the jMonkeyEngine SDK are already pre-configured.</p>
  259. </div>
  260. </div>
  261. </div>
  262. <div class="sect1">
  263. <h2 id="default-targets"><a class="anchor" href="#default-targets"></a>Default Targets</h2>
  264. <div class="sectionbody">
  265. <div class="paragraph">
  266. <p>The build script includes targets for the following tasks:</p>
  267. </div>
  268. <div class="ulist">
  269. <ul>
  270. <li>
  271. <p>clean – deletes the built classes and executables in the dist directory.</p>
  272. </li>
  273. <li>
  274. <p>jar – compiles the classes, bundles the assets, builds the executable JAR in the dist directory, copies libraries.</p>
  275. </li>
  276. <li>
  277. <p>run – builds and runs the executable JAR (e.g. for the developers to test it).</p>
  278. </li>
  279. <li>
  280. <p>javadoc – compiles javadoc from your java files into html files.</p>
  281. </li>
  282. <li>
  283. <p>debug – used by the jMonkeyEngine SDK Debugger plugin.</p>
  284. </li>
  285. <li>
  286. <p>test – Used by the jMonkeyEngine SDK JUnit Test plugin.</p>
  287. </li>
  288. </ul>
  289. </div>
  290. <div class="paragraph">
  291. <p>You can call these targets on the command line using default Ant commands:</p>
  292. </div>
  293. <div class="listingblock">
  294. <div class="content">
  295. <pre class="highlightjs highlight"><code>ant clean
  296. ant jar
  297. ant run</code></pre>
  298. </div>
  299. </div>
  300. <div class="admonitionblock tip">
  301. <table>
  302. <tr>
  303. <td class="icon">
  304. <i class="fa icon-tip" title="Tip"></i>
  305. </td>
  306. <td class="content">
  307. <div class="paragraph">
  308. <p>We recommended to use the user-friendly menu items, F-keys, or toolbar buttons in the jMonkeyEngine SDK to trigger clean, build, and run actions.</p>
  309. </div>
  310. </td>
  311. </tr>
  312. </table>
  313. </div>
  314. </div>
  315. </div>
  316. <div class="sect1">
  317. <h2 id="browsing-the-build-script"><a class="anchor" href="#browsing-the-build-script"></a>Browsing the Build Script</h2>
  318. <div class="sectionbody">
  319. <div class="paragraph">
  320. <p>To see the build script and the predefined tasks</p>
  321. </div>
  322. <div class="olist arabic">
  323. <ol class="arabic">
  324. <li>
  325. <p>Open your project in the jMonkeyEngine SDK if it isn&#8217;t already open (File &gt; Open Project…)</p>
  326. </li>
  327. <li>
  328. <p>Open the Files window (Window &gt; Files)</p>
  329. </li>
  330. <li>
  331. <p>Open the project node. You see <code>build.xml</code> listed.</p>
  332. <div class="olist loweralpha">
  333. <ol class="loweralpha" type="a">
  334. <li>
  335. <p>Double-click <code>build.xml</code> to see how the jme3-specify build targets were defined. You typically do not need to edit the existing ones, but you can.</p>
  336. </li>
  337. <li>
  338. <p>Click the triangle next to <code>build.xml</code> to see all targets.</p>
  339. <div class="olist lowerroman">
  340. <ol class="lowerroman" type="i">
  341. <li>
  342. <p>Double-click a target in the Files window, or the Navigator, to see how the target was defined.<br>
  343. You will notice that the file <code>nbproject/build-impl.xml</code> opens. It contains very generic targets that you typically will never need to edit. Note that <code>build.xml</code> includes <code>build-impl.xml</code>!</p>
  344. </li>
  345. </ol>
  346. </div>
  347. </li>
  348. </ol>
  349. </div>
  350. </li>
  351. </ol>
  352. </div>
  353. </div>
  354. </div>
  355. <div class="sect1">
  356. <h2 id="adding-custom-targets"><a class="anchor" href="#adding-custom-targets"></a>Adding Custom Targets</h2>
  357. <div class="sectionbody">
  358. <div class="imageblock text-right">
  359. <div class="content">
  360. <img src="../_images/sdk/build-impl.png" alt="build-impl.png" width="" height="">
  361. </div>
  362. </div>
  363. <div class="paragraph">
  364. <p>The build script is a non-proprietary Apache Ant script. It will work out-of-the-box, but if necessary, you can extend and customize it.</p>
  365. </div>
  366. <div class="paragraph">
  367. <p>Read the comments in <code>build.xml</code>, they explain how to override targets, or extend them, to customize the build process without breaking the existing functionality.</p>
  368. </div>
  369. <div class="paragraph">
  370. <p>Additionally, you can manually override the targets in the <code>*-impl.xml</code> files that are created when you change the deployment settings:</p>
  371. </div>
  372. <div class="ulist">
  373. <ul>
  374. <li>
  375. <p>linuxlauncher-impl.xml,</p>
  376. </li>
  377. <li>
  378. <p>macapp-impl.xml,</p>
  379. </li>
  380. <li>
  381. <p>mobile-impl.xml,</p>
  382. </li>
  383. <li>
  384. <p>jnlp-impl.xml, etc.</p>
  385. </li>
  386. </ul>
  387. </div>
  388. <div class="paragraph">
  389. <p>Simply copy&amp;paste a target from these files into the main build.xml and that will be run instead with all modifications.</p>
  390. </div>
  391. <div class="paragraph">
  392. <p>* Don&#8217;t edit the base <code>-impl.xml</code> files directly, if you deactivate and reactivate a deployment setting, the SDK resets these files, so you have to copy the whole target and its dependencies, else your build script will become invalid when you disable the deployment option.</p>
  393. </div>
  394. </div>
  395. </div>
  396. </article>
  397. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  398. <div class="toc-menu"></div>
  399. </aside>
  400. </div>
  401. </main>
  402. </div>
  403. <footer class="footer">
  404. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  405. </footer>
  406. <script src="../../_/js/site.js"></script>
  407. <script async src="../../_/js/vendor/highlight.js"></script>
  408. </body>
  409. </html>