Interesting but common case: a module dep is a module in compile/some tests
but not at runtime (spring boot fatjar).
Back to explicit config in plugins and drop new module type?

Le dim. 29 oct. 2023 à 07:46, Christoph Läubrich <m...@laeubi-soft.de> a
écrit :

>  > where properties are totally extensible,
>
> And if now I could supply additional properties from the xml-model ...
>
> Am 29.10.23 um 00:40 schrieb Tamás Cservenák:
> > And finally this is hardly gonna happen in Maven 3 lifespan, as sadly
> > ArtifactHandler of it is quite limited: has only one flag:
> >
> https://github.com/apache/maven/blob/maven-3.9.x/maven-artifact/src/main/java/org/apache/maven/artifact/handler/ArtifactHandler.java#L55
> >
> > Sadly, Maven4 Type continued on this path, but luckily we are in alpha,
> and
> > will propose a PR to type that currently looks like this:
> >
> https://github.com/apache/maven/blob/master/api/maven-api-core/src/main/java/org/apache/maven/api/Type.java#L80
> >
> > And would rework it to be more (if not same as) the resolver
> ArtifactType:
> >
> https://github.com/apache/maven-resolver/blob/master/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactType.java#L63
> >
> > where properties are totally extensible, for example "add to classpath"
> is
> > really just one flag (added by ArifactType):
> >
> https://github.com/apache/maven-resolver/blob/master/maven-resolver-api/src/main/java/org/eclipse/aether/artifact/ArtifactProperties.java#L58
> >
> > So, ArtifactProperties could be extended with "constitutesModulePath",
> > "agent" and so on... To make this really extensible.
> >
> > In maven3 the ArtifactHandler this makes it impossible. There is still
> hope
> > in Maven 4
> >
> > Thanks
> > T
> >
> >
> > On Sun, Oct 29, 2023 at 12:32 AM Tamás Cservenák <ta...@cservenak.net>
> > wrote:
> >
> >> This would also mean, that if you have a dependency that is already JPMS
> >> modularized (is java9+ and has module-info), then:
> >>
> >> a) if you declare it as type="jar" it means you want to put it on
> >> classpath (use it as "plain old jar")
> >> b) if you declare it as type="module" it means you want it on modulepath
> >> etc
> >>
> >> On Sun, Oct 29, 2023 at 12:30 AM Tamás Cservenák <ta...@cservenak.net>
> >> wrote:
> >>
> >>> Of course, the logic HOW and WHAT to make with these would be needed to
> >>> be added to javadoc, compiler and all the plugins that need to
> distinguish.
> >>> But this would stop any need for any heuristic, guesswork, smart-ness,
> >>> etc...
> >>>
> >>> OTOH, if we introduce new packaging lifecycle "module" (so a project
> that
> >>> builds module would do project/packaging=module), it could nicely
> enforce
> >>> things like:
> >>> - prevent non allowed packages
> >>> - enforce presence of module-info.class (maybe some light verification)
> >>> - ensure project is Java9+ etc
> >>>
> >>> Most of this was somewhat done in Takari Lifecycle (also with custom
> >>> packaging like "takari-jar" was).
> >>>
> >>>
> >>> T
> >>>
> >>> On Sun, Oct 29, 2023 at 12:26 AM Tamás Cservenák <ta...@cservenak.net>
> >>> wrote:
> >>>
> >>>> So, basically this is what am proposing:
> >>>> https://gist.github.com/cstamas/76f262538b5a11f6ee23d6d8c86f10ec
> >>>>
> >>>> Basically, Maven core (and hence plugins) could distinguish among
> >>>> different "types" of dependencies (while would all still be plain
> JARs).
> >>>> So "jar" would be put on classpath, "module" on module path, "agent"
> >>>> would got special treatment and so on.
> >>>>
> >>>> Point is to _differentiate_.
> >>>>
> >>>> T
> >>>>
> >>>> On Sun, Oct 29, 2023 at 12:21 AM Tamás Cservenák <ta...@cservenak.net
> >
> >>>> wrote:
> >>>>
> >>>>> Unsure from where you get that, but is wrong conclusion.
> >>>>>
> >>>>> You can have dep1:jar, dep2:module, dep3:agent and all 3 MAY
> >>>>> (ArtifactHandler dependent, assuming "jar", "module" and "agent"
> artifact
> >>>>> handlers all return extension=jar) refer to the same JAR file in
> your local
> >>>>> repository.
> >>>>>
> >>>>> Type merely adds "semantics" WHAT is it about, HOW to make use of it.
> >>>>> Please see
> >>>>>
> https://maven.apache.org/repositories/artifacts.html#but-where-do-i-set-artifact-extension
> >>>>>
> >>>>> Thanks
> >>>>> T
> >>>>>
> >>>>> On Sun, Oct 29, 2023 at 12:17 AM Martin Desruisseaux <
> >>>>> martin.desruisse...@geomatys.com> wrote:
> >>>>>
> >>>>>> Le 2023-10-28 à 22 h 54, Tamás Cservenák a écrit :
> >>>>>>
> >>>>>>> I still see these just as new dependency types: "module", "agent",
> >>>>>>> "doclet", and so on.
> >>>>>>>
> >>>>>> Does "dependency type" means the <type> element inside <dependency>?
> >>>>>> If
> >>>>>> yes, then specifying a different type causes Maven to download a
> >>>>>> different JAR, without changing the kind of path (class path versus
> >>>>>> module path) where the JAR is put. The proposed <usage> element (or
> >>>>>> whatever equivalent alternatives) has the opposite semantic: it does
> >>>>>> not
> >>>>>> change the JAR to download, but put it on a different kind of path.
> >>>>>>
> >>>>>>       Martin
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> 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