Skip to content

Conversation

@nrayburn-tech
Copy link

@nrayburn-tech nrayburn-tech commented Jul 25, 2025

Ref #496.

I'll clean up unnecessary changes like formatting, un-required code changes, etc. as I work through this.

Currently, the plugin ships multiple jars and maintains the compatible versions and compatible dependencies within those versions.

This approach changes two things about that.

  1. Doesn't ship any Checkstyle installations with the plugin (maybe one gets shipped, as part of the compilation but not every version like previous). The Checkstyle jars are downloaded from GitHub at runtime.
  2. Instead of using the individual jars and maintaining the dependency resolution within the IntelliJ plugin, use the checkstyle-all.jar which bundles the required dependencies.

There are definitely pros/cons, but this approach feels like a good direction to move in. If this is something the project is interested in accepting, I can make this a more feature complete implementation.

@tsjensen
Copy link
Contributor

Like back in #496, I still like the idea. 👍

Do make sure to provide explicit solutions for error handling, dropped connection, misconfigured proxy, offline workplace, use of IntelliJ download mechanism for proper progress bars etc., people working on a train with intermittent connections. I think it absolutely can be done, and would even simplify some things (like, we could offer all versions, not just a curated subset). But it will have to be a very careful implementation so that it doesn't jeopardize plugin stability.

@jshiell
Copy link
Owner

jshiell commented Jul 29, 2025

It's definitely of interest. As Thomas says, it'd simplify a bunch of things, in exchange for the complexities of dealing with the IO joys of getting it onto the device, managing local files, and maintaining a robust abstraction layer. It'd certainly make the JAR size a lot smaller, which has been raised as a concern by multiple people.

If you're willing to invest in this, and ensure it's well tested, I'd certainly be open to merging it in!

@nrayburn-tech nrayburn-tech force-pushed the remove-jars-from-plugin branch from 5b64ead to 8c4cb7d Compare August 6, 2025 05:39
Repository owner deleted a comment from deepsource-io bot Aug 18, 2025
@nrayburn-tech nrayburn-tech force-pushed the remove-jars-from-plugin branch from 8c4cb7d to b125720 Compare August 23, 2025 18:22
@nrayburn-tech nrayburn-tech force-pushed the remove-jars-from-plugin branch from b125720 to d206c0e Compare August 23, 2025 18:24
@nrayburn-tech
Copy link
Author

Most recent change introduces a new application level setting and setting configuration for managing the cache location, what location to download artifacts from, and what versions should be downloaded.

The workflow is users go into the settings, select the versions they want downloaded or removed and apply, then it makes the appropriate adjustments as needed (downloads or deletes).

One minor note is that we don't persist a list of versions that the user desires. We use the file system as the source of truth for what should be downloaded or not.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants