How to produce the ready_to_use jar packages - RaiMan/SikuliX-2014 GitHub Wiki

You need a valid Maven 3 installation allowing to use mvn on command line.
... and out of the box it only works in the context of this repo structure

For the normal user (not being a Sikuli developer or contributor)
it is strongly recommended, to produce the ready-to-use jars

  • sikulix.jar
  • sikulixapi.jar

using sikulixsetup-1.1.0.jar from the download page



**The following applies to version 1.1.0+**

The Basics

The ready-to-use jars contain all Java dependencies and, depending on the selected setup options, native libraries and the basic tessdata folder. The jars downloaded during setup (or taken locally from the setup/Downloads folder) are not useable without being processed by setup. Setup will add the additional stuff as needed locally and so produce the ready-to-use fat jars.
Additionally the setup process checks relevant environment aspects, exports convenience command scripts and some other stuff and runs a basic test after package build, to assure, that the package is useable. On Windows the needed entry in system path for the native libraries is added to the registry on the fly.


**IN ANY CASE:**
When running setup with stuff generated from this repo, be aware, that you are doing an offline setup.
**So be sure, not to download anything during the setup process.**

How To

In the root folder run mvn clean install, if anything was changed since the last time.

In the following the term version in filenames is the current version of the repo like:
1.1.0

In the following the term timestamp in folder-/filenames is the build time (install run) of the repo like:
201510150932 (as YYYYMMDDHHSS)

In the following the term SikulixAppData in foldernames is the following location on your system:

  • Windows: the folder %APPDATA%\Sikulix
  • Mac: ~/Library/Applications Support/Sikulix
  • Linux: ~/.Sikulix

Now run the setup with mvn -pl Setup exec:exec.

This is the expected result at the time, when the setup options dialog appears:

-- folder [SikulixAppData]/SikulixSetup
sikulixsetup-version-timestamp-project.jar

-- folder [SikulixAppData]/SikulixDownloads

jython-standalone-2.7.0.jar (Jython)
jruby-complete-9.0.1.0.jar (JRuby)
tesseract-ocr-3.02.eng.tar.gz (tessdata)

-- folder [SikulixAppData]/SikulixDownloads-timestamp

sikulixlibslux-version.jar (native libs for Linux)
sikulixlibsmac-version.jar (native libs for Mac)
sikulixlibswin-version.jar (native libs for Windows)
sikulixsetupAPI-version-timestamp.jar
sikulixsetupIDE-version-timestamp.jar

As already mentioned: None of these jars in the folders SikulixDownloads... are useable!

Just run the setup to the end and you will have (depending on the selected options):

-- folder [SikulixAppData]/SikulixSetup

sikulixsetup-version-timestamp-project.jar
sikulix.jar (option 1)
sikulixapi.jar (option 2)
runsikulix(.cmd) (option 1)

These artefacts can be moved/copied to wherever you want.

But to avoid future version/update problems, you should keep them in one prominent place only and work with links/references (e.g. in IDE's like Eclipse, NetBeans, ...).

Additionally the following folders/contents where created in the folder SikulixAppData:

-- folder [SikulixAppData]
   -- folder SikulixLibs_timestamp
      content: native libs for this system suitable for the version with that build timestamp
   -- folder Libs
      content: stuff needed for scripting with Jython, JRuby and JavaScript
   -- folder: SikulixTesseract
      content: stuff to support Tesseract usage (tessdata)
   -- folder Extensions
      content: future use (additions/plugins for Sikulix)

Generally you should only touch these folders in SikulixAppData and their content, if you know what you are doing.
NEVER move this stuff elsewhere (though copy is allowed, but has no effect for Sikulix)

At any time (e.g. in debugging situations) you might delete one or more of these folders (always folders - not only files!), since they will be recreated on the fly at runtime using the respective feature jar.

In usage situations, just take care, that the respective jar (sikulix or sikulixapi) is on the Java class path at runtime.

⚠️ **GitHub.com Fallback** ⚠️