On Thu, Apr 21, 2011 at 12:18 PM, Barrie Treloar <baerr...@gmail.com> wrote:
> On Thu, Apr 21, 2011 at 6:33 AM, Jörg Schaible <joerg.schai...@gmx.de> wrote:
>> Jochen Wiedmann wrote:
>>
>>> On Wed, Apr 20, 2011 at 11:28 AM, xanadu72 <surs...@gmail.com> wrote:
>>>
>>>> The client api is a separate artifact. You can reuse it as you want. In
>>>> your repository you will get in the same release folder two artifacts :
>>>
>>> That's completely understood. But as a separate jar file, you should
>>> ensure that it is compilable without any of the other classes. For
>>> example, it might accidentally import something from the rest of the
>>> packages. You don't get that safety by just repackaging a bunch of
>>> class files in another jar file.
>>
>> Even more, the implementation may require dependencies, that are absolutely
>> uninteresting (and unwanted) for the client. This itches me already for the
>> ejb-client artifact. Separate projects can have different dependencies,
>> attached artifacts share them always with the main artifact.
>
> +1 for all the reasons to separate client/api jars.
>

I was just trying to think of another way to articulate why letting
the build system do it is better than relying on the developers.

Using Big O notation:

Effort for build system:
Configuring the project structure: O(1)
Configuring your IDE/dev setup: O(1)
Effort to enforce clean separation: O(0)

Effort for developers:
Configuring the project structure: O(1) - its a once of to have one
module or two modules
Configuring your IDE/dev setup:   O(1)
Effort to enforce clean separation: O(n) - i.e. every release you need
to manually validate that this has not been accidentally broken.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to