Separate artifacts used at build time from those used at runtime #374

Closed
matthewadams opened this Issue Mar 26, 2013 · 1 comment

Comments

Projects
None yet
2 participants
@matthewadams
Contributor

matthewadams commented Mar 26, 2013

IMHO, it would be clearer from a user's perspective if all querydsl modules were consistent in their composition. Each persistence technology-specific module (querydsl-jpa, querydsl-mongodb, etc) should have separate build-time versus runtime artifacts, and the runtime artifacts should depend on the build-time ones with a scope of provided.

As of the latest release, querydsl-mongodb includes the MorphiaAnnotationProcessor within the runtime artifact, which is unused at runtime. Further, other technologies' annotation processors are found not in their runtime artifacts (which would also be unnecessary), but in querydsl-apt itself.

I would consider it cleaner and more consistent to remove all concrete annotation processors from the querydsl-apt artifact and place them in their own, technology-specific artifacts used only at build-time. This would serve to decouple the artifact with the abstract annotation processor from its subclasses.

Since the proposed solution above may be overkill, what with some artifacts containing only a single class, another solution that would be understandable is to put all annotation processors in the querydsl-apt artifact, which may consist only of moving querydsl-mongodb's MorphiaAnnotationProcessor into querydsl-apt, but there may be others.

In any case, making it consistent would be beneficial.

Note: This issue is related to #373.

@timowest

This comment has been minimized.

Show comment
Hide comment
@timowest

timowest Mar 27, 2013

Member

Released in 3.1.0

Member

timowest commented Mar 27, 2013

Released in 3.1.0

@timowest timowest closed this Mar 27, 2013

@timowest timowest added this to the 3.1.0 milestone Apr 14, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment