David Arthur created KAFKA-855:
----------------------------------

             Summary: Ant+Ivy build for Kafka
                 Key: KAFKA-855
                 URL: https://issues.apache.org/jira/browse/KAFKA-855
             Project: Kafka
          Issue Type: Improvement
    Affects Versions: 0.9
            Reporter: David Arthur
             Fix For: 0.9


Kafka has very simple build requirements and a system like Ant is well suited 
for a clean and concise build. I have an experimental patch that does just this 
- replaces SBT with Ant+Ivy. IMO, this approach is cleaner, clearer, and more 
developer friendly.

Dependencies are localized to one directory in the project rather than living 
in ~/.ivy2 and elsewhere. This makes manual classpath building very simple 
(just one glob) and also makes packaging the libs very easy.

Testing is done through junit rather than scalatest. The Kafka tests use 
`org.scalatest.junit.JUnitSuite` which allow the tests to be executed through 
the junit test runner.

Management of the Scala version is handled through Ivy. The way I have laid out 
the Ant script, the Scala version can be changed by setting a different runtime 
property (-Dscala.version=2.8.2). Cross-compilation of the Kafka artifact would 
be simple to add.

The one downside to this approach is lack of an incremental build. `scalac` is 
deprecating its incremental build capabilities in coming versions. The 
suggested solution to this is to use an IDE that supports incremental builds.

The main motivation for this approach, to me at least, is that a developer can 
look at build.xml and immediately understand what is going on (with the 
exception maybe of the <ivy: .../> actions which would not be changing). This 
is largely not true for SBT unless someone is already familiar with SBT. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to