Hi Tyrus devs,
during last few days I went through the codebase of Tyrus and I would like
to ask a few questions related to the build infrastructure:
1. No longer used protocol module
- The protocol module is not defined in the super pom.xml (and thus
also not compiled and tested), but it is still in the git repository.
- What was the purpose of that module and could we remove it
completely?
2. Tyrus source and binary compatibility
- The documentation notes that the JDK 7 is required for the Tyrus
project.
- However the super pom.xml defines JDK 1.6 as both source an
target versions.
- tyrus-archetype-echo module will generate project using JDK 1.7.
- tyrus-bundles module is defining 2 JDK7 specific modules.
- Why is it so?
3. Missing dependencies in <dependencyManagement> in super pom.xml
- This is a very minor issue, but it looks like just a subset of
container modules is defined in the <dependencyManagement> block in
super pom.xml. The following ones are missing:
- tyrus-container-glassfish-ejb
- tyrus-container-inmemory
4. Unnecessary versioning of dependencies
- There are multiple cases where versioning of dependencies is
unnecessary as the version is already defined in the
<dependencyManagement> section, e.g. explicitly specifying the
version of javax.websocket.api.
5. jar vs bundle packaging
- maven-bundle-plugin declares that packaging has to be bundle in
order to work correctly.
- In reality most of the modules have defined jar packaging and it
works, but we should change it to bundle.
6. Unnecessary build plugin declarations
- There are modules where the build plugin maven-compiler-plugin is
explicitly defined even if not defining any configuration and so
completely
useless (as it is part of default Maven lifecycle).
- On the other side maven-war-plugin is defined in many places only
because of <failOnMissingWebXml> element. Can we move that to super
pom's <dependencyManagement> block ?
7. Other
- junit dependency in super pom.xml should have default test scope
- This is interesting, I would define the JUnit dependency as
testscoped and only explicitly overwrite the scope to
compile for tyrus-test-tools module.
- junit is then manually set to test scoped in various other
modules
I can provide patches to all the mentioned items after
clarification/approval.
Thanks,
Martin