tree 15d3d06c49b69d9c52b7f559937e776870071908
parent f06da48b9b0ab800c163fe7643ccb92d58b96df6
author Piotr P. Karwasz <piotr.github@karwasz.org> 1696115970 +0200
committer Piotr P. Karwasz <piotr.github@karwasz.org> 1696115970 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEwIAsj/uhmqhueF3eiOtwDBqRRdsFAmUYrbgACgkQiOtwDBqR
 Rds2dQgAkaYm+SeFoLqU5+JAu0s1DBraXW4WedatvZjdUWHCX19204iKkWrBMisH
 n3gBlaQA1TiXCD9w9DRh4a+JgWtPiQ6ACG6CcyJhcBeoMK3IlBGRVUWJ0XuazcAC
 ui2ibut9q+usJth2A+rZFRTcco5ugHHPPvzVFTdz9nbOHD8/Z+aKl1UP2DvAvbKz
 OAm7QwlLIDKA3s43ErZX0Uyl1ADpeCqcF90VPtUSA9lFVDbpdBt+b8VD8RuKJtzz
 saHZD8M8y7bI90j3oYanG8CYAIXWKVwsthtX29E8gdnV1sViwuKHoBgFsGwj+bh7
 EY1YJpP5tEZeqiKNh7i1TROcoqibAA==
 =1TP+
 -----END PGP SIGNATURE-----

Fix JPMS module descriptor

The JPMS descriptor generated by BND has many issues, e.g. BND does not
find JPMS descriptors inside `META-INF/versions/9`, hence most of the
module names are wrong.

The descriptor generated by this PR is:
```
module org.apache.logging.log4j.kotlin@1.3.0.SNAPSHOT {
  requires java.base;
  requires static kotlin.reflect;
  requires transitive kotlin.stdlib;
  requires static kotlinx.coroutines.core;
  requires transitive org.apache.logging.log4j;
  exports org.apache.logging.log4j.kotlin;
}
```

Looking at the code, I am assuming that usage of `kotlin.reflect` and
`kotlinx.coroutines.core` is optional.
