Add a Gradle Build #194

Closed
ysb33r opened this Issue Aug 27, 2014 · 41 comments

Projects

None yet

5 participants

@ysb33r
Member
ysb33r commented Aug 27, 2014

The idea is to migrate the current maven build over to a Gradle-based one.

There has been a discussion on it at the Asciidoctor forum - http://discuss.asciidoctor.org/Building-asciidoctorj-with-gradle-td2078.html

For now at least the idea is to maintain both builds and to ensure that the Gradle build does everything it needs to do keep at least the same functionality as the Maven build

@ysb33r
Member
ysb33r commented Aug 27, 2014

I have a fork at https://github.com/ysb33r/asciidoctorj which I'll do the initial work on. It required the jruby-gradle-plugin and when the next version of this is released, I'll look into creating a PR.

@lordofthejars
Member

Cool I think we must maintain both systems and then in near future let's
see if we completely remove Maven support or not. Currently but
AsciidoctorJ are signed using gpg plugin.

2014-08-27 10:56 GMT+02:00 Schalk W. Cronjé notifications@github.com:

I have a fork at https://github.com/ysb33r/asciidoctorj which I'll do the
initial work on. It required the jruby-gradle-plugin and when the next
version of this is released, I'll look into creating a PR.


Reply to this email directly or view it on GitHub
#194 (comment)
.

+----------------------------------------------------------+
Alex Soto Bueno - Computer Engineer
www.lordofthejars.com
+----------------------------------------------------------+

@ysb33r
Member
ysb33r commented Aug 27, 2014

Pull Request #195. There is a lot of comments in the PR. Happy hacking!

@mojavelinux
Member

I agree we should have both builds because it provides a good reference. I
do think we should document which one is the canonical build, which would
be the official one for making a release. (I'm partial to Gradle in that
regard).

@ysb33r
Member
ysb33r commented Aug 27, 2014

You should stick with maven as the definitive, until this is mature enough. I know at least the following is still outstanding on this plugin:

  • Clarify the differences between the list of files that are in the jar produced by Maven & the one by Gradle. In this case be cannot necessarily accept that all of the files that Maven is adding are correct. IMHO some files can be left out of the JAR
  • I suspect thet Gradle is putting GEMs used for testing into the final JAR.
  • Test that the JAR produced actually works in practice. The unit tests are passing, but can the final JAR be consumed?
  • Update the Bintray details
  • Anything else that needs to go into the MANIFEST?
  • Updates to jruby-gradle-plugin is coming; will need to add those when the new version is released.
  • Distribution with cmdline needs to be done, but let's wait for jruby-gradle-plugin here. So things are afoot.
  • Signing. Decide whether we are signing locally or using Bintray. If we do the former then we need to use the signing-gradle-plugin. For the latter, I am not sure whether the latest bintray-gradle-plugin supports auto-signing.
@lordofthejars
Member

Well I am preparing deep changes on asciidoctorj, maybe they will be
released in 1.6.0 but probably they will be in 1.7 or 2.0 so we Can use
that big change release to move oficial build tool from maven to Gradle

El dimecres, 27 agost de 2014, Schalk W. Cronjé notifications@github.com
va escriure:

You should stick with maven as the definitive, until this is mature
enough. I know at least the following is still outstanding on this plugin:

  • Clarify the differences between the list of files that are in the
    jar produced by Maven & the one by Gradle. In this case be cannot
    necessarily accept that all of the files that Maven is adding are correct.
    IMHO some files can be left out of the JAR
  • I suspect thet Gradle is putting GEMs used for testing into the
    final JAR.
  • Test that the JAR produced actually works in practice. The unit
    tests are passing, but can the final JAR be consumed?
  • Update the Bintray details
  • Anything else that needs to go into the MANIFEST?
  • Updates to jruby-gradle-plugin is coming; will need to add those
    when the new version is released.


Reply to this email directly or view it on GitHub
#194 (comment)
.

Enviat amb Gmail Mobile

@ysb33r
Member
ysb33r commented Aug 28, 2014

Do we need to include the following from unpacked GEMs in the asciidoctorj jar?

