Define a contract when one cannot be added to the buildpath.

  • Example: -define-contract:\ osgi.contract;\ osgi.contract=JavaServlet;\ uses:="javax.servlet,javax.servlet.annotation,javax.servlet.descriptor,javax.servlet.http";\ version:Version="3.0"

  • Pattern: .*



Used in conjunction with the -contract instruction,-define-contract can be applied in order to define a contract which is not available on the build path (i.e. compile class path).

The contract specification is exactly the same syntax used in the Provide-Capability header.

-define-contract:\
  osgi.contract;\
    osgi.contract=JavaServlet;\
    uses:="javax.servlet,javax.servlet.annotation,javax.servlet.descriptor,javax.servlet.http";\
    version:Version="3.0"

Now if the current bundle imports packages declared in the uses directive of the defined contract above, they will be imported without a package version, and a contract requirement will be added exactly as if there had been a contract on the build path.

Note the -contract instruction defaults to * (all contracts) and so it can be omitted when using the -define-contract instruction.

Further Reading