An experimental project aimed at migrating legacy Struts 1.x-based applications to a Spring Boot architecture with minimal code changes. Springing Struts1 is a Spring Boot-based web framework that provides a Struts 1.x-compatible API, enabling legacy Java systems to migrate to a modern architecture with reduced cost and risk.
The Springing Struts1 Core Module works as a drop‑in replacement for the following modules:
org.apache.struts:struts-core:1.xorg.apache.struts:struts-extras:1.xorg.apache.struts:struts-taglib:1.xorg.apache.struts:struts-tiles:1.xcommons-validator:commons-validator:1.xjavax.servlet:servlet-api:2.x
If your project is built with Maven, replace the <dependency> entries for the above modules
with a single consolidated entry:
<dependency>
<groupId>io.github.iwauo.springing-struts</groupId>
<artifactId>struts1-core</artifactId>
<version>0.0.6</version>
</dependency>The following projects demonstrate migration from the official Struts 1.x demo applications using this library:
- A Unix-based system (Mac, WSL2, SteamOS, etc.)
- Mise version manager
Run the following commands in your terminal.
git clone https://github.com/springing-struts/struts1-core.gitcd struts1-coremise install./scripts/build.shThe command publishes the locally built module to ./mvn-repo.
You can reference it in your project configuration as follows:
For Maven projects
<repositories>
<repository>
<id>local-repo</id>
<url>file:../mvn-repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>io.github.iwauo.springing-struts</groupId>
<artifactId>struts1-core</artifactId>
<version>0.0.6</version>
</dependency>
</dependencies>For gradle projects:
repositories {
maven { url '../mvn-repo' }
}
dependencies {
implementation 'io.github.iwauo.springing-struts:struts1-core:0.0.6
}- An account on the Central Portal (https://central.sonatype.org/register/central-portal/).
- GnuPG installed on your machine.
-
Generate a GPG key pair
gpg --gen-key
Follow the prompts to create your key.
-
Configure environment variables Copy the example configuration file:
cp .env .env.local
Edit
.env.localand set the values for each variable (e.g.,MAVEN_CENTRAL_USERNAME,SIGNING_PUBLIC_KEY) -
Upload the public key to the Ubuntu key server
gpg --keyserver keyserver.ubuntu.com --send-keys ${SIGNING_PUBLIC_KEY} -
Publish the artifact
./script/publish-to-maven-central.sh