zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Norbert Kalmar (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ZOOKEEPER-3021) Umbrella: Migrate project structure to Maven build
Date Mon, 14 May 2018 12:40:00 GMT

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-3021?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Norbert Kalmar updated ZOOKEEPER-3021:
--------------------------------------
    Description: 
In multiple steps, Maven should replace current ant build in ZooKeeper.

 
 First phase - separate project structure that requires no code change:
{noformat}
zookeeper
|-bin
|-conf
|-zk-client
| |-zk-client-c
|-zk-contrib
| |-zk-contrib-fatjar
| |-zk-contrib-huebrowser
| |-zk-contrib-loggraph
| |-zk-contrib-monitoring
| |-zk-contrib-rest
| |-zk-contrib-zkfuse
| |-zk-contrib-zkperl
| |-zk-contrib-zkpython
| |-zk-contrib-zktreeutil
| \-zk-contrib-zooinspector
|-zk-docs
|-zk-it (integration tests)
|-zk-server
|-zk-recipes
| |-zk-recipes-election
| |-zk-recipes-lock
\ \-zk-recipes-queue
{noformat}
 
  
 Second phase - separate modules that require code changes:
{noformat}
zookeeper
|-bin
|-conf
*|-jute*
|-zk-client
| |-zk-client-c
*| |-zk-client-java* (separated from zk-server)
*| \-zk-client-go* (or any other language)
*|-zk-common*
|-zk-contrib
| |-zk-contrib-fatjar
| |-zk-contrib-huebrowser
| |-zk-contrib-loggraph
| |-zk-contrib-monitoring
| |-zk-contrib-rest
| |-zk-contrib-zkfuse
| |-zk-contrib-zkperl
| |-zk-contrib-zkpython
| |-zk-contrib-zktreeutil
| \-zk-contrib-zooinspector
|-zk-docs
|-zk-it (integration tests)
|-zk-server
|-zk-recipes
| |-zk-recipes-election
| |-zk-recipes-lock
\ \-zk-recipes-queue
{noformat}

  
 Every module will have the same maven structure:
{noformat}
zk-something
|-src
| |-main
| | |-java
| | | \org...
| | \resources
| \test (unit tests only?)
| |-java
| | \org...
| \resources
\pom.xml (build.xml, build.gradle?)
{noformat}

There is already ZOOKEEPER-1078, but it's main approach is to create a maven proxy on top
of ant. 
The main idea here is to replace ant with "pure" maven, and update the project structure accordingly.

It is also worth noting, that backporting only the package changes to 3.4 is a good practice
for future backport commits. Maven build implementation not needed, just the directory structuro
to be compatible with 3.5/master.

  was:
In multiple steps, Maven should replace current ant build in ZooKeeper.

 
 First iteration: separate project structure
{noformat}
zookeeper
|-bin
|-conf
|-zk-client
| |-zk-client-c
|-zk-contrib
| |-zk-contrib-fatjar
| |-zk-contrib-huebrowser
| |-zk-contrib-loggraph
| |-zk-contrib-monitoring
| |-zk-contrib-rest
| |-zk-contrib-zkfuse
| |-zk-contrib-zkperl
| |-zk-contrib-zkpython
| |-zk-contrib-zktreeutil
| \-zk-contrib-zooinspector
|-zk-docs
|-zk-it (integration tests)
|-zk-server
|-zk-recipes
| |-zk-recipes-election
| |-zk-recipes-lock
\ \-zk-recipes-queue
{noformat}
 
 With this kind of structure, the code change could be kept to a bare minimum, if any at all.
 Just change the ant script to conform to the new structure. 
  
 Second iteration: code changes:
{noformat}
zookeeper
|-bin
|-conf
|-jute
|-zk-client
| |-zk-client-c
| |-zk-client-java
| \-zk-client-go (or any other language)
|-zk-common
|-zk-contrib
| |-zk-contrib-fatjar
| |-zk-contrib-huebrowser
| |-zk-contrib-loggraph
| |-zk-contrib-monitoring
| |-zk-contrib-rest
| |-zk-contrib-zkfuse
| |-zk-contrib-zkperl
| |-zk-contrib-zkpython
| |-zk-contrib-zktreeutil
| \-zk-contrib-zooinspector
|-zk-docs
|-zk-it (integration tests)
|-zk-server
|-zk-recipes
| |-zk-recipes-election
| |-zk-recipes-lock
\ \-zk-recipes-queue
{noformat}
 
 Here, java client code is separated from the server code (and any other supported languages
client code).
  
 Third iteration: maven structure
{noformat}
zk-something
|-src
| |-main
| | |-java
| | | \org...
| | \resources
| \test (unit tests only?)
| |-java
| | \org...
| \resources
\pom.xml (build.xml, build.gradle?)
{noformat}

