Apache Struts IntelliJ IDEA plugin

Clone this repo:
  1. 738932e ci(deps): bump actions/upload-artifact from 6 to 7 (#57) by dependabot[bot] · 7 days ago main v253.18979-nightly.2
  2. 0e3110f Merge pull request #56 from apache/docs/update-changelog by Lukasz Lenart · 14 days ago v253.18979-nightly.1
  3. 78c0a3d docs: update changelog with unreleased changes since v252.18978.1 by Lukasz Lenart · 14 days ago
  4. 5b343e6 Merge pull request #55 from apache/ci/replace-nightly-prereleases-with-tags by Lukasz Lenart · 14 days ago
  5. 0d82344 ci(nightly): replace GitHub pre-releases with lightweight git tags by Lukasz Lenart · 14 days ago

Apache Struts IntelliJ IDEA plugin

Build

Provides full integration of Apache Struts 2.

Documentation

Questions related to the usage of the plugin should be posted to the user mailing list. Any issues should be reported using JIRA and IDEA plugin component.

Testing

Tests are located in src/test/java and use IntelliJ Platform test frameworks (LightJavaCodeInsightFixtureTestCase and similar). Test data fixtures are in src/test/testData.

./gradlew test -x rat                        # Run tests (excluding Apache RAT license checks)
./gradlew test --tests "OgnlParsingTest"     # Run a specific test class
./gradlew test --tests "*Resolving*"         # Run tests matching a pattern

Code coverage

Kover is integrated for code coverage. Generate an HTML report with:

./gradlew koverHtmlReport                    # Report in build/reports/kover/

Changelog maintenance

The project follows the Keep a Changelog approach. The Gradle Changelog Plugin propagates entries from CHANGELOG.md to the JetBrains Marketplace plugin page.

Record changes under the [Unreleased] section in CHANGELOG.md. The CI pipeline handles version bumping on release.

Release process

The plugin uses a two-phase release process with nightly builds for continuous delivery:

Nightly builds are created automatically when commits are merged to main. The Build workflow runs tests, builds the plugin, and publishes it to the JetBrains Marketplace nightly channel. A GitHub pre-release is also created with the plugin zip attached.

Preparing a release is a manual step. Go to Actions → Prepare Release → Run workflow, optionally providing a version override. This workflow:

  1. Builds the plugin (using the version from gradle.properties or your override)
  2. Creates a git tag v{VERSION} and pushes it
  3. Creates a GitHub pre-release with the plugin zip attached

PMC members can then download the zip from the pre-release, test it locally, and vote.

Publishing a release happens when the pre-release is promoted to a full release. Edit the GitHub pre-release, uncheck “Set as a pre-release”, and save. This triggers the Release workflow which:

  1. Publishes the plugin to the JetBrains Marketplace Stable channel
  2. Uploads the plugin zip as a release asset
  3. Creates a pull request to update the changelog