module.cfx
module.cfx - это файл с описанием конфигурации модуля. Формат файла - cfx.
Файлы с таким же форматом:
app.cfx- описание конфигурации приложенияtest.cfx- описание конфигурации приложения для тестов
Структура файла
Пример файла module.cfx:
<root>
<x-depends module="MODULE-NAME"/>
<!-- любые другие теги - конфигурация модуля -->
</root>
root
По соглашению корневой тег cfx-файлов имеет имя root, хотя это требование
не принципиально, имя корневого тега может быть любым, оно просто игнорируется.
depends
Функция depends (тег x-depends) определяет модули, от которых зависит описываемый модуль.
Пример:
<root>
<x-depends module="jandcode.core.db"/>
<x-depends module="jandcode.core.db.mysql"/>
</root>
Подстановки #{VAR}
При загрузке файла модуля module.cfx (и всех файлов, которые он включает в
себя через x-include), в дополнение к стандартным, доступны следующие
подстановки #{VAR}, где VAR:
appdir- Каталог приложения. В этом каталоге лежит файл app.cfx.env.test- при значенииtrue- выполняются unit-тестыenv.dev- при значенииtrue- режим разработкиenv.source- при значенииtrue- проект запущен из исходниковmodule- имя модуляmodule.name- синоним дляmodulemodule.path- полный путь VFS до каталога модуля (до каталога сmodule.cfx)module.package- корневой java-пакет модуляmodule.package.cur- текущий java-пакет, в котором находится файл cfxmodule.package.rel- java-пакет, относительно корня модуля, в котором находится файл cfxmodule.packagepath- путь модуля (имя пакета модуля, где точки заменены на'/')module.packagepath.cur- путь модуля для текущего каталога с файлом cfx (имя пакета модуля, где точки заменены на'/')module.packagepath.rel- путь модуля, относительно корня модуля, для текущего каталога с файлом cfx (имя пакета модуля, где точки заменены на'/')module.projectpath- путь до проекта модуля в исходниках, в этом каталоге лежитproject.jc. Используется только в тестах! Если исходники не доступны, будет сгенерирована ошибка.env.XXX- свойства среды. ВместоXXXможно подставлять, например, имя переменной среды (в верхнем регистре, напримерenv.PATH). См:jandcode.commons.env.Env#getProperties
Пример для лучшего понимания. Допустим имеется модуль с именем proj1.mod1, который
лежит в jar по пути d:/lib/proj1-mod1.jar, а файл, в котором используется переменная,
находится в пакете модуля proj1.mod1.a.b.c Тогда:
| Переменная | Значение |
|---|---|
| module.name | proj1.mod1 |
| module.path | file:jar:d:/lib/proj1-mod1.jar!/proj1/mod1 |
| module.package | proj1.mod1 |
| module.package.cur | proj1.mod1.a.b.c |
| module.package.rel | a.b.c |
| module.packagepath | proj1/mod1 |
| module.packagepath.cur | proj1/mod1/a/b/c |
| module.packagepath.rel | a/b/c |
Пример использования:
<root>
<web>
<mount name="#{module}-root1"
realPath="#{module.path}"
virtualPath="#{module.packagepath}"/>
</web>
</root>
Указанные переменные предназначены для использования с текущим загружаемым модулем.
Можно воспользоватся форматом module.xxx:MODULENAME для получения аналогичных
переменных из любого доступного модуля.
Например:
| Переменная | Значение |
|---|---|
| module.name:proj1.mod1 | proj1.mod1 |
| module.path:proj1.mod1 | file:jar:d:/lib/proj1-mod1.jar!/proj1/mod1 |
Эта возможность предназначена в основном для тестов.
Остальные свойства
Все остальные свойства определяются потребностями модуля, требованиям модулей, от которых зависит описываемый и фантазией разработчика. Никаких ограничений.
Однако следует помнить, что многие модули вводят правила, по которым рассматривают часть свойств в описании модуля особым способом. Следует придерживатся этих правил.