On Saturday, February 8, 2020 at 12:32:50 AM UTC+1, Tatu Saloranta wrote:
>
> > In your case, it would probably be good to have a Maven plugin that 
> generates, or enriches, a GMM file with the dependency information from the 
> POMs. 
>
> Yes. 
>

If we get to a conclusion about a doable approach below, I can have a look 
into providing this.
 

>
> > The main concern is conceptually with the Jackson release process. The 
> approach described in the blog post essentially requires all components and 
> BOM to be released together. Because the components refer to the BOM and 
> the BOM refers to the components. If I understand the current release 
> process correctly, the BOM is published in the end once all components were 
> released individually. I don't know if that is something you would consider 
> to do differently in the future? 
>
> Probably not; while unification of some of projects has been done (and 
> may be done in future), I don't think full mono-repo for all Jackson 
> components is the eventual goal. 
>
> Typically bom is actually release early in the process, since most 
> components (excluding jackson-annotations and jackson-core that do not 
> depend on any other jackson components) use version set from BOM (that 
> is, extend `jackson-base`, which imports or extends bom). 
> I don't know if this makes much difference. 
>

So how does that work exactly? (If there is documentation somewhere I 
missed, please point me to it.)
Lets take an arbitrary example - "jackson-jaxrs-json-provider".
When you published "2.10.2", did you publish the BOM before you published 
that module? Because the BOM contains the entry:

<dependency>
  <groupId>com.fasterxml.jackson.jaxrs</groupId>
  <artifactId>jackson-jaxrs-json-provider</artifactId>
  <version>${jackson.version.jaxrs}</version>
</dependency>

Which is invalid until "jackson-jaxrs-json-provider" is actually published. 


> > A variation of the approach works BOM. Then, components declare what we 
> call dependency constraints directly in their metadata. 
> > For example, this could be done for the core components only (if they 
> are released together): 
> > 
> > jackson-core-2.10.2.module             { dependency-constraints { 
> jackson-databind:2.10.2, jackson-annotations:2.10.2, } } 
> > jackson-databind-2.10.2-module      { dependency-constraints { 
> jackson-core:2.10.2, jackson-annotations:2.10.2, } } 
> > jackson-annotations-2.10.2.module { dependency-constraints { 
> jackson-core:2.10.2, jackson-databind:2.10.2, } } 
> > 
> > This means that if you select `2.10.2` for any of the three components, 
> `2.10.2` will also be selected for the other two (through a constraint 
> directly defined in the metadata). 
> > This could maybe work? 
>
> Jackson 3.0 will change versioning slightly, dropping patch from 
> annotations (there will only be 3.0, 3.1, unless some critical problem 
> were found requiring patch version), which might complicate this in 
> that annotations would only limit minor version of other components. 
>

This is not be a problem. The versions do not have to be the same. As long 
as we know "what fits together". 

Jendrik 

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-user/edef900a-fa2e-4413-9b03-82461f106e90%40googlegroups.com.

Reply via email to