GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Migrate many SciJava Common subsystems by ctrueden · Pull Request #295 · scijava/scijava

Migrate many SciJava Common subsystems #295

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Sign up for GitHub

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ctrueden wants to merge 59 commits into main
base: main
Loading
Loading
from scijava-common-migration

Uh oh!

There was an error while loading. Please reload this page.

Open

Migrate many SciJava Common subsystems #295

Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
5e9836a
docs: add SciJava Common migration plan
ctrueden Sep 16, 2026
82cd7c8
scijava-ops-image: stop using SciJava Common utilities
ctrueden Sep 16, 2026
71852f7
scijava-discovery: make Discoverer yield lazy descriptors
ctrueden Sep 16, 2026
0771222
Pin scijava-discovery and scijava-priority versions
ctrueden Sep 16, 2026
4b8feff
Pin every consumed SciJava artifact version
ctrueden Sep 16, 2026
9084574
scijava-spi: add a module of framework-free interfaces
ctrueden Sep 16, 2026
9a5b15e
scijava-common3: absorb general utilities from SciJava Common
ctrueden Sep 16, 2026
24ba06b
scijava-common3: add FilePaths, from SciJava Common's FileUtils
ctrueden Sep 16, 2026
7d73482
scijava-index: port annotation indexing, with a lazy Discoverer
ctrueden Sep 16, 2026
313843f
docs: correct the Phase 2 injection design
ctrueden Sep 16, 2026
790ec74
scijava-io3: port locations, standalone on plain ServiceLoader
ctrueden Sep 16, 2026
c7842b0
scijava-io3: port data handles
ctrueden Sep 16, 2026
ea1ac3c
Make cancellation thread interruption
ctrueden Sep 16, 2026
ef68624
scijava-concurrent: let cancellation survive a parallel section
ctrueden Sep 16, 2026
df12101
docs: do not port io.nio
ctrueden Sep 16, 2026
80f4333
scijava-io3: port ByteBufferByteBank, keeping direct banks off-heap
ctrueden Sep 16, 2026
5039837
scijava-events: a typed event bus, written clean
ctrueden Sep 16, 2026
e09d280
docs: record incarnational versioning, and defer scijava-persist
ctrueden Sep 17, 2026
f65c690
scijava-io3: start at 3.0.0-SNAPSHOT
ctrueden Sep 17, 2026
caa9640
scijava-context: the container core
ctrueden Sep 17, 2026
7822074
scijava-context: the plugin tier
ctrueden Sep 17, 2026
394b956
scijava-context: declarative dependency injection
ctrueden Sep 17, 2026
de2e89f
scijava-context: @EventHandler scanning
ctrueden Sep 17, 2026
2e01213
docs: scrutinize the core services, and settle the preferences design
ctrueden Sep 17, 2026
9156ef6
docs: use TOML rather than YAML for the settings store
ctrueden Sep 17, 2026
634d940
scijava-execute: run things that declare their inputs and outputs
ctrueden Sep 17, 2026
1e1e662
scijava-execute: the pre/postprocessor chain
ctrueden Sep 17, 2026
95b4e57
docs: say how Fiji gets built on SciJava3
ctrueden Sep 17, 2026
0138735
scijava-execute: generalize beyond Java classes, for scripts
ctrueden Sep 17, 2026
0e4ac38
scijava-command: discoverable commands, and the metadata menus need
ctrueden Sep 17, 2026
80bab69
One opens, to the container
ctrueden Sep 17, 2026
cfead6d
Add the menu tree, and make Access a static utility
ctrueden Sep 17, 2026
b6ff554
scijava-harvest: prototype the parameter dialog model
ctrueden Sep 17, 2026
df48f01
Support computed parameter choices, closing the DynamicCommand gap
ctrueden Sep 17, 2026
58fd161
scijava-ui3 and scijava-swing: widgets, and dialogs to click on
ctrueden Sep 17, 2026
0a57e16
Fix the widget bugs the demos turned up, and fill in the gaps
ctrueden Sep 17, 2026
1384996
Ignore Eclipse's .factorypath
ctrueden Sep 17, 2026
46a5f3e
migration.md: the command row was ported two commits ago
ctrueden Sep 17, 2026
193a373
A Swing shell: menus, search, status -- the first whole-stack demo
ctrueden Sep 18, 2026
19e9d00
scijava-javafx: a second binding, and what it proved
ctrueden Sep 18, 2026
ad4ed60
scijava-awt: a third binding, and where the shared code belongs
ctrueden Sep 18, 2026
ada9894
scijava-convert3: one question, and it sits below the container
ctrueden Sep 18, 2026
22c0dc6
scijava-script3: a script is an Executable like any other
ctrueden Sep 18, 2026
40d687d
Scripts declare their presentation, and menus take more than one source
ctrueden Sep 18, 2026
7c100d4
Name the general thing what users call it: CommandInfo
ctrueden Sep 18, 2026
477a544
The legacy bridge, and the split package it found
ctrueden Sep 18, 2026
1f0084d
One name per foreign library: scijava-compat, -ops-compat, -imagej-co…
ctrueden Sep 18, 2026
1d8efbd
migration.md: say what the presentation metadata actually does
ctrueden Sep 18, 2026
3a2aa7e
scijava-cli: run the same commands without a display
ctrueden Sep 18, 2026
eccf33e
scijava-settings: one TOML file a person can read and edit
ctrueden Sep 19, 2026
7f4e5fa
Shorten submodule folder names
ctrueden Sep 20, 2026
680d702
Make Context.doDispose() less deadlock-prone
ctrueden Sep 25, 2026
a641987
Migrate incarnational versioning writeup to here
ctrueden Oct 26, 2026
e625d35
README: fix build badge
ctrueden Oct 26, 2026
ee70467
Fix wrong suggested scijava-ops-indexer version
ctrueden Oct 26, 2026
a3f8e24
Pin the migration plan's scijava-persist version
ctrueden Oct 26, 2026
289a91c
Fix javadoc errors
ctrueden Oct 26, 2026
e197fad
Make DiscoveryLazinessTest independent of test order
ctrueden Oct 28, 2026
ba91881
Address Copilot review feedback
ctrueden Oct 28, 2026
File filter
Filter by extension


