A JavaFX application framework made initially to create accelerator physics applications based on Open XAL, an open source development environment used for creating accelerator physics applications, scripts and services.
XAOS is written using the Java Platform Module System (JPMS) available since
Java 9. The Maven project is also organized in modules maintaining a 1-to-1
mapping with the JPMS ones. A Maven module's name is made up by the JPMS module
one plus the .module
suffix.
The XAOS App module (xaos.tools
) provides a JavaFX-based application
framework for building UI-based applications with menus, toolbars, etc.
The XAOS Core module (xaos.core
) provides the non-UI classes part of the
framework. Any non-graphical application can use this module.
The XAOS Tools module (xaos.tool
) provides tools and utilities used by the
other XAOS modules (e.g. annotation processors) to simplify some programming
tasks.
The XAOS UI module (xaos.ui
) provides JavaFX-based controls and tools
suitable for other projects too.
The XAOS Gauge module (xaos.ui.gauge
) provides the JavaFX-based kit of
controls and tools for creating gauges.
The XAOS Plot module (xaos.ui.plot
) provides the JavaFX-based controls and
tools for plotting data into a graph.
From the introduction of JPMS in Java 9, some tests cannot anymore performed from inside the module to be tested. for this reasons there are some specific JPMS/Maven modules built to test others:
Each XAOS module needed to build your application require a dependency in the
application's pom.xml
file like the following one:
<dependency>
<groupId>se.europeanspallationsource</groupId>
<artifactId>xaos.module</artifactId>
<version>0.4.3</version>
<scope>compile</scope>
</dependency>
where module is the name of the XAOS module needed. Look at the README.md
file of the module you need for more examples and information.
Here the Maven dependencies of xaos
project:
Inside your application's module-info.java
file the following dependency must
be added:
module your.application {
...
requires xaos.module;
...
}
where module is the name of the XAOS module needed. Look at the README.md
file of the module you need for more examples and information.
XAOS defines the following system properties that can be set before launching
an application build on XAOS (using java -D<name>=<value> ...
):
Property | Type | Default | Description |
---|---|---|---|
xaos.test.verbose | boolean | false |
Some tests will be more verbose if set to true . |
Running TextFX Tests
When XAOS is built JUnit tests and UI ones (based on TextFX) are automatically performed.
On macOS since version 10.14 Mojave it is necessary to explicitly allow the IDE or the Terminal application performing the build to control the computer. This can be done in the Privacy tab of the Security & Privacy system preferences, by selecting the Accessibility category, the adding and enabling the applications.
The XAOS project on GitHub is using Gitflow, development model introduced by Vincent Driessen, here summarized:
Who wants to contribute this projects must adopt the Gitflow model and tools.