Le 2024-07-12 à 15 h 26, Guillaume Nodet a écrit :
I've been working on migrating the build-helper-maven-plugin to the
Maven 4.x API. (…snip…). This plugin in particular is used a lot (to
add generated source/resources and attach artifacts) and there's no
other way to do it. This is essentially a core feature of Maven, and
thus, I think it should be provided by a Maven plugin. (…snip…) It
just feels weird that Maven does not provide the required plugins
directly...
Alternatively, should we open the "multi-sources" discussion? We can
leave apart all the aspects related to JPMS for now. Reminder: it is
about changing the POM model for replacing:
<build>
<sourceDirectory>src/main/java</sourceDirectory>
</build>
By something like below (the addition of "generated/main/java" is what
build-helper-maven-plugin is used for):
<build>
<sources>
<source>src/main/java</source>
<source>generated/main/java</source>
<sources>
</build>
Additional attributes (release version, module name) may be added later,
but I would like to avoid this debate for now. But if we add a "type"
attribute now, the above proposal can actually replace all the following
(from the current POM model):
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
</build>
By a more uniform pattern like below. Keep in mind that the core of this
proposal is that all <source> elements are repeatable, not only the
<resource> or <testResource> ones:
<sources>
<source type="main">src/main/java</source>
<source type="script">src/main/scripts</source>
<source type="test">src/test/java</source>
<source type="resource">src/main/resources</source>
<source type="test-resource">src/test/resources</source>
<sources>
Martin