Clear filters
Conversations
Failed to load comments.
Loading

Uh oh!

There was an error while loading. Please reload this page.

Jump to
Jump to file
Failed to load files.
Loading

Uh oh!

There was an error while loading. Please reload this page.

Diff view
Diff view
Prev Previous commit
Next Next commit
scijava-spi: add a module of framework-free interfaces
A new dependency-free module for interfaces that any object can
implement without knowing about a SciJava framework, so that code
wanting only these contracts takes on the smallest possible dependency.

Contains Versioned and GenericTyped, moved out of scijava-common3, plus
Named, Identifiable and Disposable ported from SciJava Common. No
deprecated aliases are left in scijava-common3, which the repository's
current adoption level permits.

Method names are modernized rather than preserved: getIdentifier() is
now id(), and Disposable.dispose() is abstract rather than a no-op
default, since a default that does nothing means implementing the
interface proves nothing to callers. Named exposes name() only --
mutability is a separate contract, rather than a setter that throws
UnsupportedOperationException and forces every caller to feature-detect.

Deliberately omitted for now, pending a consumer:

- Locatable, whose only real content was a default implementation
  requiring common3.Classes.location, which this module cannot depend on.
- Typed, which has no consumer until the plugin layer exists, and whose
  Class<T> type() would silently satisfy GenericTyped.type() as well,
  since Class implements Type.

Both are cheap to add on demand and expensive to remove once published.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013gJpzGd3ksbME4CN6Tu2ni
  • Loading branch information

Uh oh!

There was an error while loading. Please reload this page.

@ctrueden @claude
ctrueden and claude committed Oct 28, 2026
commit 9084574faec63bfc61ee9dd8642293e3edf4cd92

There are no files selected for viewing

30 changes: 25 additions & 5 deletions 30 docs/migration-plan.md
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,17 @@ The deliverable is not a reimplementation of SJC. It is:
acceptable for a component in wind-down.
3. **`scijava-legacy` bridges the other way** (SJ3 → SJC), and is the only
place in this repository permitted to depend on `scijava-common`.
4. **Every component POM must pin the version of every SciJava artifact it
consumes, transitively included.** The modules here inherit from
`pom-scijava`, not from this repository's aggregator POM, so a version
property that is merely *absent* silently resolves the last *released*
artifact instead of the reactor's snapshot. Nothing enforces the "these
versions must match across all component POMs" convention, and the failure
is invisible until an API changes — at which point it surfaces as
`NoSuchMethodError` or `NoClassDefFoundError` at test time, far from its
cause. Six components were found in this state while moving interfaces into
`scijava-spi`. **An enforcer rule for this would pay for itself**; it is
listed under open decisions.

