Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pick a build automation system #62

Closed
gstojsic opened this issue Dec 4, 2016 · 9 comments
Closed

Pick a build automation system #62

gstojsic opened this issue Dec 4, 2016 · 9 comments
Labels
Under Review Used for pull requests under review

Comments

@gstojsic
Copy link
Contributor

gstojsic commented Dec 4, 2016

A short survey (by no means statistically valid) of the top java projects on github, such as guava, mockito, junit, hadoop, etc. shows that these projects use one, or in rarer cases two build automation systems. Currently in the dev branch there are config files for three: maven, gradle and ant. I believe this will be very hard to maintain so one build system should be picked and the others removed.

@JamieMagee
Copy link
Member

I would recommend Gradle. It seems that more and more projects are moving towards it - most notably Android.

@xiangyushawn xiangyushawn added the Under Review Used for pull requests under review label Dec 6, 2016
@ajlam
Copy link
Member

ajlam commented Dec 7, 2016

@gstojsic, @JamieMagee - totally understood. We just uploaded Gradle build scripts in the 6.1.1 release. I'm hoping to send a pulse survey out to folks to get an understanding of which they'd like to see default. Hope you guys are both able to respond when I send it.

@v-nisidh v-nisidh modified the milestone: Next Tasks Feb 6, 2017
@v-nisidh
Copy link
Contributor

@JamieMagee , @gstojsic : We decided to move away from ant. Further we will choose one from maven or gradle.

@gstojsic
Copy link
Contributor Author

Great news. The sooner you decide the better.

@JamieMagee
Copy link
Member

Thanks for the update.

I'll echo my comment from above that I believe Gradle is the best option, but either will be better than Ant.

@v-nisidh
Copy link
Contributor

Linking #155

Right now we found gradle do not support optional dependencies. Do we have any workaround with Gradle & Optional dependencies ?

@JamieMagee
Copy link
Member

The current workarounds are either:

  • Edit the generated pom file using pom.withXml
  • Use a plugin for Gradle

Both workarounds are summed up nicely in this Stack Overflow post

@benjamin-bader
Copy link

Maven is wordier than Gradle, but faster and ultimately slightly more capable (e.g., optional dependencies).

Speaking as a Java library maintainer, I've had a much easier time managing releases with Gradle than with Maven. mvn release:perform is interactive, makes git commits, and doesn't clean up when it fails (and it fails very frequently, for example if you have the jacoco running and one of your submodules fails). ./gradlew uploadArchives, on the other hand, doesn't mess up your source control if anything goes wrong. So, there's that.

@ajlam
Copy link
Member

ajlam commented Apr 10, 2017

@benjamin-bader, thanks for your input.

In one of our previous surveys, we asked "What is your build system of choice?". 73% of responses said Maven was their build system of choice. (ref: https://github.com/Microsoft/mssql-jdbc/wiki/JDBC-Survey-Results). Based on this data, we are going to stick with Maven only.

We'll keep our existing Gradle build script on the repo, but will not be making any new updates to it. I know many of you use Gradle as your main build system, but we'd appreciate any help keeping this build script up to date.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Under Review Used for pull requests under review
Projects
None yet
Development

No branches or pull requests

6 participants