On Mon, Mar 25, 2019 at 7:31 AM Sanne Grinovero <
sa...@hibernate.org> wrote:
>
> On Sun, 24 Mar 2019 at 19:09, David Lloyd <
david...@redhat.com> wrote:
> >
> > The current runner JAR generation would probably be built in, but to
> > produce any other artifact type you'd just add the appropriate
> > dependency, e.g. `quarkus-native-image` or `quarkus-uberjar`.
>
> I do like your idea in principle, but in terms of usability I'm not
> convinced that I want to need adding more dependencies to get basic
> stuff working. This really should be automated.
It depends on what you mean by "basic". We already require the user
to add dependencies for things like HTTP, which one could argue is
basic (but I wouldn't, because sometimes you don't want it). Just as
you sometimes don't want/care about native image, or uberjar, or
docker.
> You persuaded me before that adding some dependencies automatically
> based on configuration parsing was a bad idea; would you consider
> adding "this kind" of extensions to be a special case enough to allow
> build tools to automatically pull-in additional extensions based on
> the build target?
No, I still think that the dependencies should select the features you
have enabled; that's a good clean system that has served well so far.
You add dependencies based on the features you want, and then you
configure based on what default behaviors you want to override.
> Alternatively, maybe consider having some of such extensions available
> by default - assuming we can all agree on which ones to bless in such
> way, and which ones need explicit opt-in.
The only reason I suggested having the "plain" JAR always available is
that it seems like you should have *something* available. But I could
(very) easily be convinced that we should require the user to provide
a dependency for JAR output as well e.g. `quarkus-jar`, and simply
print an error if the Maven/Gradle plugin is run with no output types
given.
--
- DML