## Current state

Expand Down Expand Up @@ -217,11 +228,11 @@ SLF4J, used directly, as `scijava-types` and `scijava-ops-engine` already do.

No application context required by anything in this phase.

- **`scijava-spi`** (new): pure interfaces, no behavior, no dependencies —
`Versioned`, `GenericTyped`, `Named`, `Identifiable`, `Locatable`, `Typed`,
`Disposable`. `Versioned` and `GenericTyped` move here from `common3`, which
retains deprecated sub-interfaces so implementors stay source-compatible.
`common3` does **not** gain a transitive dependency on it.
- **`scijava-spi`** (new): pure interfaces, no behavior, no dependencies.
**Done**, with `Versioned`, `GenericTyped`, `Named`, `Identifiable` and
`Disposable`. `Versioned` and `GenericTyped` moved here from `common3` and
were **not** left behind as deprecated aliases, which the repository's
current adoption level permits.
- The test for membership: *if a class can implement it without knowing
about any SciJava framework, it is SPI.* `Cancelable` fails that test
(cancellation concerns a running thing — it belongs with the execution
Expand All @@ -231,6 +242,12 @@ No application context required by anything in this phase.
- `Named` exposes `String name()` only. Mutability is a separate contract;
a default `setName` that throws `UnsupportedOperationException` forces
every caller to feature-detect.
- **Deferred, pending a consumer:** `Locatable`, whose only real content was
a default implementation that needs `common3.Classes.location` — which
this module cannot depend on; and `Typed`, which has no consumer until the
plugin layer exists, and whose `Class<T> type()` would collide awkwardly
with `GenericTyped.type()` returning a `Type`. Both are cheap to add when
something needs them; neither is cheap to remove once published.
- **`scijava-common3`** absorbs the remaining general utilities: `ArrayUtils`,
`StringUtils`, `Bytes`, `DigestUtils`, `NumberUtils`, `ProcessUtils`,
`ListUtils`, `UnitUtils`, and the non-URL parts of `FileUtils`. It stays
Expand Down Expand Up @@ -393,4 +410,7 @@ independence and should not carry the `scijava-` prefix.
the bridge content grows.
- **`util.Timing` and `util.TreeNode`:** port or drop, pending evidence of
downstream usage.
- **A build-time check that every consumed SciJava artifact is version-pinned
in the consuming POM** — see hard constraint 4. Today this is caught only by
a full clean build after an API change.
- **`display`:** what the redesigned output-presentation mechanism looks like.
8 changes: 6 additions & 2 deletions 8 docs/migration.md
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,12 @@ A **dropped** row is a successful outcome, not a gap.
| SJC class | Replacement | Status |
| --- | --- | --- |
| `Priority`, `Prioritized` | `org.scijava.priority.*` | ported |
| `Versioned` | `org.scijava.spi.Versioned` (Phase 1; currently `common3`) | planned |
| `Named`, `Identifiable`, `Locatable`, `Typed`, `Disposable` | `org.scijava.spi.*` (Phase 1). `Named` becomes read-only — `String name()` — with mutability a separate contract | planned |
| `Versioned` | `org.scijava.spi.Versioned` (moved out of `common3`) | ported |
| `Named` | `org.scijava.spi.Named` — read-only `String name()`; mutability is a separate contract | ported |
| `Identifiable` | `org.scijava.spi.Identifiable` — `getIdentifier()` is now `id()` | ported |
| `Disposable` | `org.scijava.spi.Disposable` — `dispose()` is abstract, not a no-op default | ported |
| `Locatable` | deferred — its only content was a default implementation needing `common3.Classes.location`, which `scijava-spi` cannot depend on | open |
| `Typed` | deferred to the plugin layer — no consumer yet, and `Class<T> type()` collides with `GenericTyped.type()` | open |
| `Initializable` | `scijava-context` (Phase 2) — a lifecycle hook, not an SPI contract | planned |
| `Cancelable` | execution layer (Phase 3) — cancellation concerns a running thing | planned |
| `ItemIO` | `org.scijava.struct.ItemIO` | ported |
Expand Down
1 change: 1 addition & 0 deletions 1 pom.xml
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
<module>scijava-ops-tutorial</module>
<module>scijava-priority</module>
<module>scijava-progress</module>
<module>scijava-spi</module>
<module>scijava-struct</module>
<module>scijava-testutil</module>
<module>scijava-types</module>
Expand Down
6 changes: 6 additions & 0 deletions 6 scijava-meta/pom.xml
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@

<!-- Note: These versions must match across all component POMs! -->
<scijava-common3.version>1.0.1-SNAPSHOT</scijava-common3.version>
<scijava-spi.version>1.0.0-SNAPSHOT</scijava-spi.version>
</properties>

<dependencies>
Expand All @@ -104,6 +105,11 @@
<artifactId>scijava-common3</artifactId>
<version>${scijava-common3.version}</version>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-spi</artifactId>
<version>${scijava-spi.version}</version>
</dependency>

<!-- Test scope dependencies -->
<dependency>
Expand Down
1 change: 1 addition & 0 deletions 1 scijava-meta/src/main/java/module-info.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
requires java.xml;

requires org.scijava.common3;
requires transitive org.scijava.spi;

exports org.scijava.meta;
}
2 changes: 1 addition & 1 deletion 2 scijava-meta/src/main/java/org/scijava/meta/Manifest.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import java.util.jar.Attributes;

