Hi all, but especially Fraser.
Now that the Maven build work progressing in the main Java tree under
QPID-5048 is sufficiently progressed, it is time we look at providing a
Maven build for the QMF2 tools so that they can integrate with the other
components, just be more easily built generally, and be published to maven
central for people to pick up in their builds as has been requested. I have
raised https://issues.apache.org/jira/browse/QPID-5610 to track this.
As per the JIRA itself, the current layout of the qmf2 tools in the repo
doesn't lend itself to a Maven build, so we will need to look at
reorganising the content as part of the process (likely at the expense of
the Ant build going away, it would need rewritten).
We will want to end up with a few (or more) modules such that we are able
to produce the main jar, rest api jar, broker plugin jar, and additionally
archives containing all the bits people would need to use either the broker
plugin or the tools+GUI. I have a few suggestions below as to the new
modules we would created in the tools/src/java directory and what the
contents of them would be based on the current layout, with Option 1 being
the closest to what would be produced now and Option 3 splitting it up the
most.
Thoughts?
Robbie
Option 1:
=======
qpid-qmf2:
-src/main/java
#contains most of (see further down) or all the code currently in
src/main/java
qpid-qmf2-rest:
-src/main/java
#contains all the code currently in src/restapi/java
qpid-qmf2-tools:
-bin
#contains everything currently in bin
-src/main/assembly
#contains an assembly descriptor for a release binary which would result
in a tar containing the bin dir with all the scripts etc, any docs wanted,
and a lib dir with the qpid-qmf2 and qpid-qmf2-rest modules and their
dependencies (e.g the client).
qpid-broker-plugins-management-qmf2:
-src/main/java
#contains all the code currently in
src/qpid-broker-plugins-management-qmf2/java
-src/main/assembly
#contains an assembly descriptor for a release binary which would result
in a tar containing the qpid-qmf2 and qpid-broker-plugins-management-qmf2
modules and their dependencies (e.g the client).
Plus appropriate src/main/resources folders to handle additional non-java
files as necessary.
Something would also need done with the current 'tests' folder, though as
they don't appear to be automated JUnit tests I haven't yet decided on a
final suggestion there.
Option 2:
=======
As above, but modified such that the qpid-qmf2-tools module isn't just an
assembly of the others, but actually contains the
org/apache/qpid/qmf2/tools package rather than it remaining in the
qpid-qmf2 module.
The assembly produced by the qpid-qmf2-tools module would be updated to
also include the resulting new qpid-qmf2-tools jar as well.
Option 3:
=======
Taking Option 2 further still, split qpid-qmf2 up in line with its current
main package composition, e.g. creating the below module jars and
incorporating them into the broker plugin and tools assemblies as
appropriate.
qpid-qmf2-agent
qpid-qmf2-common
qpid-qmf2-console
qpid-qmf2-tools
Now that the Maven build work progressing in the main Java tree under
QPID-5048 is sufficiently progressed, it is time we look at providing a
Maven build for the QMF2 tools so that they can integrate with the other
components, just be more easily built generally, and be published to maven
central for people to pick up in their builds as has been requested. I have
raised https://issues.apache.org/jira/browse/QPID-5610 to track this.
As per the JIRA itself, the current layout of the qmf2 tools in the repo
doesn't lend itself to a Maven build, so we will need to look at
reorganising the content as part of the process (likely at the expense of
the Ant build going away, it would need rewritten).
We will want to end up with a few (or more) modules such that we are able
to produce the main jar, rest api jar, broker plugin jar, and additionally
archives containing all the bits people would need to use either the broker
plugin or the tools+GUI. I have a few suggestions below as to the new
modules we would created in the tools/src/java directory and what the
contents of them would be based on the current layout, with Option 1 being
the closest to what would be produced now and Option 3 splitting it up the
most.
Thoughts?
Robbie
Option 1:
=======
qpid-qmf2:
-src/main/java
#contains most of (see further down) or all the code currently in
src/main/java
qpid-qmf2-rest:
-src/main/java
#contains all the code currently in src/restapi/java
qpid-qmf2-tools:
-bin
#contains everything currently in bin
-src/main/assembly
#contains an assembly descriptor for a release binary which would result
in a tar containing the bin dir with all the scripts etc, any docs wanted,
and a lib dir with the qpid-qmf2 and qpid-qmf2-rest modules and their
dependencies (e.g the client).
qpid-broker-plugins-management-qmf2:
-src/main/java
#contains all the code currently in
src/qpid-broker-plugins-management-qmf2/java
-src/main/assembly
#contains an assembly descriptor for a release binary which would result
in a tar containing the qpid-qmf2 and qpid-broker-plugins-management-qmf2
modules and their dependencies (e.g the client).
Plus appropriate src/main/resources folders to handle additional non-java
files as necessary.
Something would also need done with the current 'tests' folder, though as
they don't appear to be automated JUnit tests I haven't yet decided on a
final suggestion there.
Option 2:
=======
As above, but modified such that the qpid-qmf2-tools module isn't just an
assembly of the others, but actually contains the
org/apache/qpid/qmf2/tools package rather than it remaining in the
qpid-qmf2 module.
The assembly produced by the qpid-qmf2-tools module would be updated to
also include the resulting new qpid-qmf2-tools jar as well.
Option 3:
=======
Taking Option 2 further still, split qpid-qmf2 up in line with its current
main package composition, e.g. creating the below module jars and
incorporating them into the broker plugin and tools assemblies as
appropriate.
qpid-qmf2-agent
qpid-qmf2-common
qpid-qmf2-console
qpid-qmf2-tools