Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ jobs:

steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '8'
java-version: '21'
distribution: 'zulu'
cache: maven
- name: Build with Maven
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ private
local
modules/DataBrowser/src/main/resources/my*.properties
modules/Core/src/main/resources/my*.properties*
.claude
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,3 @@ The canonical two-server deployment of the MouseLight neuron tracing tools is de
## For Developers

For information about building this code base, see the [Development](docs/Development.md). To create an official release, see the [Release](docs/ReleaseProcess.md) documentation.

57 changes: 57 additions & 0 deletions docs/Development.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

The Janelia Workstation is built on top of the [Apache NetBeans Platform](https://netbeans.apache.org/kb/docs/platform/). It is recommended for developers to get familiar with the concepts used in this framework before diving into Workstation development. The best starting point is _The Definitive Guide to NetBeans Platform_ by Heiko Bock.

## Requirements

Use JDK 21 or newer to build, run, and package the Workstation. The project is built against Apache NetBeans Platform RELEASE300 and compiles with `--release 21`, so generated classes target the Java 21 runtime level.

The Maven enforcer accepts JDK 21 or newer. If multiple JDKs are installed, set `JAVA_HOME` to the JDK version you want Maven and `jpackage` to use.

## Building

To build the Janelia Workstation application for Janelia Research Campus, use the `janeliaws` profile:
Expand All @@ -14,6 +20,57 @@ To build the Janelia HortaCloud application, use the `horta` profile:
mvn --batch-mode -T 8 -Djava.awt.headless=true -P horta clean install
```

To build the full project without running tests:
```
mvn -DskipTests compile
```

### Packaging

Native application images and installers are built with `jpackage`.

Run package builds with JDK 21 or newer. For example, on macOS, to select JDK 21 explicitly:

```
JAVA_HOME=$(/usr/libexec/java_home -v 21)
```

To build the Janelia Workstation application image:
```
mvn -Pjaneliaws,deployment -pl modules/application -am -DskipTests -Djpackage.type=APP_IMAGE package
```

The generated application image is written under:
```
modules/application/target/jpackage/
```

To build the Horta application image:
```
mvn -Phorta,deployment -pl modules/application_horta -am -DskipTests -Djpackage.type=APP_IMAGE package
```

The generated application image is written under:
```
modules/application_horta/target/jpackage/
```

To build a native installer instead of an application image, change `jpackage.type` to the package type for the target operating system:
```
# macOS
-Djpackage.type=DMG
-Djpackage.type=PKG

# Windows
-Djpackage.type=MSI
-Djpackage.type=EXE

# Linux
-Djpackage.type=DEB
```

Native packages must be built on the target operating system. For example, build `DMG` or `PKG` on macOS, `MSI` or `EXE` on Windows, and `DEB` on Linux.

## Running

To run the Janelia Workstation application, use the `janeliaws` profile:
Expand Down
2 changes: 2 additions & 0 deletions docs/ReleaseProcess.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ The Workstation client is built and distributed using the [Apache NetBeans Platf

./release.sh <version>

Release builds should be run with JDK 21 or newer. The client is built against Apache NetBeans Platform RELEASE300 and compiles with `--release 21`.

The version number should be in [Semantic Versioning](https://semver.org/) style. This release process automatically increments all module versions, and sets the overall Workstation version. You can then proceed over to the [jacs-cm](https://github.com/JaneliaSciComp/jacs-cm) repository to rebuild the workstation-site container using your newly released Workstation version.

## Docker Build
Expand Down
6 changes: 3 additions & 3 deletions modules/AdministrationGUI/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
<parent>
<groupId>org.janelia</groupId>
<artifactId>workstation</artifactId>
<version>9.21</version>
<version>10.0</version>
<relativePath>../..</relativePath>
</parent>

<name>AdministrationGUI</name>
<groupId>org.janelia.workstation</groupId>
<artifactId>adminstration</artifactId>
<version>9.21</version>
<version>10.0</version>
<packaging>nbm</packaging>

<dependencies>
Expand Down Expand Up @@ -111,7 +111,7 @@
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<groupId>org.apache.netbeans.utilities</groupId>
<artifactId>nbm-maven-plugin</artifactId>
</plugin>
</plugins>
Expand Down
6 changes: 3 additions & 3 deletions modules/ColorDepthSearch/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
<parent>
<groupId>org.janelia</groupId>
<artifactId>workstation</artifactId>
<version>9.21</version>
<version>10.0</version>
<relativePath>../..</relativePath>
</parent>

<name>ColorDepthSearch</name>
<groupId>org.janelia.workstation</groupId>
<artifactId>colordepth</artifactId>
<version>9.21</version>
<version>10.0</version>
<packaging>nbm</packaging>

<dependencies>
Expand Down Expand Up @@ -82,7 +82,7 @@
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<groupId>org.apache.netbeans.utilities</groupId>
<artifactId>nbm-maven-plugin</artifactId>
<configuration>
<publicPackages>
Expand Down
6 changes: 3 additions & 3 deletions modules/CommonGUI/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
<parent>
<groupId>org.janelia</groupId>
<artifactId>workstation</artifactId>
<version>9.21</version>
<version>10.0</version>
<relativePath>../..</relativePath>
</parent>

<name>CommonGUI</name>
<groupId>org.janelia.workstation</groupId>
<artifactId>common-gui</artifactId>
<version>9.21</version>
<version>10.0</version>
<packaging>nbm</packaging>

<dependencies>
Expand Down Expand Up @@ -124,7 +124,7 @@
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<groupId>org.apache.netbeans.utilities</groupId>
<artifactId>nbm-maven-plugin</artifactId>
<configuration>
<publicPackages>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
import org.eclipse.jetty.util.ConcurrentHashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.swing.DefaultLookup;

import javax.swing.UIManager;
import javax.swing.BoundedRangeModel;
import javax.swing.JComponent;
import javax.swing.JProgressBar;
Expand Down Expand Up @@ -459,7 +458,8 @@ private int getRepaintInterval() {
}

private int initRepaintInterval() {
repaintInterval = DefaultLookup.getInt(progressBar, this, "ProgressBar.repaintInterval", 50);
repaintInterval = UIManager.getInt("ProgressBar.repaintInterval");
if (repaintInterval == 0) repaintInterval = 50;
return repaintInterval;
}

Expand All @@ -478,7 +478,8 @@ private int initRepaintInterval() {
// }

private int initCycleTime() {
cycleTime = DefaultLookup.getInt(progressBar, this, "ProgressBar.cycleTime", 3000);
cycleTime = UIManager.getInt("ProgressBar.cycleTime");
if (cycleTime == 0) cycleTime = 3000;
return cycleTime;
}

Expand Down
32 changes: 23 additions & 9 deletions modules/CommonLibraries/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
<parent>
<groupId>org.janelia</groupId>
<artifactId>workstation</artifactId>
<version>9.21</version>
<version>10.0</version>
<relativePath>../..</relativePath>
</parent>

<name>CommonLibraries</name>
<groupId>org.janelia.workstation</groupId>
<artifactId>libraries</artifactId>
<version>9.21</version>
<version>10.0</version>
<packaging>nbm</packaging>

<properties>
Expand Down Expand Up @@ -57,6 +57,10 @@
<groupId>org.janelia.jacs-storage</groupId>
<artifactId>jacsstorage-clients</artifactId>
</dependency>
<dependency>
<groupId>org.janelia.workstation</groupId>
<artifactId>woodstoxlib</artifactId>
</dependency>
<dependency>
<groupId>org.janelia.legacy</groupId>
<artifactId>shared</artifactId>
Expand All @@ -76,11 +80,6 @@
<artifactId>jai-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai-codec</artifactId>
<version>1.1.3</version>
</dependency>
<!-- This is never used directly in our code, but adds support for TIFF images to ImageIO -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
Expand Down Expand Up @@ -135,6 +134,16 @@
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${janeliaws.jackson.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>stax2-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
Expand Down Expand Up @@ -286,6 +295,12 @@
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>3.5.0</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>wstx-asl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
Expand Down Expand Up @@ -382,7 +397,7 @@
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<groupId>org.apache.netbeans.utilities</groupId>
<artifactId>nbm-maven-plugin</artifactId>
<configuration>
<publicPackages>
Expand Down Expand Up @@ -456,7 +471,6 @@
<publicPackage>com.google.common.reflect</publicPackage>
<publicPackage>com.google.common.util.concurrent</publicPackage>
<publicPackage>com.google.gwt.user.client.rpc</publicPackage>
<publicPackage>com.sun.media.jai.codec</publicPackage>
<publicPackage>com.twelvemonkeys</publicPackage>
<publicPackage>com.twelvemonkeys.image</publicPackage>
<publicPackage>com.twelvemonkeys.io</publicPackage>
Expand Down
Loading