Hi Dale,

I just checked out everything and managed to get things imported in IntelliJ 
after a little struggle … this is a good job you did :-)

Right now, it seems as if there were Ant+Gradle+Eclipse build files in there. 
While it might seem convenient to be able to build with the build system of 
choice, the Flex project currently has big trouble with this as it’s a 
nightmare to keep all the different builds in sync. So, if someone is reporting 
problems we now usually ask “what build system are you using?” before asking 
any other questions or being able to help. So, I would suggest deciding which 
one it’s going to be and to stick to that. 

From a first glance at the build, it does seem structurally quite simple. But 
probably there will be the one or other “rock” with a little “monster” 
underneath, if you look closer (there always is …)

The things you mentioned, that you seem to be missing with Gradle (even if I 
can’t quite understand why):
- Javadoc
- release bundles
- manifests

etc. are handled quite nicely by default Maven setups.

JavaDoc is generated automatically when running a release build together with 
the usual Maven project reports (is even configured in the apache parent POM 
together with rat, deployment etc.)

I didn’t quite understand the “Manifest” thing, but the jar plugin does 
generate this with reasonable defaults, and can be extended to also export the 
dependencies into that (even if I don’t recommend that). 

Finally, the assembly-plugin is perfect for generating the binary (and source) 
release packages.

In the Flex project, I also setup the build to run SonarQube analysis and 
automatically generate the documentation from markdown and/or asciidoctor 
(which I think is very convenient) even automatically update and deploy the 
project website. 

And as I said before, with Gradle you will be able to create an equally good 
build … but you will have to do a lot of the configuration manually and it does 
always offer the cheap way out. Unfortunately, every now and then someone will 
try and use this cheap way out, may the reason be just not knowing better or 
needing to get “this little feature out the door before the next release”. 

It took me about every free minute for about 2 years to untangle and refactor 
the FlexJS Ant build converting it to a clean Maven build. If we had started 
working cleanly from the beginning, this wouldn’t have been a problem. Now the 
build times went down from 8 hours to 20 minutes, we have Jenkins automatically 
build and test all feature branches using the multi-branch pipeline plugin. I’m 
really satisfied with the results … well except the fact that I must re-sync 
the Ant and Maven build all the time ;-)

I could offer to create a fork on GitHub, create a feature branch there and try 
to whip up a set of poms that add Maven as fourth build system to the list … 
you could check it out and play around with it. But I’d only do this, if there 
is any interest in it.

Chris




Am 24.05.17, 17:08 schrieb "Dale LaBossiere" <dml.apa...@gmail.com>:

    
    On May 24, 2017, at 9:38 AM, Christofer Dutz <christofer.d...@c-ware.de> 
wrote:
    ...
    Regarding the build system … what is the projects general opinion on a 
Maven build? I know that Ant and Gradle are a lot more flexible as Maven, but I 
think it is a good thing that Maven is this strict, as it forces the developers 
to address structural issues instead of using workarounds. Especially in 
Open-Source projects with a lot of different levels of build system expertise I 
usually always had problems with non Maven builds. But this is just a general 
question without having seen the current state
    ----------------
    
    I think we headed down the gradle path because someone stepped up and
    contributed an initial set of gradle build files.  And it was simple.  But 
it omitted 
    building javadoc, release bundles, the jar manifest class-path that I’ve
    mentioned, and maybe some additional stuff (oh, like building java7 based
    jars using retrolambda, as well as building for an android tgt).  
    
    I don’t know that the project has an overall position on gradle vs maven.  
Folks?
    
    I don’t have a strong opinion (though I was happy to see the elimination of 
an 
    xml based build spec :-)
    
    Once “forced to address structural issues instead of using gradle 
workarounds",
    might one then end up with an equivalently simple/clean gradle based system?
    Though the path to get to that point may be less clear :-)
    
    — Dale

Reply via email to