Skip to content

Conversation

@mpkorstanje
Copy link
Contributor

@mpkorstanje mpkorstanje commented Sep 12, 2019

Summary

With the introduction of v5 we will break the plugin API by moving
packages from cucumber.core to io.cucumber.core. We can use this
as an opportunity to extract the plugin and event classes to separate
modules.

This change moves io.cucumber.core.plugin to io.cucumber.plugin and
io.cucumber.core.event to io.cucumber.plugin.event. While on its own this
change provides little value it will allow us in the future to provide
better support for plugins.

With the introduction of JPMS we will want to expose these classes for
plugin developers. However we also want to avoid the use of core by most
end users. By moving these classes to their own modules we can avoid the
use of core and future proof the introduction of JPMS.

Closes #1773.

Types of changes

  • Bug fix (non-breaking change which fixes an issue).
  • New feature (non-breaking change which adds functionality).
  • Breaking change (fix or feature that would cause existing functionality to not work as expected).

With the introduction of v5 we will break the plugin API by moving
packages from `cucumber.core` to `io.cucumber.core`. We can use this
as an opportunity to extract the plugin and event classes to separate
modules.

This change moves `io.cucumber.core.plugin` to `io.cucumber.plugin` and
`io.cucumber.core.event` to `io.cucumber.event`. While on its own this
change provides little value it will allow us in the future to provide
better support for plugins.

With the introduction of JPMS we will want to expose these classes for
plugin developers. However we also want to avoid the use of core by most
end users. By moving these classes to their own modules we can avoid the
use of core and future proof the introduction of JPMS.

These classes may have been better of in one single module but I can't
think of a name that would describe such a module accurately.
@mpkorstanje mpkorstanje added this to the 5.0.0 milestone Sep 12, 2019
@coveralls
Copy link

coveralls commented Sep 12, 2019

Coverage Status

Coverage decreased (-0.5%) to 87.16% when pulling 9b84899 on extract-plugin-and-event into 735eab4 on master.

@mpkorstanje
Copy link
Contributor Author

mpkorstanje commented Sep 12, 2019

I guess rev-api has a point:

cucumber-plugin: The following API problems caused the build to fail:

[ERROR] java.class.externalClassExposedInAPI: interface io.cucumber.event.EventHandler: A class from supplementary archives is used in a public capacity in the API. [io.cucumber:cucumber-event:jar:5.0.0-SNAPSHOT]

So one module and I don't know what to call it yet.

@mpkorstanje mpkorstanje changed the title [Core] Extract Plugin and Event modules [Core] Extract Plugin module Sep 13, 2019
@mpkorstanje mpkorstanje merged commit 8ee4880 into master Sep 13, 2019
@mpkorstanje mpkorstanje deleted the extract-plugin-and-event branch September 13, 2019 08:57
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.

Consolidate duplicate CucumberOptions implementations

3 participants