If it's about pure XML parsing and tweaking the information and building the 
model is not required, XmlBeam [0] is a lightweight alternative to map the 
entire file to a Java object. We use that in the Spring Data release 
automation. Declare an interface containing accessors backed by XPath 
expressions, use the API to create instances and read and write data from and 
to the XML file.

Here [1] is the interface we use to access the parts of the POM relevant to our 
use case.

Cheers,
Ollie

[0] https://xmlbeam.org/
[1] 
https://github.com/spring-projects/spring-data-dev-tools/blob/82252be5d7c11a137a68c7fe985b53e04d91cb18/release-tools/src/main/java/org/springframework/data/release/build/Pom.java

> Am 08.12.2018 um 18:47 schrieb Andres Almiray <aalmi...@gmail.com>:
> 
> Thank you Robert!
> 
> It looks like org.apache.maven.model.Model.DefaultModelBuilder provides the
> behavior I need given this method found in its contract
> 
>   ModelBuildingResult build( ModelBuildingRequest request )
>        throws ModelBuildingException;
> 
> ModelBuildingResult gives me access to the raw model (as read form the
> pom.xml file) and the effective model. This is exactly what I need :-)
> 
> Is there a special way to initialize an instance of such type?
> Theoretically I'd like to call something like
> 
>    ModelBuildingRequest request = new DefaultModelBuildingRequest();
>    request.setPomFile(...);
>    ModelBuilder builder = ... // instantiate builder (??)
>    ModelBuldingResult result = builder.build(request);
> 
> Thanks for your help.
> 
> Best,
> Andres
> 
> -------------------------------------------
> Java Champion; Groovy Enthusiast
> JCP EC Associate Seat
> https://urldefense.proofpoint.com/v2/url?u=http-3A__andresalmiray.com&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=pWrsdUJpQnH-DJXIDk-VNgy7wfo1-h6nGxVaeazNdJI&e=
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.linkedin.com_in_aalmiray&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=UGKJpSnO9O4VH5cvMfn7ZTk5m9sFXqHsplwnlS1nbpk&e=
> --
> What goes up, must come down. Ask any system administrator.
> There are 10 types of people in the world: Those who understand binary, and
> those who don't.
> To understand recursion, we must first understand recursion.
> 
> 
> On Sat, Dec 8, 2018 at 6:33 PM Robert Scholte <rfscho...@apache.org> wrote:
> 
>> The ModelBuilder[1] is what you are looking for, and yes it does a LOT :)
>> 
>> Be aware that it is using CDI, so to make use of it you'll need
>> sisu/guice
>> too.
>> 
>> Robert
>> 
>> [1] 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__maven.apache.org_ref_3.6.0_maven-2Dmodel-2Dbuilder_&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=nOkaCJH3dSvCiihbxfBQKXKE-I2GunCrdaIK9gjbVJs&e=
>> 
>> On Sat, 08 Dec 2018 18:20:51 +0100, Andres Almiray <aalmi...@gmail.com>
>> wrote:
>> 
>>> Of course.
>>> 
>>> This is definitely not a plugin project. My goal is to have an in-memory
>>> representation of the POM as defined by a source pom.xml, to later
>>> transform/enrich it and write it back.
>>> As a side effect this tool can calculate statics on usage patterns and
>>> recommend some others.
>>> 
>>> Best,
>>> Andres
>>> 
>>> -------------------------------------------
>>> Java Champion; Groovy Enthusiast
>>> JCP EC Associate Seat
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__andresalmiray.com&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=pWrsdUJpQnH-DJXIDk-VNgy7wfo1-h6nGxVaeazNdJI&e=
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.linkedin.com_in_aalmiray&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=UGKJpSnO9O4VH5cvMfn7ZTk5m9sFXqHsplwnlS1nbpk&e=
>>> --
>>> What goes up, must come down. Ask any system administrator.
>>> There are 10 types of people in the world: Those who understand binary,
>>> and
>>> those who don't.
>>> To understand recursion, we must first understand recursion.
>>> 
>>> 
>>> On Sat, Dec 8, 2018 at 6:17 PM Enrico Olivelli <eolive...@gmail.com>
>>> wrote:
>>> 
>>>> Il sab 8 dic 2018, 18:09 Andres Almiray <aalmi...@gmail.com> ha
>> scritto:
>>>> 
>>>>> Hello everyone,
>>>>> 
>>>>> I have the need of building a model based on the data defined in a
>>>> pom.xml
>>>>> file.
>>>>> What would be the best way to read, parse, and obtain such model using
>>>>> standard Maven APIs?
>>>>> 
>>>> 
>>>> Could you given some more context?
>>>> 
>>>> I guess you are not writing a plugin.
>>>> 
>>>> Using the internal API may be useful depending on your case.
>>>> 
>>>> Enrico
>>>> 
>>>>> 
>>>>> Best,
>>>>> Andres
>>>>> 
>>>>> -------------------------------------------
>>>>> Java Champion; Groovy Enthusiast
>>>>> JCP EC Associate Seat
>>>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__andresalmiray.com&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=pWrsdUJpQnH-DJXIDk-VNgy7wfo1-h6nGxVaeazNdJI&e=
>>>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.linkedin.com_in_aalmiray&d=DwIBaQ&c=lnl9vOaLMzsy2niBC8-h_K-7QJuNJEsFrzdndhuJ3Sw&r=7iLfhC17FN-CWhuzo2HX1g0LRD1P0huXh9Zkd3m6MZ0&m=IxYdo3ScIXOSlnfw8tbvEDuE1wDPwLfKRtL_lYOz0zs&s=UGKJpSnO9O4VH5cvMfn7ZTk5m9sFXqHsplwnlS1nbpk&e=
>>>>> --
>>>>> What goes up, must come down. Ask any system administrator.
>>>>> There are 10 types of people in the world: Those who understand
>>>> binary,
>>>> and
>>>>> those who don't.
>>>>> To understand recursion, we must first understand recursion.
>>>>> 
>>>> --
>>>> 
>>>> 
>>>> -- Enrico Olivelli
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>> For additional commands, e-mail: dev-h...@maven.apache.org
>> 
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to