Building OmegaT
OmegaT is built with Gradle. Run gradlew tasks
from the top level to see the
available tasks. Run gradlew build
to build all possible distfiles and run the
main tests. Tasks skipped due to missing requirements will be noted in the
output.
OmegaT will run on the latest Java, but is required to be compatible with Java 1.8.
Eclipse and NetBeans are recommended IDEs for working with OmegaT source code. NetBeans is required to modify *.form-based GUI layouts (install the Gradle Support plugin to open the OmegaT project in NetBeans.)
Check the other files in this directory for documentation. You can
produce Javadoc by running gradlew javadoc
, or browse online:
https://omegat.sourceforge.io/javadoc-latest/
Configuring Build Tasks
Some build tasks, such as signed installers, require additional configuration
via a local.properties
file placed at the root of the source tree. See
local.properties.example
.
Build Assets
Some build tasks require the user to supply additional files not included in the
OmegaT source. These files should be placed in the assets directory, which by
default is ..
, i.e. one level up from the OmegaT source root. You can specify
a different directory by supplying the argument -PassetDir=/path/to/wherever
.
In particular, with-JRE builds require a JRE tarball for the appropriate
platform, e.g. OpenJDK11U-jre-*-macosx-x64.tar.gz
.
Containerized Tasks
Some build tasks require additional software to be installed:
-
Windows installers require InnoSetup with all optional language files http://www.jrsoftware.org/isinfo.php
-
Signed Windows installers require osslsigncode https://sourceforge.net/projects/osslsigncode/
-
Docs generation requires a whole ecosystem. See /doc_src/Readme.txt
To alleviate the pain of installing and configuring things, these tools have been containerized and automated via Docker. If you want to run these build tasks, you are strongly recommended to install Docker:
Working with Dependencies
OmegaT uses Gradle to manage and fetch dependencies automatically. To add, change, or remove a dependency, see the dependencies block in build.gradle.
Dependency JARs are provided in the "source" distribution of OmegaT under /lib/provided, as insurance in case any dependencies should become unavailable online. When /lib/provided is present, compile-time dependencies will be resolved locally, minimizing network access (network access is still required for initializing the Gradle wrapper, fetching Gradle plugins, and fetching test dependencies).
Customized Dependencies
OmegaT uses unmodified packages as much as possible, but when modifications are required and the upstream project is abandoned or unresponsive, custom-patched libraries are also used.
Patched forks can be found on GitHub: https://github.com/omegat-org
In some cases (especially defunct projects) OmegaT forks are also published for general use on Maven Central: https://search.maven.org/search?q=g:org.omegat*
Dependencies not available for consumption via Maven/Gradle are committed to /lib/manual.