Hi Per,

Getting back to your original question: have you looked at the closure delegation strategy?

https://groovy-lang.org/closures.html#_delegation_strategy

Unless I misunderstood your problem, I think this might help you to 'delegate' property and method access to a MarkupBuilder instance?

Maarten

On May 21, 2025 11:47:39 Per Nyfelt <per.nyf...@nordnet.se> wrote:
Gradle is great and I use it for most of my projects (and I've written some gradle plugins). However, Gradle is slowly moving towards a declarative style and I quite like the imperative style of Ant. It's just that AntBuilder is a bit too imperative as a build system. However, when extending it, adding support for targets like traditional Ant, and marrying it with the maven resolver ant tasks you get a nice, flexible build system. I'm just doing it for fun but I think it looks quite promising so far. The only major remaining thing I haven't quite figured out yet is how to handle multi-module projects in a nice way.

Best regards,
Per

On Tue, 20 May 2025 at 13:36, <to...@natusoft.se> wrote:
Hi again Per,

Have you seen Gradle ? I believe that Gradle might provide what you are trying to do. Personally I'm not a Gradle fan, but many are.
Tommy Svensson
On 20 May 2025 at 10:38 +0200, Per Nyfelt <per.nyf...@nordnet.se>, wrote:

Thanks Tommy,
My problem was in the context of a custom ant task. I found that if I let go of the idea of "arbitrary additional content" and defined what the different additional sections could be, it was quite easy to do. My solution is here: https://github.com/Alipsa/uso/blob/main/uso-tasks/src/main/groovy/se/alipsa/uso/tasks/CreatePom.groovy in case anyone is interested.

Best regards,
Per

On Mon, 19 May 2025 at 14:01, <to...@natusoft.se> wrote:
Hello Per,

I don't know of anything existing that does what you want. But, in Groovy you can easily define structures like JSON or XML (which both give you a structure but does so using different formats.

Example: Map<String, Object> root = [ "id": "QAZ",  "name" : "Nisse", ... ]

This is a java.util.Map structure. Your code can then take this Map<String, Object> and convert to JSON or XML. But I don't know of anything existing that takes such a Map structure to XML. I would not be entirely surprised if such exists.

In my current project I'm using the Groovy Map shortcut [ : ] to build structured information. In my case it will be converted to JSON and potentially other structured formats later. But as long as you have the information stored in some structured way it should be relatively easy to convert to XML. Reading both JSON and XML is by far more difficult than producing them.

Best Regards,
Tommy Svensson
On 18 May 2025 at 20:38 +0200, Per Nyfelt <p...@alipsa.se>, wrote:

Hi,

I would like to have a user api that can handle the following:

createXml(target: xmlFile, name: 'a test') {

description('test xml')

licenses {
license('Apache License, Version 2.0',
'http://www.apache.org/licenses/LICENSE-2.0')
}

}

// description and licenses are arbitrary, it can be any structure that
can be converted to XML

I want the closure to behave as if it would be statements to a
MarkupBuilder but I am unable to figure out how to do it. Can i convert
the closure to a MarkupBuilder or process it with a MarkupBuilder
somehow? Any ideas?

Best regards

Per

Reply via email to