
@theartofmadeline

YOU ARE THE REASON
he wasn't even looking at me and he found me

Kaledo Art
cherry valley forever

Love Begins
todays bird

oozey mess
hello vonnie
Misplaced Lens Cap

blake kathryn
DEAR READER
Stranger Things


Origami Around

祝日 / Permanent Vacation
ojovivo
dirt enthusiast

seen from Malaysia
seen from United States

seen from Brazil

seen from Malaysia
seen from Türkiye
seen from United States
seen from Brazil
seen from United Kingdom

seen from United States
seen from United States
seen from Germany

seen from United States

seen from Belgium

seen from United States
seen from Malaysia
seen from Argentina
seen from Colombia

seen from United States

seen from United States
seen from United States
@graemerocher

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
How to use a specific version of GORM in Grails 3
In order to ensure compatiblity Grails 3 ships with a BOM that applies dependency management and enforces a particular version of GORM when using Grails.
Sometimes however, you want to use a different version or there is a more recent version of GORM out there that you would prefer to use.
Luckily Gradle makes this fairly easy to control. Using the following snippet you can enforce a particular GORM version within your build.gradle:
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if(details.requested.group == 'org.grails' && details.requested.name.startsWith('grails-datastore')) { details.useVersion("5.0.5.RELEASE") } } }
In this example I'm forcing Gradle to resolve the 5.0.5.RELEASE version of GORM using the Gradle resolutionStrategy.
Deploying Grails 3 to WildFly 10
Recently in order to investigate some issues I had to deploy a Grails 3.1 application to WildFly 10 (and hence I believe JBoss).
The documentation for WildFly is all over the place, with some of it on a wiki, the wiki pointing to pages that don't exist and so on.
Anyway, since I didn't find any information online on how to do this, I thought I would do a braindump here of the magic sauce.
My first attempt to deploy a vanilla application led to the following mysterious exception:
java.lang.NoClassDefFoundError: Failed to link org/hibernate/validator/internal/engine/messageinterpolation/parser/MessageDescriptorFormatException`
So like most of these non-Tomcat containers WildFly bundles a bunch of Java EE APIs, so seemingly the Hibernate JARs that Grails already includes conflict.
To resolve this step 1 is to create a src/main/webapp/WEB-INF/jboss-deployment-structure.xml file in your Grails project that should look like this:
<?xml version='1.0' encoding='UTF-8'?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1"> <deployment> <exclusions> <module name="org.hibernate.validator"></module> </exclusions> </deployment> </jboss-deployment-structure>
Then step 2 is add a runtime dependency on jaxb-api in build.gradle (which is needed for some reason) and to make the spring-boot-starter-tomcat dependency provided:
runtime 'javax.xml.bind:jaxb-api:2.2.12' provided "org.springframework.boot:spring-boot-starter-tomcat"
With these two changes in place I was able to deploy a Grails 3 application to WildFly 10, however I imagine depending what Java EE APIs you are using you may have to introduce additional exclusions.
For example if you are using GORM for Hibernate and want to use JTA container managed transactions then you may need to correctly configure JTA. Alternatively, you can leave the transaction management up to GORM (recommended) by excluding JTA autoconfiguration from your Application class:
import org.springframework.boot.autoconfigure.transaction.jta.* import org.springframework.boot.autoconfigure.EnableAutoConfiguration import grails.boot.GrailsApp import grails.boot.config.GrailsAutoConfiguration @EnableAutoConfiguration(exclude=[JtaAutoConfiguration]) class Application extends GrailsAutoConfiguration { static void main(String[] args) { GrailsApp.run(Application, args) } }
With this in place Grails/Spring managed transactions will be used instead, which is preferable.
Alternatively, if you would rather avoid all this hassle you could just deploy your Grails application with:
java -jar myapp-0.1.jar
Which is much simpler ;-)
Using Spring DevTools Reloading in Grails 3.1
Spring Boot 1.3 introduced the DevTools project one of the features of which is automatic application restarts.
Grails for a long time has had reloading. The current reloading mechanism uses Spring Loaded, a reloading agent for the JVM that modifies classes in a running JVM without requiring a restart.
For the most part Spring Loaded is very effective and provides a great developer experience, but there are some rare corner cases where it does not work.
Out of interest, I was interested to see how difficult it would be to setup Spring Boot DevTools in Grails and as it turns out it is quite simple. The first thing you need to do is disable Spring Loaded, which can be done in build.gradle:
grails { agent { enabled = false } }
The next thing is to add the spring-boot-devtools dependency to your application:
compile("org.springframework.boot:spring-boot-devtools")
Now when you run your application any changes you make will trigger an automatic application restart.
Overall I think the approach is interesting, and potentially useful for small applications. Larger applications will pay the application restart costs however and I did see intermittent problems with the in-memory H2 not closing correctly. I imagine little things like that could be an issue, especially static state and so forth so your mileage may vary.
Grails 3, Gradle & Multi-Project Builds
One of the key new features of Grails 3 is the build system now being a set of plugins for the Gradle build tool.
The Grails 2.x build system was conceived when Gradle did not exist and the only options in the Java ecosystem were Ant and Maven, neither of which I felt was appropriate for a RAD framework.
Gradle on the other hand provides the flexibility and ease of use necessary, plus the power of multi project builds.
Unfortunately one area that has not worked well up until now is the developer experience when developing Grails applications using Gradle multi project builds.
With Grails 2 it was possible to define a series of inline plugins and have all of the features of those inline plugins available to the main application. The equivalent to this in the Gradle world is a multi-project build.
The issue with the way Gradle works however, is the default behaviour is to construct a JAR file for each subproject dependencies and place the JAR file on the classpath. So if you have a dependency like:
compile project(":anotherProject")
Gradle will build a JAR file from anotherProject and place that on the classpath. This is what you want when creating a production distribution, such as a runnable JAR for deployment. However, at development time this presents an issue.
Grails plugins are regular JAR files, but they provide a lot more possibilities than most frameworks. In addition to classes, they can contain GSPs, i18n message bundles and static assets. In fact they can contain a complete application that can be embedded within another application.
So what happens when Gradle builds a JAR file from a subproject that is a plugin? Well when a developer runs grails run-app they generally expect that changes they make to classes, GSPs, i18n message bundles and static assets will be reflected into the running application, without restarting.
Since Gradle has packaged all of these sources into a JAR file, including doing things like precompiling all GSP or GSON views into classes, they can no longer be changed. This impacts the developer experience, because every change you need to make to a subproject requires an application restart. Not what you want.
So today we released Grails 3.0.14 and Grails 3.1.1 and within those releases is a new feature that we have developed whilst working on a large client project. With this release you can can enable exploded mode and suproject plugins within your build.gradle as follows:
grails { exploded = true plugins { compile project(':anotherProject') } }
Then when you run the application with grails run-app instead of building a JAR file for each subproject instead it will place the classes and resources of the plugin directly on the classpath.
If you package the application for production deployment then the dependencies will still be packaged as JAR files, but at development time you benefit from the productivity features such as reloading of classes, views, i18n messages and so on for subprojects in the same way as inline plugins were reloadable in Grails 2.
In order to make this work we had to modify that artifacts Gradle produces when building a dependent project to be the classes directory. In addition the classpath for grails run-app had to be modified to also include the resources found in src/main/resources.
Hopefully one day Gradle includes an out-of-the-box solution for this, but for the moment what we have in place works and greatly improves the developer experience.
I also thought this was a nice example of how OCi is working with clients to understand their issues and add features to the framework that improve their productivity. Get in touch if you are looking for help and want to collaborate with us in making Grails better for everyone.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Grails 3.1 M3 and 3.0.10 Released
Today we are pleased to announce the availability of Grails 3.1 Milestone 3. This milestone introduces the following new features:
Refinements to the Web API profile, including JSON views
Preview of the AngularJS Profile
GORM 5 Support, including GORM for Hibernate 5, MongoDB and Neo4j
Spring Boot 1.3 GA baseline
Profile Repository Refinements
This will be the final milestone as we head towards the release candidate phase. For more information refer to the following links:
Release Notes
Download
What's new in Grails 3.1 Guide
As we are nearing the RC phase please begin testing your applications and report any issues found.
In addition, Grails 3.0.10 is available and includes numerous small improvements and bug fixes.
If you need any help upgrading to Grails 3, don't hestitate to contact us. The Grails team at OCi is growing every day and are happy to help. Oh and did I mention we're hiring?
Announcing GORM 5 Suite
Today I’m pleased to announce the availability of the first release candidate of GORM 5 Suite.
GORM 5 is a ground-up rewrite of GORM for Grails based on Groovy Traits and AST transformations. In addition there are exciting new features in GORM 5 which I will detail below.
Hibernate 5
GORM for Hibernate now supports Hibernate 3, 4 and and the latest Hibernate 5 release.
The internal implementation has been rewritten based on Groovy traits and is more decoupled from Grails, better supporting usage outside of Grails or standalone.
Neo4j
GORM for Neo4j has been completely rewritten and supports the latest Neo4j 2.3.x release as a baseline.
Leveraging Cypher and supporting all of the key features of GORM, Grails users can now trivially map their domain models to a Neo4j graph.
GORM and Groovy are a perfect fit for Neo4j’s schemaless design and graph model.
MongoDB
GORM for MongoDB has been rewritten ontop of the MongoDB 3.x driver. Most current object mapping tools (including previous versions of GORM) convert MongoDB Document objects to and from Java objects, which is hugely ineffecient.
With GORM for MongoDB 5 GORM leverages the driver’s CodecRegistry concept to natively read Java objects avoiding this conversion and dramatically improving query performance.
Cassandra
GORM for Cassandra has been made Grails 3.x compatibile and supports the latest Cassandra driver’s from Datastax.
GORM for Cassandra can now also be used standalone or in a Spring Boot application.
Grails 2, Grails 3 and Spring Boot
GORM 5 comes with releases for Grails 2 (minus Hibernate 5 support), Grails 3.x and Spring Boot, as well as supporting standalone usage. This means whatever environment you choose to develop in GORM support is available.
New Website and Documentation
To help you get started there is a new website available with points to the documentation on how to use GORM.
The Future
GORM is a critical part of the Grails framework and has matured in a general purpose data technology supporting a broad range of relational and non-relational data.
GORM 5 GA will ship with Grails 3.1 GA and we plan to add exciting new features to GORM across the coming year:
GORM Async - Asynchronous support for the drivers that support it
GORM REST - Rewritten REST client based on GORM Async
GORM HBase - GORM for Hadoop HBase
If you would like to hear more come to the Grails Exchange where myself and other members of the every growing Grails team at OCi will be on hand to answer questions.
I've setup a Grails community on Slack, be sure to join and participate in the discussion!
Grails at OCI: Week 1
Last week was my first week working on Grails at OCI. Exciting times ly ahead for the Grails team at OCI, but it was get to get a toe in the water and get things moving forward.
If you have a Grails project and are looking for help whether it be training, consulting, or support then get in touch with OCI.
To begin moving forward addressing the issue backlog I first had to migrate our old JIRA issue tracker to Github issues. After collaborating with the Github guys and using their new, as of yet not public API for import issues from external systems I managed to come up with a script that migrates JIRA to Github issues
The migration of issues has been done for Grails, the MongoDB plugin and the Spring Security Core plugin, but the script can easily be adapted to migrate the issue history of any of the projects previously sorted, so if you are a plugin developer that is using the old Grails JIRA instance get in touch to have the issue history migrated.
Since then I have been addressing 2.5.x and 3.0.x issues with the aim of releasing 2.5.1 and 3.0.2 as soon as possible. For those at Gr8Conf, enjoy the conference, it unfortunately came too close to my start date for me to make it this year, but I look forward to speaking at future events.
Finally, congrats to Dave Klein and Colin Harrington for accepting positions on the Grails team within OCI!
Grails 3.0 Released and the Road Ahead
Today is significant on a number of fronts. First, the Grails team released Grails 3.0 which as we outlined last year is a dramatic reimagining of the framework thousands of developers have grown to love.
Grails 3.0 has been rewritten from the ground up ontop of Spring Boot and Gradle. In additional it includes support for application profiles which allows the creation of distinct application templates targeting different development environments or deployment targets.
We are hugely excited to make this new release available to the Groovy and Grails communities and look forward to the plugin community contributing to the new release via the new Bintray-powered plugin portal.
The other significant part about today is it is my last day at Pivotal (as well a the rest of the Groovy/Grails team). It has been a quite wonderful journey, from the exciting days of birthing a startup, to being acquired by SpringSource where I got to work with some of the most talented people in the industry (I will always be grateful to Rod Johnson and Adrian Colyer for granting me that opportunity).
It is unfortunate that the company that exists today (Pivotal) is very different to what SpringSource was and is going in a new direction which Groovy and Grails have no part of. Nevertheless, I count myself as privileged to have had the chance help define the future of application development on the JVM during my time there.
Looking to the future it is great to see Groovy moving to Apache and with its strong community and solid support from the Apache foundation the future is extremely bright for the project going forward.
On the Grails side, long term we will also be moving Grails to a foundation, although we have yet to start conversations with the various foundations. We are still in discussions with various companies about continuing sponsorship of the development of the framework and hope to have something to announce soon.
For now though I plan to take some time off until May, after what has been a rather tumultuous time since the decision and subsequent announcement in January. I look forward to returning raring to go and continuing to contribute to the growth of the Groovy and Grails communities and this fabulous ecosystem that I have enjoyed contribuing to over the last 7 years.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Grails Project Infrastructure Update
As we progress into the last month of Pivotal sponsorship and continue our search for a new sponsor we have been taking a number of important steps around the infrastructure of the Grails project.
Website
We launched a new version of the website. The new website is a Grails 2.4.4 application, with part of it statically generated. The statically generated part can be found on Github.
The reasoning for this approach is it is easier for the community to contribute, test and submit pull requests for the static content.
We have also implemented continuous deployment so that when a pull request is merged the change automatically updates on the website.
The Grails application that powers the dynamic part can also be found on Github. Changes to this part are also continuously deployed to a staging environment on Cloud Foundry.
Pivotal have kindly agreed to host the website on Pivotal Web Services to help support the community.
The infrastructure setup of the new Grails website is:
Cloud Flare for HTTPS, proxying, caching etc.
Pivotal Web Services for hosting and auto scaling
New Relic for monitoring
ClearDB for MySQL hosting
SendGrid for email
Travis CI for CI
Continuous Integration
Speaking of CI, our Hudson server is hosted in the VMware data center and will go away in the near future. We have migrated the Grails build infrastructure completely to Travis CI.
The Travis CI build also performs continuous deployment and when we tag a new Grails release (say with a tag like v3.0.0) Travis will automatically upload the release to Bintray and deploy the release to Github Releases.
We have setup a similar CI build for the documentation that will automatically build and publish the documentation to Github Pages ever time we tag a release of the documentation so that the latest docs are always up-to-date.
Issue Tracker
Our issue tracker is a JIRA installation hosted in the VMware data center. We had hoped to use Atlassian's OSS offering of Atlassian Cloud, but unfortunately this is limited to 2000 users and Grails being a large Open Source project with a large audience we have nearly 10,000 registered users on our JIRA installation.
The current plan is to migrate from JIRA to Github Issues as many other projects have done recently, as we believe that Github Issues more than meets the needs of an Open Source project and provides nice integration with pull requests, forks and the Github community.
The Future of Groovy & Grails Sponsorship
Today, Pivotal announced that they will be ending sponsorship of the Groovy and Grails projects. The result is that from the 31st of March both projects will be required to find new funding.
Guillaume (Groovy project lead) has written in-depth on the announcement and the successes and achievements of the Groovy team over the last 11 years. There is really so much more to come from the team, including the potential to improve dramatically the development experience on Android.
The Groovy team at Pivotal are a small but immensely talented to group, who have enabled the creation of some of the significant innovations in the Java ecosystem of the last 10 years. Frameworks like Ratpack and Grails, build tools like Gradle and testing framework like Spock to name just a few. To get in touch regarding sponsorship of Groovy you can email [email protected]
For Grails, over the last 7 years with Pivotal we have delivered a framework that has made thousands of developers more productive. With innovative technologies such as GORM helping drive forward productivity in the data space, and the plugin system inspiring developers to create over 1100 unique plugins.
Grails continues to be immensely popular with an active community and 800k downloads in 2014. Groovy and Grails together have an extremely strong command, with many user groups and popular annual conferences.
Over the last 6 months we have been hard at work in delivering Grails 3.0, the next major iteration of the framework, which will go GA prior to the 31st of March. After that, Grails too will be looking for a new sponsor. There is so much potential to unlock with Grails 3.0 in terms of building out support for new profiles targeting Netty, Hadoop and Asynchronous programming models.
Regardless, of what happens in terms of sponsorship, both the Groovy and the Grails communities will continue to innovate and move forward as Open Source projects. However, if your organization would like to give back to the community by sponsoring the Grails development team to accelerate the development of the framework please contact the same address: [email protected]
See how you can contribute to Groovy.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Guillaume Laforge's blog
Generating Pretty Groovy 2.3 Groovydocs with Gradle
In some projects we have to build with an earlier version of Groovy, but given that Groovy 2.3.x introduced such pretty Groovydocs it would be a shame to lose out on the improved format.
Fortunately Gradle saved the day. To use the new format in a Gradle project simply define a new configuration:
configurations { groovyDoc }
Then define the necessary dependencies using this new configuration:
dependencies { groovyDoc 'org.codehaus.groovy:groovy-groovydoc:2.3.3' groovyDoc 'org.codehaus.groovy:groovy-ant:2.3.3' }
Finally configure the groovydoc task to use the configuration:
groovydoc { groovyClasspath = configurations.groovyDoc }