import org.scijava.common3.Classes;
import org.scijava.common3.Versioned;
import org.scijava.spi.Versioned;

/**
* Helper class for working with JAR manifests.
Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-meta/src/main/java/org/scijava/meta/POM.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import org.scijava.common3.Apps;
import org.scijava.common3.Classes;
import org.scijava.common3.URLs;
import org.scijava.common3.Versioned;
import org.scijava.spi.Versioned;

/**
* Helper class for working with Maven POMs.
Expand Down
6 changes: 6 additions & 0 deletions 6 scijava-ops-api/pom.xml
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
<scijava-discovery.version>1.0.1-SNAPSHOT</scijava-discovery.version>
<scijava-function.version>1.0.1-SNAPSHOT</scijava-function.version>
<scijava-priority.version>1.0.1-SNAPSHOT</scijava-priority.version>
<scijava-spi.version>1.0.0-SNAPSHOT</scijava-spi.version>
<scijava-struct.version>1.0.1-SNAPSHOT</scijava-struct.version>
<scijava-types.version>1.0.1-SNAPSHOT</scijava-types.version>

Expand Down Expand Up @@ -126,6 +127,11 @@
<artifactId>scijava-priority</artifactId>
<version>${scijava-priority.version}</version>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-spi</artifactId>
<version>${scijava-spi.version}</version>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-struct</artifactId>
Expand Down
1 change: 1 addition & 0 deletions 1 scijava-ops-api/src/main/java/module-info.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
exports org.scijava.ops.api;

requires org.scijava.common3;
requires transitive org.scijava.spi;
requires org.scijava.function;
requires transitive org.scijava.priority;
requires transitive org.scijava.struct;
Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-ops-api/src/main/java/org/scijava/ops/api/OpEnvironment.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ default OpBuilder op(final String opName, final Hints hints) {
* contract of the stated {@code opType}.
* @return An enriched version of the lambda object that embeds knowledge of
* its generic type by implementing the
* {@link org.scijava.common3.GenericTyped} interface.
* {@link org.scijava.spi.GenericTyped} interface.
*/
<T> T typeLambda(Nil<T> opType, T lambda);

Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-ops-api/src/main/java/org/scijava/ops/api/OpInstance.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import java.lang.reflect.Type;
import java.util.Objects;

import org.scijava.common3.GenericTyped;
import org.scijava.spi.GenericTyped;

