Skip to content
New issue

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

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

Already on GitHub? # to your account

[MINSTALL-177] Streamline the plugin #32

Merged
merged 11 commits into from
Jul 12, 2022
Merged

[MINSTALL-177] Streamline the plugin #32

merged 11 commits into from
Jul 12, 2022

Conversation

cstamas
Copy link
Member

@cstamas cstamas commented Jul 7, 2022

Original plugin made hoops and loops, instead to perform what it needed to perform. Partly to blame this was unfinished state of MAT API (it was able to install project only).

Installing project is needed in InstallMojo, but InstallFileMojo was forced to make hoops and loops due this, as it was passed one file (and maybe pomFile), and it was forced to create "fake" project, decorate and fake setup it with all whistle and bells, only to get it via MAT to resolver that would "decompose" it back into set of artifacts needing a deploy. So it went this file-artifact-project-artifact route, that made all the logic fragile and overly complicated.

This PR completely reworks m-install-p making it (almost trivially) simple: it does what it needs to do, without any fuss, and does it in streamlined way: InstallMojo will create a list of artifacts out of project and pass it to repository system for deploy, while InstallFileMojo literally prepares just a deployment request, nothing more. No fuss, no magic, no fake project building etc.

Note: the code in mojos may or may not need to be reusable, but definitely smells like some "Maven API-ish thing".

Problems: InstallFileMojo implicitly implemented ID validation (thru fake project building), and it revealed the problem that Maven ID (groupId, artifactId) and version validation is deeply buried into maven-model-builder and is NOT reusable at all, hence a light copy of logic (rules for ID allowed characters and version forbidden characters) are copied over here.


https://issues.apache.org/jira/browse/MINSTALL-177

@cstamas cstamas self-assigned this Jul 7, 2022
@cstamas cstamas mentioned this pull request Jul 7, 2022
The abstract methods was really used by "this or that", no
method were used by both. The two Mojos really does not have
a lot in common.
@cstamas
Copy link
Member Author

cstamas commented Jul 8, 2022

Ping? Anyone?

{
throw new MojoFailureException( "IOException", e );
throw new MojoFailureException( e.getMessage(), e );
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not MojoExecutionException

I must find a discussion, but as I remember MojoFailureException should not be used ....

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, we need to clean up this I guess.... (as now I see that I used the two inconsistently).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've started discussion on dev list about it 😄

@cstamas cstamas changed the title Streamline the plugin [MINSTALL-177] Streamline the plugin Jul 11, 2022
@cstamas cstamas marked this pull request as ready for review July 11, 2022 11:50
@cstamas cstamas merged commit 4dbab72 into master Jul 12, 2022
@cstamas cstamas deleted the full-resolver branch July 12, 2022 13:11
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants