the convention for an artifact containing deprectated classes is to
give it the artifactId "foo-deprecated" or "foo-legacy"

Please strongly consider following that convention rather than going
with "foo.dep"

On 2 June 2012 01:29, Rolf Lear <j...@tuis.net> wrote:
> Hi again everyone.
>
> I have taken some time and installed a nexus locally, and I have been
> playing with different alternatives for how to solve my problem....
>
> To recap, I have JDOM versions 1.x and 2.x both currently deployed in the
> artifact 'jdom' even though these versions internally have different
> packages (org.jdom.* and org.jdom2.* ). The problem is that it is necessary
> in some conditions to have both version 1.x and 2.x in a maven project
> (typically because the 1.x version is used by some third-party dependency).
>
> I have been trying to find the 'best' way to 'recover' the mess in the JDOM
> artifact so that it is possible to have both 1.x as well as 2.x, but to do
> it in such a way that it has the least impact on current users, and for
> those users who *need* both versions, it can be done as simply as possible.
>
> In my experimentation I think I have found that the *easiest* and also the
> *neatest* solution is to duplicate the latest JDOM 1.x artifact with a
> different artifact-id. In my local nexus I have duplicated the JDOM 1.1.3
> artifact as jdom.dep 1.1.3.
>
> The way I see this working is that for the 'simple' user, they do not have
> the complicated requirement to have both 1.x and 2.x. In their case they can
> just continue doing what they do.... and when they are ready they can
> upgrade their code to use JDOM 2.x, changing their dependency from jdom 1.x
> to jdom 2.x when they do.
>
> For the complicated user, they will be needing both versions. Right now they
> can't run their code because they can't have both 1.x and 2.x in their
> compile. In the typical case there is a third-party dependency which in turn
> depends on jdom 1.x. Since 'our' project depends on jdom 2.x and the 3rd
> party depends on 1.x, maven will automatically just pull the 'newer' jdom
> 2.x version. This means that the 3rd-party code will be failing because it
> is missing classes.
>
> In this case, we can simply add the 'jdom.dep' artifact to our project,
> specifying the 1.x version.
>
> I have 'worked through' the various scenarios, and I think it can be
> expressed as follows:
>
> Say I have my project. It has the simple dependency:
>
>
>    <dependency>
>      <groupId>org.jdom</groupId>
>      <artifactId>jdom</artifactId>
>      <version>2.0.1</version>
>      <scope>compile</scope>
>    </dependency>
>
> Now I want to include the additional dependency (this is just some
> 'arbitrary' dependency which has an internal dependency to jdom 1.1):
>
>    <dependency>
>      <groupId>net.sourceforge.htmlcleaner</groupId>
>      <artifactId>htmlcleaner</artifactId>
>      <version>2.2</version>
>    </dependency>
>
> Unfortunately this htmlcleaner code will not work because I am missing the
> org.jdom.* classes because maven has only used the jdom 2.0.1 version which
> only has the org.jdom2.* classes.
>
> The solution is, in my project, to also include the 'duplicate' 1.x
> dependency:
>
>    <dependency>
>      <groupId>org.jdom</groupId>
>      <artifactId>jdom.dep</artifactId>
>      <version>1.1.3</version>
>    </dependency>
>
>
> The bottom line is that only those people who require both versions will be
> affected, and the solution only requires adding a new dependency to the
> project, and there is no need to do 'exclusions' or other 'shady' logic....
>
> Further, there is no need for the 'normal' JDOM user (they only require the
> one version of JDOM) to worry about anything because things just stay the
> same.... there is nothing to change.
>
> I would greatly appreciate it if this 'plan' could be inspected and
> criticized/poked/verified/etc.
>
> Thanks in advance
>
> Rolf
>
>
>
>
> On 29/05/2012 11:38 AM, Rolf Lear wrote:
>>
>>
>> On Tue, 29 May 2012 16:22:27 +0100, Stephen Connolly
>> <stephen.alan.conno...@gmail.com>  wrote:
>>>
>>> On 29 May 2012 15:26, Rolf Lear<j...@tuis.net>  wrote:
>>>>
>>>>
>>>>
>>>> So, being inexperienced, my intention is to find some solution that:
>>>>
>>>> 1. makes it possible (even if playing exclusion games is needed) to use
>>>> both JDOM 1.x and 2.x in a maven project (currently it is not).
>>>
>>>
>>> Well actually it is possible to work around the issue if you are
>>> prepared to introduce a wrapper project...
>>>
>>> something like this:
>>
>>
>>
>> Hmmm... this has gone over my head.... I think I am going to have to spend
>> some time getting to grips with some of the more details in maven...
>>
>> Perhaps I should take a few days and set up my own repo, and try these
>> things out...
>>
>> For what it's worth, I am not sure the maven-shade-plugin is
>> appropriate.... is it? I am not sure how that usage of it helps... I
>> simply
>> don't know enough.
>>
>> Bottom line is that I don't know enough yet... must learn more.
>>
>> Thanks all, I'll figure some more things out and come back with 'more of a
>> clue'.
>>
>> Rolf
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>

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

Reply via email to