Manage dependencies between projects and libraries to enable resource sharing, modular development, and version control across your FlowX applications
Dependencies in FlowX enable projects and libraries to share and reuse resources, fostering modular development and reducing duplication. By establishing dependency relationships, you can access common assets like processes, enumerations, and media files from external libraries while maintaining version control and stability.
A dependency tree represents the hierarchical structure of dependencies for a project or library. In FlowX 5.0, dependency trees can include multiple levels of library dependencies.
Important Constraint: FlowX 5.0 implements a single-version constraint for dependency trees. The same library cannot exist multiple times in a dependency tree with different builds.
When dependency conflicts occur, you have several resolution options:
1
Update Direct Dependencies
Update the direct library dependency to a version that uses the required transitive dependency version.
Copy
Ask AI
# Before (Conflict)Project → Library A (1.0) → Commons (1.1) → Library B (2.0) → Commons (1.2) # Conflict# After (Resolved)Project → Library A (1.1) → Commons (1.2) # Updated A to use Commons 1.2 → Library B (2.0) → Commons (1.2) # Now compatible
2
Create New Library Builds
Create new builds of libraries that include the required dependency versions.
3
Restructure Dependencies
Reorganize your dependency structure to avoid conflicts, potentially by creating intermediate libraries.
When multiple resources with the same name exist in the dependency tree:
1
Highest Level Wins
Resources from the highest level (closest to the project) take precedence.
Copy
Ask AI
Project (Level 0)├── Library A (Level 1) - contains ENUM_X└── Library B (Level 1) └── Library C (Level 2) - contains ENUM_X# ENUM_X from Library A (Level 1) is used
2
Same Level Resolution
If resources exist at the same level, the resource from the newest build (by build creation date) takes precedence.
3
Predictable Resolution
The resolution is deterministic and consistent across environments.
Best Practice: Avoid duplicate resource names across libraries in your dependency tree to maintain control and predictability over resource usage at runtime.
Yes, libraries can have multiple dependencies, just like projects. Each dependency is managed independently and contributes to the overall dependency tree.
What happens if I delete a library that others depend on?
FlowX prevents deletion of libraries that are referenced as dependencies. You must remove all dependency references before a library can be deleted.
Can I test with WIP versions of dependencies?
No, dependencies must reference committed builds, not WIP (Work in Progress) versions. This ensures stability and prevents issues with changing dependencies.
How deep can dependency trees go?
There’s no enforced limit on dependency tree depth, but for maintainability and performance, it’s recommended to keep trees reasonably shallow (typically 3-4 levels maximum).
What's the difference between direct and transitive dependencies?
Direct dependencies: Libraries explicitly added as dependencies to your project or library
Transitive dependencies: Libraries that are dependencies of your direct dependencies (automatically included)
How do I resolve dependency conflicts between teams?
Establish clear communication channels between teams
Plan library updates and coordinate with dependent teams
Use development environments to test impact of changes
Consider creating shared governance processes for critical libraries
Can I override a transitive dependency with a direct dependency?
No, FlowX enforces the single-version constraint. If you need a different version of a transitive dependency, you must update the direct dependency that includes it.