Skip to content

Conversation

@gselzer
Copy link
Member

@gselzer gselzer commented Jan 7, 2026

This PR adds a new custom enforcer rule that asserts that either:

  1. No main-class property exists (this would actually show up as a key with a blank value)
  2. The main-class property refers to an existing class file.

The intent behind this rule is to catch the situations where a POM is copied and the developer who doesn't know any better (historically me) just changes the package structure of this property without actually making the class. It's been tested on the scijava/scijava repository, and seems to be working.

Note that this rule differs from the existing rules in that it does not use the deprecated org.apache.maven.enforcer.rule.api.EnforcerRule. Let me know if that's an issue! We could always refactor the other rules into the new classes in another PR (there seems to be no issue with using both old and new patterns simultaneously)

This is actually what happens when the pom doesn't have this property
@gselzer gselzer requested a review from ctrueden January 7, 2026 23:30
@ctrueden ctrueden merged commit 1004cd4 into master Jan 16, 2026
1 check passed
@ctrueden
Copy link
Member

Thanks for implementing this, @gselzer! Do you think it would be worthwhile to check that the given class not only exists, but actually has a public static void main(String[]) signature?

@ctrueden ctrueden deleted the main-class-exists-rule branch January 16, 2026 19:36
@gselzer
Copy link
Member Author

gselzer commented Jan 16, 2026

Do you think it would be worthwhile to check that the given class not only exists, but actually has a public static void main(String[]) signature?

Certainly couldn't hurt...

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