Skip to content
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.

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

Make checks for 'feature-source'/'p2-metadata' executions more precise #912

Merged
merged 1 commit into from
Apr 24, 2022

Conversation

HannesWell
Copy link
Member

@HannesWell HannesWell commented Apr 23, 2022

Using a Plugin execution's goal and not its id as criteria to check for its presence is more precise. The id can be chosen arbitrarily and requiring a specific id can easily lead to false positive and false negative results.

For example it took me some time to find out in eclipse-equinox/equinox.bundles#20 that using the 'wrong' id for the execution of the tycho-source-plugin:feature-source goal is the reason the source-feature is not found when resolving a feature that includes it. The id was actually chosen badly due to copy-pasting but the success of a build should not depend on if I name the id source-feature or feature-source.

Furthermore the m2e build constantly displays a warning that the tycho-p2-plugin:p2-metadata were not executed and that this would lead to problems when including the generated source-feature in an update-site just because the execution-id is p2-metadata instead of attach-p2-metadata.

Fixes #85

Using an execution's goal and not its id as criteria to check for its
presence is more precise. The id can be chosen arbitrarily and requiring
a specific id can easily lead to false positive and false negative
results.
@@ -61,10 +61,10 @@
/**
* Goal to create a JAR-package containing all the source files of a osgi project.
*/
@Mojo(name = "plugin-source", defaultPhase = LifecyclePhase.PREPARE_PACKAGE, threadSafe = true)
Copy link
Member Author

Choose a reason for hiding this comment

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

Do you think it is in general a reasonable pattern to use a constant as mojo-name (if available)?

Copy link
Member

Choose a reason for hiding this comment

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

I think it doesn't hurt.

Copy link
Member Author

Choose a reason for hiding this comment

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

Do you think it would be a good pattern to be applied generally to have a public static final String GOAL field for each Mojo class that could be referenced wherever the goal id is required? It would avoid using 'magic' string literals in the code base.

Copy link
Member

Choose a reason for hiding this comment

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

I think it does not makes much of a difference if it is in a GOAL="..." or in a name = "..." unless we reference it somewhere else (in which case it might be more useful in TychoConstants or a new TychoMojos interface)

Copy link
Member Author

Choose a reason for hiding this comment

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

Sure it only makes a difference when the goal-id is used somewhere else.
The good think about such constants is that in Eclipse one can simply check the call-hierarchy to see where the goal is used and does not have to search for the String and sort out all false positive results.

I'm not sure where such constant would be placed best. My first thought was the mojo because it's a property of it.
But I'm not planning to apply this to the entire code base at the moment. So there is some time to keep this in the back of our minds.

Copy link
Member

Choose a reason for hiding this comment

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

The mojo ids are at least used in the compontents.xml and we cant reference the constants there.

@github-actions
Copy link

Unit Test Results

152 files  152 suites   52m 8s ⏱️
261 tests 258 ✔️ 3 💤 0

Results for commit eacea3a.

@laeubi
Copy link
Member

laeubi commented Apr 24, 2022

Thanks hannes, I think this fix is even easy enough to be cherry picket to the 2.7.2 bugfix release.

@laeubi laeubi merged commit 16cb813 into eclipse-tycho:master Apr 24, 2022
@HannesWell
Copy link
Member Author

Thanks hannes, I think this fix is even easy enough to be cherry picket to the 2.7.2 bugfix release.

You're welcome and thanks for reviewing/submitting/back-porting.

I re-trigger the m2e-build to test Tycho 2.7.2 and the warning has vanished. So part works well.

@HannesWell HannesWell deleted the generalizeChecks branch April 24, 2022 08:10
@laeubi laeubi added this to the 3.0 milestone Sep 21, 2022
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.

tycho-source-plugin:feature-source is not a drop-in for tycho-source-feature-plugin:source-feature
2 participants