*/test/*
cache/
specifications/
@lordofthejars
Member

I think it is not required, but standard gem package contains it, so to
maintain the same layout as packaged gem these directories are extracted as
well.

Alex.

2014-08-28 20:42 GMT+02:00 Schalk W. Cronjé notifications@github.com:

Do we need to include the following from unpacked GEMs in the asciidoctorj
jar?

/test/
cache/
specifications/


Reply to this email directly or view it on GitHub
#194 (comment)
.

+----------------------------------------------------------+
Alex Soto Bueno - Computer Engineer
www.lordofthejars.com
+----------------------------------------------------------+

@mojavelinux
Member

You only need the following two folders:

  • /gems/
  • /specifications/

The rest you can exclude. I think we should to keep the jar smaller.

@ysb33r
Member
ysb33r commented Sep 13, 2014

You only need the following two folders:

/gems/
/specifications/

The rest you can exclude. I think we should to keep the jar smaller.

The Jruby Gradle Base plugin v0.1.2+ will take care of that by default. Unless you explicitly tell the jrubyProcessGems task to include more, it will only copy the minimum.

@mojavelinux mojavelinux added this to the v1.5.2 milestone Nov 27, 2014
@mojavelinux mojavelinux added improvement and removed improvement labels Nov 27, 2014
@mojavelinux
Member

Pending Alex's approval, I consider this to be a prerequisite for the 1.5.2 release. Where we're headed, Maven is a hindrance and it's time to get rid of it.

@mojavelinux
Member

Unless you explicitly tell the jrubyProcessGems task to include more, it will only copy the minimum.

There's only one way to respond to this statement. Awesome sauce!

@mojavelinux
Member

You should stick with maven as the definitive, until this is mature enough.

If I have to drink every night for a week straight to make this happen, I'm ready to do it. I want to do whatever we have to do to get rid of Maven and switch to Gradle. I'm pushing in all my chips at this point.

@lordofthejars
Member

Ok then I will add for version 1.5.2 release.

@mojavelinux
Member

👍

@ysb33r
Member
ysb33r commented Nov 27, 2014

I'll be around to help debug the Gradle build

@mojavelinux
Member

Great! The first step is that we need to take your build file and split it into a root build file and a build file for the asciidoctorj component. I'm proposing the following folder structure (correct me if I'm wrong).

build.gradle
asciidoctorj/
  build.gradle
asciidoctorj-pdf/
  build.gradle
asciidoctor-epub3/
  build.gradle

The versions of the pdf and epub3 modules should track the version of the upstream gems. Users have made it clear that the asciidoctorj jar versions should map 1-to-1 with the gem versions or else it's massively confusing for them.

@mojavelinux
Member

If we need to put those folders under a "components" folder, I'm fine with that.

@aalmiray
Member

Give me a yoller if you need help with the Gradle stuff. You can also remove the "asciidoctor-" prefix from the name and put it back in the generated jars

@mojavelinux
Member

So perhaps:

build.gradle
modules/
  core/
  epub3/
  pdf/

?

@aalmiray
Member

Yes, something like that 😄. Do you guys have any problem with publishing asciidoctorj-core instead of asciidoctorj?

@mojavelinux
Member

Here's what we need as a next step to get this happening. What does a module build look like that will create a jar file for the Asciidoctor PDF gem? @ysb33r if you can lay that out or point us to an example, then we'll be off running. Perhaps you can update your PR with a multi-module structure that at least builds core and pdf (or just say what needs to be done and I'll be happy to give it a shot).

@mojavelinux
Member

To clarify, all we need to do with PDF and EPUB3 is to take each gem and all it's dependencies, bundle it as a jar and redistribute it to jcenter / maven central. That will allow people to use these converters without any knowledge that they are using JRuby.

@mojavelinux
Member

That will allow people to use these converters without any knowledge that they are using JRuby.

...and that is the number 1 complaint about the AsciidoctorJ ecosystem at this point. They can't just add asciidoctorj-pdf jar and be done with it.

@mojavelinux
Member

Do you guys have any problem with publishing asciidoctorj-core instead of asciidoctorj?

My feeling is that asciidoctorj will always be (within either the 1.x or 1.5.x series) an alias to a bundle of what it is today for backwards compatibility. Eventually, we will just stop publishing this artifact, unless a clearer path emerges.

@aalmiray
Member

Left a comment on #195 about the basic multi-module structure

@ysb33r
Member
ysb33r commented Nov 27, 2014

Here's what we need as a next step to get this happening. What does a module build look like that will create a jar file for the Asciidoctor PDF gem? @ysb33r if you can lay that out or point us to an example, then we'll be off running. Perhaps you can update your PR with a multi-module structure that at least builds core and pdf (or just say what needs to be done and I'll be happy to give it a shot).

Looks like @aalmiray already did the necessary.

@mojavelinux
Member

Looks like @aalmiray already did the necessary.

Indeed, champion.

Though, I'm interested in your insight about how to use the JRuby Gradle plugin to bundle the gem and it's dependencies as a jar. Could you remind me of where the prototype is for that?

@ysb33r
Member
ysb33r commented Nov 27, 2014

Something like

apply plugin: 'com.github.jruby-gradle.jar'

apply plugin: 'java'

dependencies {
  gems 'rubygems:foobar:1.2.3.4'
}
jar {
  jruby {
    defaults 'gem'
  }
}

More details at https://github.com/jruby-gradle/jruby-gradle-jar-plugin

@mojavelinux
Member

Nice. Thanks @ysb33r!

@LightGuard
Member

If we're taking the same version, do we want to specify the version of the
gem, out just have it take the latest asciidoctor gems?
On Thu, Nov 27, 2014 at 03:11 Dan Allen notifications@github.com wrote:

Nice. Thanks @ysb33r https://github.com/ysb33r!


Reply to this email directly or view it on GitHub
#194 (comment)
.

@ysb33r
Member
ysb33r commented Nov 27, 2014

@LightGuard If we are thinking of bundling specific asciidoctor GEMs as individual JARs, I would think that the version of the GEM should match the version of the JAR.

If we are talking about the standard set of GEMs that will get bundled with asciidoctorj, then the approach would me as I have done for the initial asciidoctorj Gradle build script.

@ysb33r
Member
ysb33r commented Nov 27, 2014

@mojavelinux The GEM bundling now has me worried. If gemA -> jarA, and gemB -> jarB, but both gemA & gemB depends on gemC, then gemC will get bundled into both jarA, jarB. This can cause a problems if versions of gemC are different and both JARs get are consumed in a downstream build i.e. via the maven or gradle plugins.

@mojavelinux
Member

I would think that the version of the GEM should match the version of the JAR.

👍

@mojavelinux
Member

The GEM bundling now has me worried.

We obviously have to be careful here. In the long run, I think we are going to move away from bundling because the gems should act more like library dependencies. However, due to the current (poor) state of distribution in the JRuby ecosystem, we have to do this to avoid giving users major headaches. So, again, I see the short and long term solutions as different.

@mojavelinux
Member

Another way to look at it is to begin with the end goal in mind. If we can accomplish that end goal in a cleaner way, the user doesn't care. The user wants to be able to specify a dependency on asciidoctorj-* and that's it. No extra song and dance required. Our goal is to make that happen in the cleanest way possible over time.

@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 29, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add Gradle build
- remove Maven build
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
e0202cd
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 29, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add Gradle build
- remove Maven build
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
00cd3ef
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- update script to test against Asciidoctor upstream
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
56aaaa7
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- update script to test against Asciidoctor upstream
- configure install to local Maven repository
- configure signing plugin
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
30b576c
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- update script to test against Asciidoctor upstream
- configure install to local Maven repository
- configure signing plugin
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
7096402
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- update script to test against Asciidoctor upstream
- configure install to local Maven repository
- configure signing plugin
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
59d4d3c
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- use JRuby Gradle plugin to manage gems
- activate and fix broken iconfont test
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- update script to test against Asciidoctor upstream
- configure install to local Maven repository
- configure signing plugin
- configure distribution to bintray (not tested)
- autoload asciidoctor-pdf gem when backend is set to pdf
462db47
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties in gradle.properties files
- use JRuby Gradle plugin to manage gems
- only bundle essential files from RubyGems
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure distribution to Bintray
- update script to test against Asciidoctor upstream
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
6836f7b
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-pdf and asciidoctorj-epub3 subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (core)
- allow Gradle to generate start scripts for distribution
- add additional information to AsciidoctorJ manifest (dist only)
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure distribution to Bintray
- update script to test against Asciidoctor upstream
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
d3488d6
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure distribution to Bintray
- update script to test against Asciidoctor upstream
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
57a99d5
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure distribution to Bintray
- update script to test against Asciidoctor upstream
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
e9cab20
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Nov 30, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure distribution to Bintray
- update script to test against Asciidoctor upstream
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
9857772
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Dec 1, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script (pom.xml)
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution zip for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure upload to Bintray (creates package & version; includes distribution zip)
- update script to test against Asciidoctor upstream (using Maven to install gem)
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
a6daf8b
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Dec 1, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script (pom.xml)
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution zip for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure upload to Bintray (creates package & version; includes distribution zip)
- update script to test against Asciidoctor upstream (using Maven to install gem)
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
efe15fe
@mojavelinux mojavelinux added a commit to mojavelinux/asciidoctorj that referenced this issue Dec 1, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script (pom.xml)
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution zip for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure upload to Bintray (creates package & version; includes distribution zip)
- update script to test against Asciidoctor upstream (using Maven to install gem)
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
3a601e9
@mojavelinux mojavelinux self-assigned this Dec 2, 2014
@mojavelinux mojavelinux added a commit that closed this issue Dec 3, 2014
@mojavelinux mojavelinux resolves #194 migrate project to multi-module Gradle build
- add multi-module Gradle build
- remove Maven build script (pom.xml)
- setup Gradle wrapper
- relocate core to asciidoctorj-core subproject
- setup asciidoctorj-epub3, asciidoctorj-pdf and asciidoctorj-distribution subprojects
- move bundling of asciidoctorj-epub3 into separate jar
- define version and properName properties for each artifact in gradle.properties
- use JRuby Gradle plugin to manage gems
- bundle only essential sources from gems; copy to output folder of main source set
- configure Gradle to generate Eclipse and IDEA project files
- create distribution zip for AsciidoctorJ (bundles core, epub3 and pdf)
- use Gradle to generate start scripts for distribution
- optimize JVM flags for start scripts in distribution
- add additional information to manifest of artifacts
- configure install to local Maven repository
- configure signing (GPG) plugin
- configure upload to Bintray (creates package & version; includes distribution zip)
- update script to test against Asciidoctor upstream (using Maven to install gem)
- activate and fix broken iconfont test
- autoload asciidoctor-pdf gem when backend is set to pdf
a56733a
@lordofthejars
Member

Hurrah 🍻

@mojavelinux
Member

See the instructions for using the Gradle build here:

https://github.com/asciidoctor/asciidoctorj#build-the-project

I think you are going to really like it.

If you are using IntelliJ 14, you should just be able to import the project and run the tests out of the box. At least, I was able to do so. For Eclipse, you have to run ../gradlew eclipse from the asciidoctorj-core directory, then import the generated project files. I haven't tried the Eclipse Gradle support yet.

@mojavelinux
Member

Btw, AsciidoctorJ EPUB3 and AsciidoctorJ PDF are included in the distribution zip! Super easy way to get started with Asciidoctor on the JVM!

@lordofthejars
Member

I am using Intellij 14. Ok now I will start fixing some issues and then we can release the version. Sorry to not had time to do this Gradle migration and you have to be done all the way. But I was busy in regular job and with Arquillian :) 👽

@mojavelinux
Member

Sorry to not had time to do this Gradle migration and you have to be done all the way.

Trust me when I say it aligned perfectly with my current contract. I'm actually very glad I had the chance to have this experience. And I'm confident that it will lead to a better Gradle in addition to a better AsciidcotorJ. Plus, you are killing it with 👽!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment