diff options
author | Olivier Mélois <baccata64@gmail.com> | 2018-04-18 22:36:00 +0100 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-04-18 14:36:00 -0700 |
commit | 7898368fe809779e73ef1cd909f1b2e5de84e6c1 (patch) | |
tree | 1ebe94dd2066fdb7db07ea8d3fd486d9775138ec /docs/pages | |
parent | 5314da0e2dea8d61400241d6c9899ea9077fff8d (diff) | |
download | mill-7898368fe809779e73ef1cd909f1b2e5de84e6c1.tar.gz mill-7898368fe809779e73ef1cd909f1b2e5de84e6c1.tar.bz2 mill-7898368fe809779e73ef1cd909f1b2e5de84e6c1.zip |
Make builds able to depend on external projects (#291)
* Make builds able to depend on external projects
Builds are now able to load external projects and depend on them
as if they were local submodules.
`import $file.external.path.build`
* Disambiguate "dest" for foreign modules.
* Calling modules loaded from external directories "Foreign" to avoid
conflicting with the already existing concept of "ExternalModule".
* Amended the way `dest` is computed for foreign modules
* Added tests to check that the source paths and dest are as expected
* Added a test to show that local modules do not conflict with foreign
modules when they are named the same
* WIP windows build fail
* Added bootstrapping step in CYGWIN CI job
* * Revert externalOutPath deletion
* Add documentation for foreign-modules
* reverting appveyor changes
* Disabling Foreign modules tests against Java9
See https://github.com/lihaoyi/mill/issues/302
Diffstat (limited to 'docs/pages')
-rw-r--r-- | docs/pages/5 - Modules.md | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/docs/pages/5 - Modules.md b/docs/pages/5 - Modules.md index 9b35af5f..1d8f3d87 100644 --- a/docs/pages/5 - Modules.md +++ b/docs/pages/5 - Modules.md @@ -155,4 +155,41 @@ that is shared by the entire build: for example, `mill.scalalib.ScalaWorkerApi/scalaWorker` provides a shared Scala compilation service & cache that is shared between all `ScalaModule`s, and `mill.scalalib.GenIdea/idea` lets you generate IntelliJ projects without -needing to define your own `T.command` in your `build.sc` file
\ No newline at end of file +needing to define your own `T.command` in your `build.sc` file + +## Foreign Modules + +Mill can load other mill projects from external (or sub) directories, +using Ammonite's `$file` magic import, allowing to depend on foreign modules. +This allows, for instance, to depend on other projects' sources, or split +your build logic into smaller files. + + +For instance, assuming the following stucture : + +```text +foo/ + build.sc + bar/ + build.sc +baz/ + build.sc +``` + +you can write the following in `foo/build.sc` : + +```scala + +import $file.bar.build +import $file.^.baz.build +import mill._ + +def someFoo = T { + + ^.baz.build.someBaz(...) + bar.build.someBar(...) + ... +} +``` + +The output of the foreign tasks will be cached under `foo/out/foreign-modules/`. |