There is already ZOOKEEPER-1078, but it's main approach is to create a maven proxy on top
of ant. 
The main idea here is to replace ant with "pure" maven, and update the project structure accordingly.

It is also worth noting, that backporting only the package changes to 3.4 is a good practice
for future backport commits. Maven build implementation not needed, just the directory structuro
to be compatible with 3.5/master.


> Umbrella: Migrate project structure to Maven build
> --------------------------------------------------
>
>                 Key: ZOOKEEPER-3021
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3021
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: build, build-infrastructure, scripts
>    Affects Versions: 3.6.0
>            Reporter: Norbert Kalmar
>            Priority: Major
>
> In multiple steps, Maven should replace current ant build in ZooKeeper.
>  
>  First phase - separate project structure that requires no code change:
> {noformat}
> zookeeper
> |-bin
> |-conf
> |-zk-client
> | |-zk-client-c
> |-zk-contrib
> | |-zk-contrib-fatjar
> | |-zk-contrib-huebrowser
> | |-zk-contrib-loggraph
> | |-zk-contrib-monitoring
> | |-zk-contrib-rest
> | |-zk-contrib-zkfuse
> | |-zk-contrib-zkperl
> | |-zk-contrib-zkpython
> | |-zk-contrib-zktreeutil
> | \-zk-contrib-zooinspector
> |-zk-docs
> |-zk-it (integration tests)
> |-zk-server
> |-zk-recipes
> | |-zk-recipes-election
> | |-zk-recipes-lock
> \ \-zk-recipes-queue
> {noformat}
>  
>   
>  Second phase - separate modules that require code changes:
> {noformat}
> zookeeper
> |-bin
> |-conf
> *|-jute*
> |-zk-client
> | |-zk-client-c
> *| |-zk-client-java* (separated from zk-server)
> *| \-zk-client-go* (or any other language)
> *|-zk-common*
> |-zk-contrib
> | |-zk-contrib-fatjar
> | |-zk-contrib-huebrowser
> | |-zk-contrib-loggraph
> | |-zk-contrib-monitoring
> | |-zk-contrib-rest
> | |-zk-contrib-zkfuse
> | |-zk-contrib-zkperl
> | |-zk-contrib-zkpython
> | |-zk-contrib-zktreeutil
> | \-zk-contrib-zooinspector
> |-zk-docs
> |-zk-it (integration tests)
> |-zk-server
> |-zk-recipes
> | |-zk-recipes-election
> | |-zk-recipes-lock
> \ \-zk-recipes-queue
> {noformat}
>   
>  Every module will have the same maven structure:
> {noformat}
> zk-something
> |-src
> | |-main
> | | |-java
> | | | \org...
> | | \resources
> | \test (unit tests only?)
> | |-java
> | | \org...
> | \resources
> \pom.xml (build.xml, build.gradle?)
> {noformat}
> There is already ZOOKEEPER-1078, but it's main approach is to create a maven proxy on
top of ant. 
> The main idea here is to replace ant with "pure" maven, and update the project structure
accordingly.
> It is also worth noting, that backporting only the package changes to 3.4 is a good practice
for future backport commits. Maven build implementation not needed, just the directory structuro
to be compatible with 3.5/master.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message