Interface ManifestPlugin

All Superinterfaces:
OrderedPlugin
All Known Implementing Classes:
JPMSModuleInfoPlugin, JPMSMultiReleasePlugin

public interface ManifestPlugin extends OrderedPlugin
Some plugins started to use the verifier state because they needed to have access to the calculated manifest and then added extra resources. (Looking at you JPMSModuleInfoPlugin!). Unfortunately this is wrong since any added resources will not end up in the name section of the JAR. It should be obvious that during verification it is clearly wrong to add additional files.

Plugins are called in OrderedPlugin.ordering() order. Plugins may add/modify the given manifest and they may add additional resources that do not affect the manifest except for the name section. These plugins must not add classes or other resources that could influence the manifest information.

The plugins are called from calcManifest _just_ before the name section is calculated.

  • Method Summary

    Modifier and Type
    Method
    Description
    default void
    mainSet(Analyzer analyzer, Manifest manifest)
    Called just after the manifest has been calculated and just before name section is calculated.
    default void
    nameSet(Analyzer analyzer, Manifest manifest)
    Called when the manifest is completely calculated.

    Methods inherited from interface OrderedPlugin

    ordering
  • Method Details

    • mainSet

      default void mainSet(Analyzer analyzer, Manifest manifest) throws Exception
      Called just after the manifest has been calculated and just before name section is calculated. The analyzer will not make any more changes to the main section of the manifest. This is also after any non-wanted headers are removed.
      Parameters:
      analyzer - the current analyzer, it is calling from Analyzer.calcManifest()
      manifest - the current intermediate manifest, lacking a name section
      Throws:
      Exception
    • nameSet

      default void nameSet(Analyzer analyzer, Manifest manifest) throws Exception
      Called when the manifest is completely calculated. The analyzer will not make any more changes to the manifest. This is a read only operation.
      Parameters:
      analyzer - the current analyzer, it is calling from Analyzer.calcManifest()
      manifest - the final manifest
      Throws:
      Exception