/**
* An instance of an {@link OpInfo}. They can be constructed directly, but are
Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-ops-api/src/main/java/org/scijava/ops/api/RichOp.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

import java.lang.reflect.Type;

import org.scijava.common3.GenericTyped;
import org.scijava.spi.GenericTyped;

/**
* An {@link OpInstance} with state
Expand Down
6 changes: 6 additions & 0 deletions 6 scijava-ops-engine/pom.xml
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
<scijava-ops-spi.version>1.0.1-SNAPSHOT</scijava-ops-spi.version>
<scijava-priority.version>1.0.1-SNAPSHOT</scijava-priority.version>
<scijava-progress.version>1.0.1-SNAPSHOT</scijava-progress.version>
<scijava-spi.version>1.0.0-SNAPSHOT</scijava-spi.version>
<scijava-struct.version>1.0.1-SNAPSHOT</scijava-struct.version>
<scijava-taglets.version>1.0.1-SNAPSHOT</scijava-taglets.version>
<scijava-testutil.version>1.0.1-SNAPSHOT</scijava-testutil.version>
Expand Down Expand Up @@ -184,6 +185,11 @@
<artifactId>scijava-progress</artifactId>
<version>${scijava-progress.version}</version>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-spi</artifactId>
<version>${scijava-spi.version}</version>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-struct</artifactId>
Expand Down
1 change: 1 addition & 0 deletions 1 scijava-ops-engine/src/main/java/module-info.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
requires java.compiler;

requires org.scijava.common3;
requires org.scijava.spi;
requires org.scijava.collections;
requires org.scijava.discovery;
requires org.scijava.function;
Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-ops-engine/src/main/java/org/scijava/ops/engine/impl/LambdaTypeBaker.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;

import org.scijava.common3.GenericTyped;
import org.scijava.spi.GenericTyped;
import org.scijava.common3.Types;

import javassist.CannotCompileException;
Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-ops-engine/src/test/java/org/scijava/ops/engine/impl/LambdaTypeBakerTest.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.scijava.common3.GenericTyped;
import org.scijava.spi.GenericTyped;
import org.scijava.types.Nil;

public class LambdaTypeBakerTest {
Expand Down
2 changes: 1 addition & 1 deletion 2 scijava-ops-engine/src/test/java/org/scijava/ops/engine/matcher/OpWrappersTest.java
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
import org.scijava.ops.api.OpBuilder;
import org.scijava.ops.engine.AbstractTestEnvironment;
import org.scijava.ops.engine.OpBuilderTestOps;
import org.scijava.common3.GenericTyped;
import org.scijava.spi.GenericTyped;
import org.scijava.types.Nil;

/**
Expand Down
130 changes: 130 additions & 0 deletions 130 scijava-spi/pom.xml
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.scijava</groupId>
<artifactId>pom-scijava</artifactId>
<version>44.0.0</version>
<relativePath />
</parent>

<artifactId>scijava-spi</artifactId>
<version>1.0.0-SNAPSHOT</version>

<name>SciJava SPI</name>
<description>Minimal interfaces implementable by any SciJava-friendly object.</description>
<url>https://github.com/scijava/scijava</url>
<inceptionYear>2026</inceptionYear>
<organization>
<name>SciJava</name>
<url>https://scijava.org/</url>
</organization>
<licenses>
<license>
<name>Simplified BSD License</name>
<distribution>repo</distribution>
</license>
</licenses>

<developers>
<developer>
<id>ctrueden</id>
<name>Curtis Rueden</name>
<roles>
<role>founder</role>
<role>lead</role>
<role>reviewer</role>
<role>support</role>
<role>maintainer</role>
</roles>
</developer>
<developer>
<id>gselzer</id>
<name>Gabriel Selzer</name>
<roles>
<role>founder</role>
<role>debugger</role>
<role>reviewer</role>
<role>support</role>
</roles>
</developer>
</developers>
<contributors>
<contributor>
<name>Johannes Schindelin</name>
<properties><id>dscho</id></properties>
</contributor>
</contributors>

<mailingLists>
<mailingList>
<name>Image.sc Forum</name>
<archive>https://forum.image.sc/tag/scijava</archive>
</mailingList>
</mailingLists>

<scm>
<connection>scm:git:https://github.com/scijava/scijava</connection>
<developerConnection>scm:git:[email protected]:scijava/scijava</developerConnection>
<tag>HEAD</tag>
<url>https://github.com/scijava/scijava</url>
</scm>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/scijava/scijava/issues</url>
</issueManagement>
<ciManagement>
<system>GitHub Actions</system>
<url>https://github.com/scijava/scijava/actions</url>
</ciManagement>

<properties>
<package-name>org.scijava.spi</package-name>

<license.licenseName>bsd_2</license.licenseName>
<license.copyrightOwners>SciJava developers.</license.copyrightOwners>
</properties>

<dependencies>
<!-- No dependencies allowed! -->

<!-- Test scope dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-package-rules</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>test</phase>
<configuration>
<rules>
<NoPackageCyclesRule implementation="org.scijava.maven.plugin.enforcer.NoPackageCyclesRule" />
<NoSubpackageDependenceRule implementation="org.scijava.maven.plugin.enforcer.NoSubpackageDependenceRule" />
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<links>
<link>https://javadoc.scijava.org/Java11/</link>
</links>
</configuration>
</plugin>
</plugins>
</build>
</project>
Loading
Oops, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.