jsyn icon indicating copy to clipboard operation
jsyn copied to clipboard

use gradle / add to artifactory

Open ligi opened this issue 9 years ago • 3 comments

I want to consume this library in one android-application - looks really useful and seems to work nice - but currently I would have to drop in the jar which I do not find appealing. My solution now is to use @jitpack which points to a fork of jsyn where I added gradle build-files:

https://github.com/ligi/MassiveSignal/commit/de8981776d7d2dbec984ef4235416df5522a70ba

https://github.com/ligi/jsyn

also there I removed JPortAudioDevice and the corresponding dependency as I do not want this on android. Ideally I would see 3 artifacts here jsyn-core, then jsyn-android ( depends on core ) and jsyn-portaudio ( also depends on core ). Not sure what your take on this is - could also provide a PR in this direction but would like to know your opinion on this before. Do you want to keep ant? What do you think about splitting into 3 artifacts?

cc @ptrv

ligi avatar Jan 11 '17 23:01 ligi

I'm glad you like JSyn. I want to make it useful for people. Different people need different things. So I have not yet tried to optimize the build for specific targets. I'm not opposed to it. It just hasn't been a priority. You're the first person to ask.

I would have to drop in the jar which I do not find appealing.

Does the JAR cause technical problems? It is handy for me to publish one JAR on the website.

I removed JPortAudioDevice and the corresponding dependency as I do not want this on android.

Was there a specific build problem with JPortAudioDevice? JSyn also has over a hundred unit generators and you probably only use a few. The JavaSound code is also not used on Android. ProGuard should strip out unused code.

What do you think about splitting into 3 artifacts?

I want to understand. Are you proposing 3 git repositories or are the artifacts just gradle build targets?

philburk avatar Jan 12 '17 16:01 philburk

JARs have the following problems:

  • they are not really versioned and being able to easily correlate them to the source-code
  • it makes the repo bigger than needed ( you do not really want binaries in your git repo )
  • when using the jar it is harder to get the attached sourcecode in the IDE ( when from artifact-repo like maven-central, jcenter or jitpack you can easily attach the sources for nicer development )
  • It makes it hard to publish your app on fdroid ( https://fdroid.org ) as you have to show that the binary jar resulted from given source and there is no binary without attached source-code
  • It's easy to find out that there are updates to an artifact ( there are even plugins for that ) - with the jar I would have to poll for new versions.

Regarding the split - I would suggest to do a multi-module gradle build: https://jitpack.io/docs/BUILDING/#multi-module-projects

ligi avatar Jan 12 '17 18:01 ligi

oh nice - just saw that a lot of work towards this was done in 46888fae6eb7b1dd386f7af7d101ead99ae61981 by @RubbaBoy

ligi avatar Aug 25 '21 00:08 ligi