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
- синоним дляmodule
module.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 |
Эта возможность предназначена в основном для тестов.
Остальные свойства
Все остальные свойства определяются потребностями модуля, требованиям модулей, от которых зависит описываемый и фантазией разработчика. Никаких ограничений.
Однако следует помнить, что многие модули вводят правила, по которым рассматривают часть свойств в описании модуля особым способом. Следует придерживатся этих правил.