[ 
https://issues.apache.org/jira/browse/KAFKA-855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13803032#comment-13803032
 ] 

David Arthur commented on KAFKA-855:
------------------------------------

Gradle is definitely another one worth investigating (first class support for 
Scala is nice). My main thing is I like the build to be easily debuggable. 
Whenever you have some build DSL that's predefined by a framework like 
Gradle/SBT/Maven, it can make things hard to debug.

IMO, Ant+Ivy is a lowest common denominator type of thing. Most people coming 
from the Java world know Ant, and it is mostly self-descriptive. Ivy is what 
SBT and Gradle use under the hood for dependency management and isn't too 
difficult to use on its own (there is some boilerplate involved).

I think the main thing is we pick something all the devs are comfortable with.

That said, Gradle does looks pretty nice ;)

> 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
>              Labels: build, experimental
>             Fix For: 0.9
>
>         Attachments: 0001-Compile-and-package-Kafka-with-Ant-Ivy.patch, 
> 0002-Tests-all-passing.patch, 
> 0003-Parameterize-scala-version-add-offline-mode.patch
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> 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 was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to