Configurable Dependencies for Maven Plugins?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Configurable Dependencies for Maven Plugins?

Dirk Mahler
Hi all,

is there a way to provide users of a plugin a way of easily switching
dependencies of it?

Background: I'm developing a Maven plugin (jQAssistant) that comes with
a dependency to Neo4j (graph database). Currently I'm using Neo4j 2.3.x
which has been compiled against Java 7 but I would like to offer users
of the Maven plugin an easy option to use the newer Neo4j 3.x releases
which offer some new features but require Java 8.

I know that it's possible to overwrite an existing dependency for a
plugin, e.g.

<plugin>
   <groupId>com.buschmais.jqassistant</groupId>
   <artifactId>jqassistant-maven-plugin</artifactId>
   <version>1.3.0</version>
   <dependencies>
     <dependency>
       <groupId>org.neo4j</groupId>
       <artifactId>neo4j</artifactId>
       <version>3.1.3</version> <!-- instead of the default 2.3.10 -->
     </dependency>
   </dependencies>
</plugin>

The problem is that in my case the old version comes with another set of
dependencies than the new one:

old:

<dependencies>
      <dependency>
          <groupId>org.neo4j</groupId>
          <artifactId>neo4j</artifactId>
          <version>2.3.10</version>
      </dependency>
      <dependency>
          <groupId>org.neo4j.app</groupId>
          <artifactId>neo4j-server</artifactId>
          <version>2.3.10</version>
      </dependency>
      <dependency>
          <groupId>org.neo4j.app</groupId>
          <artifactId>neo4j-server</artifactId>
          <classifier>static-web</classifier>
          <version>2.3.10</version>
      </dependency>
</dependencies>

new:

<dependencies>
      <dependency>
          <groupId>org.neo4j</groupId>
          <artifactId>neo4j</artifactId>
          <version>3.1.3</version>
      </dependency>
      <dependency>
          <groupId>org.neo4j.app</groupId>
          <artifactId>neo4j-server</artifactId>
          <version>3.1.3</version>
      </dependency>
</dependencies>

Is there a good way to deal with it such that a user of the
jqassistant-maven-plugin can easily switch between both variants?

Cheers,

Dirk

Senior Consultant IT
buschmais GbR

-----------------------------------------------------------------
Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
Telefon  +49 (0) 351 3209 23-0
Fax      +49 (0) 351 3209 23-29
Mobil    +49 (0) 177 3137411
E-Mail   [hidden email]
Internet http://www.buschmais.de
-----------------------------------------------------------------

Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
gestattet.

This e-mail may contain confidential or privileged information. If
you are not the intended recipient we kindly request you to delete
this e-mail immediately. Any unauthorized copying, disclosure or
distribution of the material in this e-mail is strictly forbidden.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Configurable Dependencies for Maven Plugins?

bindul
Dirk,

On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler <[hidden email]> wrote:

> Hi all,
>
> is there a way to provide users of a plugin a way of easily switching
> dependencies of it?
>
> Background: I'm developing a Maven plugin (jQAssistant) that comes with a
> dependency to Neo4j (graph database). Currently I'm using Neo4j 2.3.x which
> has been compiled against Java 7 but I would like to offer users of the
> Maven plugin an easy option to use the newer Neo4j 3.x releases which offer
> some new features but require Java 8.
>
> I know that it's possible to overwrite an existing dependency for a plugin,
> e.g.
>
> <plugin>
>   <groupId>com.buschmais.jqassistant</groupId>
>   <artifactId>jqassistant-maven-plugin</artifactId>
>   <version>1.3.0</version>
>   <dependencies>
>     <dependency>
>       <groupId>org.neo4j</groupId>
>       <artifactId>neo4j</artifactId>
>       <version>3.1.3</version> <!-- instead of the default 2.3.10 -->
>     </dependency>
>   </dependencies>
> </plugin>

As long as your code can handle the different versions of the
dependency, I think this is absolutely doable. In fact the Maven
Checkstyle Plugin uses the same approach to allow upgrading checkstyle
versions without upgrading the plugin version [1].

>
> The problem is that in my case the old version comes with another set of
> dependencies than the new one:

I do not think this will be a problem.

>
> old:
>
> <dependencies>
>      <dependency>
>          <groupId>org.neo4j</groupId>
>          <artifactId>neo4j</artifactId>
>          <version>2.3.10</version>
>      </dependency>
>      <dependency>
>          <groupId>org.neo4j.app</groupId>
>          <artifactId>neo4j-server</artifactId>
>          <version>2.3.10</version>
>      </dependency>
>      <dependency>
>          <groupId>org.neo4j.app</groupId>
>          <artifactId>neo4j-server</artifactId>
>          <classifier>static-web</classifier>
>          <version>2.3.10</version>
>      </dependency>
> </dependencies>
>
> new:
>
> <dependencies>
>      <dependency>
>          <groupId>org.neo4j</groupId>
>          <artifactId>neo4j</artifactId>
>          <version>3.1.3</version>
>      </dependency>
>      <dependency>
>          <groupId>org.neo4j.app</groupId>
>          <artifactId>neo4j-server</artifactId>
>          <version>3.1.3</version>
>      </dependency>
> </dependencies>
>
> Is there a good way to deal with it such that a user of the
> jqassistant-maven-plugin can easily switch between both variants?
>
> Cheers,
>
> Dirk
>
> Senior Consultant IT
> buschmais GbR


- Bindul

[1] http://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html

>
> -----------------------------------------------------------------
> Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
> Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
> Telefon  +49 (0) 351 3209 23-0
> Fax      +49 (0) 351 3209 23-29
> Mobil    +49 (0) 177 3137411
> E-Mail   [hidden email]
> Internet http://www.buschmais.de
> -----------------------------------------------------------------
>
> Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
> Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
> bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
> Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
> gestattet.
>
> This e-mail may contain confidential or privileged information. If
> you are not the intended recipient we kindly request you to delete
> this e-mail immediately. Any unauthorized copying, disclosure or
> distribution of the material in this e-mail is strictly forbidden.
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re[2]: Configurable Dependencies for Maven Plugins?

Dirk Mahler
Hi Bindul,

sadly it's not that easy (or it's so easy that I don't see the
solution...). As a default and for compatibility reasons I'd like to
declare the dependencies of the Neo4j 2.x artifacts for my Maven plugin:

- org.neo4j:neoj
- org.neo4j.app:neo4j-server
- org.neo4j.app:neo4j-server:static *

For a user it would be possible to override only the first two
dependencies with the Neo4j 3.x versions: the third artifact (*) does
not exist for Neo4j 3.x (the Neo guys merged the static content into
neo4j-server.jar, i.e. into the main artifact without classifier). In
this case I would need to exclude "org.neo4j.app:neo4j-server:static"
which is still there as a 2.x artifact and pulls in some other deps that
are conflicting with the 3.x stuff. Any idea?

Cheers,

Dirk

------ Originalnachricht ------
Von: "Bindul Bhowmik" <[hidden email]>
An: "Maven Developers List" <[hidden email]>; "Dirk Mahler"
<[hidden email]>
Gesendet: 12.04.2017 20:28:16
Betreff: Re: Configurable Dependencies for Maven Plugins?

>Dirk,
>
>On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler
><[hidden email]> wrote:
>>  Hi all,
>>
>>  is there a way to provide users of a plugin a way of easily switching
>>  dependencies of it?
>>
>>  Background: I'm developing a Maven plugin (jQAssistant) that comes
>>with a
>>  dependency to Neo4j (graph database). Currently I'm using Neo4j 2.3.x
>>which
>>  has been compiled against Java 7 but I would like to offer users of
>>the
>>  Maven plugin an easy option to use the newer Neo4j 3.x releases which
>>offer
>>  some new features but require Java 8.
>>
>>  I know that it's possible to overwrite an existing dependency for a
>>plugin,
>>  e.g.
>>
>>  <plugin>
>>    <groupId>com.buschmais.jqassistant</groupId>
>>    <artifactId>jqassistant-maven-plugin</artifactId>
>>    <version>1.3.0</version>
>>    <dependencies>
>>      <dependency>
>>        <groupId>org.neo4j</groupId>
>>        <artifactId>neo4j</artifactId>
>>        <version>3.1.3</version> <!-- instead of the default 2.3.10 -->
>>      </dependency>
>>    </dependencies>
>>  </plugin>
>
>As long as your code can handle the different versions of the
>dependency, I think this is absolutely doable. In fact the Maven
>Checkstyle Plugin uses the same approach to allow upgrading checkstyle
>versions without upgrading the plugin version [1].
>
>>
>>  The problem is that in my case the old version comes with another set
>>of
>>  dependencies than the new one:
>
>I do not think this will be a problem.
>
>>
>>  old:
>>
>>  <dependencies>
>>       <dependency>
>>           <groupId>org.neo4j</groupId>
>>           <artifactId>neo4j</artifactId>
>>           <version>2.3.10</version>
>>       </dependency>
>>       <dependency>
>>           <groupId>org.neo4j.app</groupId>
>>           <artifactId>neo4j-server</artifactId>
>>           <version>2.3.10</version>
>>       </dependency>
>>       <dependency>
>>           <groupId>org.neo4j.app</groupId>
>>           <artifactId>neo4j-server</artifactId>
>>           <classifier>static-web</classifier>
>>           <version>2.3.10</version>
>>       </dependency>
>>  </dependencies>
>>
>>  new:
>>
>>  <dependencies>
>>       <dependency>
>>           <groupId>org.neo4j</groupId>
>>           <artifactId>neo4j</artifactId>
>>           <version>3.1.3</version>
>>       </dependency>
>>       <dependency>
>>           <groupId>org.neo4j.app</groupId>
>>           <artifactId>neo4j-server</artifactId>
>>           <version>3.1.3</version>
>>       </dependency>
>>  </dependencies>
>>
>>  Is there a good way to deal with it such that a user of the
>>  jqassistant-maven-plugin can easily switch between both variants?
>>
>>  Cheers,
>>
>>  Dirk
>>
>>  Senior Consultant IT
>>  buschmais GbR
>
>
>- Bindul
>
>[1]
>http://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html
>
>>
>>  -----------------------------------------------------------------
>>  Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
>>  Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
>>  Telefon  +49 (0) 351 3209 23-0
>>  Fax      +49 (0) 351 3209 23-29
>>  Mobil    +49 (0) 177 3137411
>>  E-Mail   [hidden email]
>>  Internet http://www.buschmais.de
>>  -----------------------------------------------------------------
>>
>>  Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
>>  Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
>>  bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
>>  Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
>>  gestattet.
>>
>>  This e-mail may contain confidential or privileged information. If
>>  you are not the intended recipient we kindly request you to delete
>>  this e-mail immediately. Any unauthorized copying, disclosure or
>>  distribution of the material in this e-mail is strictly forbidden.
>>
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [hidden email]
>For additional commands, e-mail: [hidden email]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Re[2]: Configurable Dependencies for Maven Plugins?

stephenconnolly
On Wed 12 Apr 2017 at 20:21, Dirk Mahler <[hidden email]> wrote:

> Hi Bindul,
>
> sadly it's not that easy (or it's so easy that I don't see the
> solution...). As a default and for compatibility reasons I'd like to
> declare the dependencies of the Neo4j 2.x artifacts for my Maven plugin:
>
> - org.neo4j:neoj
> - org.neo4j.app:neo4j-server
> - org.neo4j.app:neo4j-server:static *


Do you declare a direct dependency on static or a transitive one?

If direct, then yes you are Sorry-out-of-Luck

If transitive, then the <dependency> in the user's <plugin> will override
the neo4j-server and you are sorted as the newer version will not pull in
the static stuff

>
>
> For a user it would be possible to override only the first two
> dependencies with the Neo4j 3.x versions: the third artifact (*) does
> not exist for Neo4j 3.x (the Neo guys merged the static content into
> neo4j-server.jar, i.e. into the main artifact without classifier). In
> this case I would need to exclude "org.neo4j.app:neo4j-server:static"
> which is still there as a 2.x artifact and pulls in some other deps that
> are conflicting with the 3.x stuff. Any idea?
>
> Cheers,
>
> Dirk
>
> ------ Originalnachricht ------
> Von: "Bindul Bhowmik" <[hidden email]>
> An: "Maven Developers List" <[hidden email]>; "Dirk Mahler"
> <[hidden email]>
> Gesendet: 12.04.2017 20:28:16
> Betreff: Re: Configurable Dependencies for Maven Plugins?
>
> >Dirk,
> >
> >On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler
> ><[hidden email]> wrote:
> >>  Hi all,
> >>
> >>  is there a way to provide users of a plugin a way of easily switching
> >>  dependencies of it?
> >>
> >>  Background: I'm developing a Maven plugin (jQAssistant) that comes
> >>with a
> >>  dependency to Neo4j (graph database). Currently I'm using Neo4j 2.3.x
> >>which
> >>  has been compiled against Java 7 but I would like to offer users of
> >>the
> >>  Maven plugin an easy option to use the newer Neo4j 3.x releases which
> >>offer
> >>  some new features but require Java 8.
> >>
> >>  I know that it's possible to overwrite an existing dependency for a
> >>plugin,
> >>  e.g.
> >>
> >>  <plugin>
> >>    <groupId>com.buschmais.jqassistant</groupId>
> >>    <artifactId>jqassistant-maven-plugin</artifactId>
> >>    <version>1.3.0</version>
> >>    <dependencies>
> >>      <dependency>
> >>        <groupId>org.neo4j</groupId>
> >>        <artifactId>neo4j</artifactId>
> >>        <version>3.1.3</version> <!-- instead of the default 2.3.10 -->
> >>      </dependency>
> >>    </dependencies>
> >>  </plugin>
> >
> >As long as your code can handle the different versions of the
> >dependency, I think this is absolutely doable. In fact the Maven
> >Checkstyle Plugin uses the same approach to allow upgrading checkstyle
> >versions without upgrading the plugin version [1].
> >
> >>
> >>  The problem is that in my case the old version comes with another set
> >>of
> >>  dependencies than the new one:
> >
> >I do not think this will be a problem.
> >
> >>
> >>  old:
> >>
> >>  <dependencies>
> >>       <dependency>
> >>           <groupId>org.neo4j</groupId>
> >>           <artifactId>neo4j</artifactId>
> >>           <version>2.3.10</version>
> >>       </dependency>
> >>       <dependency>
> >>           <groupId>org.neo4j.app</groupId>
> >>           <artifactId>neo4j-server</artifactId>
> >>           <version>2.3.10</version>
> >>       </dependency>
> >>       <dependency>
> >>           <groupId>org.neo4j.app</groupId>
> >>           <artifactId>neo4j-server</artifactId>
> >>           <classifier>static-web</classifier>
> >>           <version>2.3.10</version>
> >>       </dependency>
> >>  </dependencies>
> >>
> >>  new:
> >>
> >>  <dependencies>
> >>       <dependency>
> >>           <groupId>org.neo4j</groupId>
> >>           <artifactId>neo4j</artifactId>
> >>           <version>3.1.3</version>
> >>       </dependency>
> >>       <dependency>
> >>           <groupId>org.neo4j.app</groupId>
> >>           <artifactId>neo4j-server</artifactId>
> >>           <version>3.1.3</version>
> >>       </dependency>
> >>  </dependencies>
> >>
> >>  Is there a good way to deal with it such that a user of the
> >>  jqassistant-maven-plugin can easily switch between both variants?
> >>
> >>  Cheers,
> >>
> >>  Dirk
> >>
> >>  Senior Consultant IT
> >>  buschmais GbR
> >
> >
> >- Bindul
> >
> >[1]
> >
> http://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html
> >
> >>
> >>  -----------------------------------------------------------------
> >>  Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
> >>  Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
> >>  Telefon  +49 (0) 351 3209 23-0
> >>  Fax      +49 (0) 351 3209 23-29
> >>  Mobil    +49 (0) 177 3137411
> >>  E-Mail   [hidden email]
> >>  Internet http://www.buschmais.de
> >>  -----------------------------------------------------------------
> >>
> >>  Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
> >>  Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
> >>  bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
> >>  Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
> >>  gestattet.
> >>
> >>  This e-mail may contain confidential or privileged information. If
> >>  you are not the intended recipient we kindly request you to delete
> >>  this e-mail immediately. Any unauthorized copying, disclosure or
> >>  distribution of the material in this e-mail is strictly forbidden.
> >>
> >>
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [hidden email]
> >For additional commands, e-mail: [hidden email]
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
> --
Sent from my phone
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Re[2]: Configurable Dependencies for Maven Plugins?

Dirk Mahler
Hi Stephen,

I need to declare the dependency to static directly, so I'm on the Sorry-Out-Of-Luck path...

But your suggestion makes me  thinking of providing an artifact myself (just pom packaging) in two different versions that pulls in the different dependencies and which can be overridden by the user. This should be possible then, right?

In that case I have to think about how to organize my own builds because I assume that within one reactor I won't be able to build two modules with same groupId and artifactId but different versions.

Cheers,

Dirk

PS: Thanks for the 3.5.0 release, works like a charm for me!

Am Mittwoch 12. April 2017 schrieb Stephen Connolly:

> On Wed 12 Apr 2017 at 20:21, Dirk Mahler <[hidden email]> wrote:
>
> > Hi Bindul,
> >
> > sadly it's not that easy (or it's so easy that I don't see the
> > solution...). As a default and for compatibility reasons I'd like to
> > declare the dependencies of the Neo4j 2.x artifacts for my Maven plugin:
> >
> > - org.neo4j:neoj
> > - org.neo4j.app:neo4j-server
> > - org.neo4j.app:neo4j-server:static *
>
>
> Do you declare a direct dependency on static or a transitive one?
>
> If direct, then yes you are Sorry-out-of-Luck
>
> If transitive, then the <dependency> in the user's <plugin> will override
> the neo4j-server and you are sorted as the newer version will not pull in
> the static stuff
>
> >
> >
> > For a user it would be possible to override only the first two
> > dependencies with the Neo4j 3.x versions: the third artifact (*) does
> > not exist for Neo4j 3.x (the Neo guys merged the static content into
> > neo4j-server.jar, i.e. into the main artifact without classifier). In
> > this case I would need to exclude "org.neo4j.app:neo4j-server:static"
> > which is still there as a 2.x artifact and pulls in some other deps that
> > are conflicting with the 3.x stuff. Any idea?
> >
> > Cheers,
> >
> > Dirk
> >
> > ------ Originalnachricht ------
> > Von: "Bindul Bhowmik" <[hidden email]>
> > An: "Maven Developers List" <[hidden email]>; "Dirk Mahler"
> > <[hidden email]>
> > Gesendet: 12.04.2017 20:28:16
> > Betreff: Re: Configurable Dependencies for Maven Plugins?
> >
> > >Dirk,
> > >
> > >On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler
> > ><[hidden email]> wrote:
> > >>  Hi all,
> > >>
> > >>  is there a way to provide users of a plugin a way of easily switching
> > >>  dependencies of it?
> > >>
> > >>  Background: I'm developing a Maven plugin (jQAssistant) that comes
> > >>with a
> > >>  dependency to Neo4j (graph database). Currently I'm using Neo4j 2.3.x
> > >>which
> > >>  has been compiled against Java 7 but I would like to offer users of
> > >>the
> > >>  Maven plugin an easy option to use the newer Neo4j 3.x releases which
> > >>offer
> > >>  some new features but require Java 8.
> > >>
> > >>  I know that it's possible to overwrite an existing dependency for a
> > >>plugin,
> > >>  e.g.
> > >>
> > >>  <plugin>
> > >>    <groupId>com.buschmais.jqassistant</groupId>
> > >>    <artifactId>jqassistant-maven-plugin</artifactId>
> > >>    <version>1.3.0</version>
> > >>    <dependencies>
> > >>      <dependency>
> > >>        <groupId>org.neo4j</groupId>
> > >>        <artifactId>neo4j</artifactId>
> > >>        <version>3.1.3</version> <!-- instead of the default 2.3.10 -->
> > >>      </dependency>
> > >>    </dependencies>
> > >>  </plugin>
> > >
> > >As long as your code can handle the different versions of the
> > >dependency, I think this is absolutely doable. In fact the Maven
> > >Checkstyle Plugin uses the same approach to allow upgrading checkstyle
> > >versions without upgrading the plugin version [1].
> > >
> > >>
> > >>  The problem is that in my case the old version comes with another set
> > >>of
> > >>  dependencies than the new one:
> > >
> > >I do not think this will be a problem.
> > >
> > >>
> > >>  old:
> > >>
> > >>  <dependencies>
> > >>       <dependency>
> > >>           <groupId>org.neo4j</groupId>
> > >>           <artifactId>neo4j</artifactId>
> > >>           <version>2.3.10</version>
> > >>       </dependency>
> > >>       <dependency>
> > >>           <groupId>org.neo4j.app</groupId>
> > >>           <artifactId>neo4j-server</artifactId>
> > >>           <version>2.3.10</version>
> > >>       </dependency>
> > >>       <dependency>
> > >>           <groupId>org.neo4j.app</groupId>
> > >>           <artifactId>neo4j-server</artifactId>
> > >>           <classifier>static-web</classifier>
> > >>           <version>2.3.10</version>
> > >>       </dependency>
> > >>  </dependencies>
> > >>
> > >>  new:
> > >>
> > >>  <dependencies>
> > >>       <dependency>
> > >>           <groupId>org.neo4j</groupId>
> > >>           <artifactId>neo4j</artifactId>
> > >>           <version>3.1.3</version>
> > >>       </dependency>
> > >>       <dependency>
> > >>           <groupId>org.neo4j.app</groupId>
> > >>           <artifactId>neo4j-server</artifactId>
> > >>           <version>3.1.3</version>
> > >>       </dependency>
> > >>  </dependencies>
> > >>
> > >>  Is there a good way to deal with it such that a user of the
> > >>  jqassistant-maven-plugin can easily switch between both variants?
> > >>
> > >>  Cheers,
> > >>
> > >>  Dirk
> > >>
> > >>  Senior Consultant IT
> > >>  buschmais GbR
> > >
> > >
> > >- Bindul
> > >
> > >[1]
> > >
> > http://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html
> > >
> > >>
> > >>  -----------------------------------------------------------------
> > >>  Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
> > >>  Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
> > >>  Telefon  +49 (0) 351 3209 23-0
> > >>  Fax      +49 (0) 351 3209 23-29
> > >>  Mobil    +49 (0) 177 3137411
> > >>  E-Mail   [hidden email]
> > >>  Internet http://www.buschmais.de
> > >>  -----------------------------------------------------------------
> > >>
> > >>  Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
> > >>  Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
> > >>  bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
> > >>  Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
> > >>  gestattet.
> > >>
> > >>  This e-mail may contain confidential or privileged information. If
> > >>  you are not the intended recipient we kindly request you to delete
> > >>  this e-mail immediately. Any unauthorized copying, disclosure or
> > >>  distribution of the material in this e-mail is strictly forbidden.
> > >>
> > >>
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: [hidden email]
> > >For additional commands, e-mail: [hidden email]
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> > --
> Sent from my phone
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Re[2]: Configurable Dependencies for Maven Plugins?

Lennart Jörelid
Hello Dirk,

There are always options for doing this, although they may not be
considered elegant.

To solve your problem in a practical way I would recommend defining two
profiles within your pom (say "neo4jV2" and "neo4jV3").
One of the properties should be included ("Conditional profiles") using the
value (or existence/non-existence) of a command-line property (typically
something like -Dneo4jVersion=2).

The neo4jv2 profile includes the three neo4j2 dependencies, and the neo4jv3
profile includes the two neo4j3 dependencies.
Include the neo4jV3 profile unless the property "neo4jVersion" is set on
the command line.

Done.


2017-04-12 21:50 GMT+02:00 Dirk Mahler <[hidden email]>:

> Hi Stephen,
>
> I need to declare the dependency to static directly, so I'm on the
> Sorry-Out-Of-Luck path...
>
> But your suggestion makes me  thinking of providing an artifact myself
> (just pom packaging) in two different versions that pulls in the different
> dependencies and which can be overridden by the user. This should be
> possible then, right?
>
> In that case I have to think about how to organize my own builds because I
> assume that within one reactor I won't be able to build two modules with
> same groupId and artifactId but different versions.
>
> Cheers,
>
> Dirk
>
> PS: Thanks for the 3.5.0 release, works like a charm for me!
>
> Am Mittwoch 12. April 2017 schrieb Stephen Connolly:
> > On Wed 12 Apr 2017 at 20:21, Dirk Mahler <[hidden email]>
> wrote:
> >
> > > Hi Bindul,
> > >
> > > sadly it's not that easy (or it's so easy that I don't see the
> > > solution...). As a default and for compatibility reasons I'd like to
> > > declare the dependencies of the Neo4j 2.x artifacts for my Maven
> plugin:
> > >
> > > - org.neo4j:neoj
> > > - org.neo4j.app:neo4j-server
> > > - org.neo4j.app:neo4j-server:static *
> >
> >
> > Do you declare a direct dependency on static or a transitive one?
> >
> > If direct, then yes you are Sorry-out-of-Luck
> >
> > If transitive, then the <dependency> in the user's <plugin> will override
> > the neo4j-server and you are sorted as the newer version will not pull in
> > the static stuff
> >
> > >
> > >
> > > For a user it would be possible to override only the first two
> > > dependencies with the Neo4j 3.x versions: the third artifact (*) does
> > > not exist for Neo4j 3.x (the Neo guys merged the static content into
> > > neo4j-server.jar, i.e. into the main artifact without classifier). In
> > > this case I would need to exclude "org.neo4j.app:neo4j-server:static"
> > > which is still there as a 2.x artifact and pulls in some other deps
> that
> > > are conflicting with the 3.x stuff. Any idea?
> > >
> > > Cheers,
> > >
> > > Dirk
> > >
> > > ------ Originalnachricht ------
> > > Von: "Bindul Bhowmik" <[hidden email]>
> > > An: "Maven Developers List" <[hidden email]>; "Dirk Mahler"
> > > <[hidden email]>
> > > Gesendet: 12.04.2017 20:28:16
> > > Betreff: Re: Configurable Dependencies for Maven Plugins?
> > >
> > > >Dirk,
> > > >
> > > >On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler
> > > ><[hidden email]> wrote:
> > > >>  Hi all,
> > > >>
> > > >>  is there a way to provide users of a plugin a way of easily
> switching
> > > >>  dependencies of it?
> > > >>
> > > >>  Background: I'm developing a Maven plugin (jQAssistant) that comes
> > > >>with a
> > > >>  dependency to Neo4j (graph database). Currently I'm using Neo4j
> 2.3.x
> > > >>which
> > > >>  has been compiled against Java 7 but I would like to offer users of
> > > >>the
> > > >>  Maven plugin an easy option to use the newer Neo4j 3.x releases
> which
> > > >>offer
> > > >>  some new features but require Java 8.
> > > >>
> > > >>  I know that it's possible to overwrite an existing dependency for a
> > > >>plugin,
> > > >>  e.g.
> > > >>
> > > >>  <plugin>
> > > >>    <groupId>com.buschmais.jqassistant</groupId>
> > > >>    <artifactId>jqassistant-maven-plugin</artifactId>
> > > >>    <version>1.3.0</version>
> > > >>    <dependencies>
> > > >>      <dependency>
> > > >>        <groupId>org.neo4j</groupId>
> > > >>        <artifactId>neo4j</artifactId>
> > > >>        <version>3.1.3</version> <!-- instead of the default 2.3.10
> -->
> > > >>      </dependency>
> > > >>    </dependencies>
> > > >>  </plugin>
> > > >
> > > >As long as your code can handle the different versions of the
> > > >dependency, I think this is absolutely doable. In fact the Maven
> > > >Checkstyle Plugin uses the same approach to allow upgrading checkstyle
> > > >versions without upgrading the plugin version [1].
> > > >
> > > >>
> > > >>  The problem is that in my case the old version comes with another
> set
> > > >>of
> > > >>  dependencies than the new one:
> > > >
> > > >I do not think this will be a problem.
> > > >
> > > >>
> > > >>  old:
> > > >>
> > > >>  <dependencies>
> > > >>       <dependency>
> > > >>           <groupId>org.neo4j</groupId>
> > > >>           <artifactId>neo4j</artifactId>
> > > >>           <version>2.3.10</version>
> > > >>       </dependency>
> > > >>       <dependency>
> > > >>           <groupId>org.neo4j.app</groupId>
> > > >>           <artifactId>neo4j-server</artifactId>
> > > >>           <version>2.3.10</version>
> > > >>       </dependency>
> > > >>       <dependency>
> > > >>           <groupId>org.neo4j.app</groupId>
> > > >>           <artifactId>neo4j-server</artifactId>
> > > >>           <classifier>static-web</classifier>
> > > >>           <version>2.3.10</version>
> > > >>       </dependency>
> > > >>  </dependencies>
> > > >>
> > > >>  new:
> > > >>
> > > >>  <dependencies>
> > > >>       <dependency>
> > > >>           <groupId>org.neo4j</groupId>
> > > >>           <artifactId>neo4j</artifactId>
> > > >>           <version>3.1.3</version>
> > > >>       </dependency>
> > > >>       <dependency>
> > > >>           <groupId>org.neo4j.app</groupId>
> > > >>           <artifactId>neo4j-server</artifactId>
> > > >>           <version>3.1.3</version>
> > > >>       </dependency>
> > > >>  </dependencies>
> > > >>
> > > >>  Is there a good way to deal with it such that a user of the
> > > >>  jqassistant-maven-plugin can easily switch between both variants?
> > > >>
> > > >>  Cheers,
> > > >>
> > > >>  Dirk
> > > >>
> > > >>  Senior Consultant IT
> > > >>  buschmais GbR
> > > >
> > > >
> > > >- Bindul
> > > >
> > > >[1]
> > > >
> > > http://maven.apache.org/plugins/maven-checkstyle-
> plugin/examples/upgrading-checkstyle.html
> > > >
> > > >>
> > > >>  -----------------------------------------------------------------
> > > >>  Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
> > > >>  Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
> > > >>  Telefon  +49 (0) 351 3209 23-0
> > > >>  Fax      +49 (0) 351 3209 23-29
> > > >>  Mobil    +49 (0) 177 3137411
> > > >>  E-Mail   [hidden email]
> > > >>  Internet http://www.buschmais.de
> > > >>  -----------------------------------------------------------------
> > > >>
> > > >>  Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
> > > >>  Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
> > > >>  bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
> > > >>  Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
> > > >>  gestattet.
> > > >>
> > > >>  This e-mail may contain confidential or privileged information. If
> > > >>  you are not the intended recipient we kindly request you to delete
> > > >>  this e-mail immediately. Any unauthorized copying, disclosure or
> > > >>  distribution of the material in this e-mail is strictly forbidden.
> > > >>
> > > >>
> > > >
> > > >---------------------------------------------------------------------
> > > >To unsubscribe, e-mail: [hidden email]
> > > >For additional commands, e-mail: [hidden email]
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [hidden email]
> > > For additional commands, e-mail: [hidden email]
> > >
> > > --
> > Sent from my phone
> >
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>


--

--
+==============================+
| Bästa hälsningar,
| [sw. "Best regards"]
|
| Lennart Jörelid
| EAI Architect & Integrator
|
| jGuru Europe AB
| Mölnlycke - Kista
|
| Email: [hidden email]
| URL:   www.jguru.se
| Phone
| (skype):    jgurueurope
| (intl):     +46 708 507 603
| (domestic): 0708 - 507 603
+==============================+
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Re[2]: Configurable Dependencies for Maven Plugins?

Dirk Mahler
Hi Lennart,

that sounds feasible, will give it a try and come back with the result.

Thanks so far to all of you!

Dirk

Am Mittwoch 12. April 2017 schrieb Lennart Jörelid:

> Hello Dirk,
>
> There are always options for doing this, although they may not be
> considered elegant.
>
> To solve your problem in a practical way I would recommend defining two
> profiles within your pom (say "neo4jV2" and "neo4jV3").
> One of the properties should be included ("Conditional profiles") using the
> value (or existence/non-existence) of a command-line property (typically
> something like -Dneo4jVersion=2).
>
> The neo4jv2 profile includes the three neo4j2 dependencies, and the neo4jv3
> profile includes the two neo4j3 dependencies.
> Include the neo4jV3 profile unless the property "neo4jVersion" is set on
> the command line.
>
> Done.
>
>
> 2017-04-12 21:50 GMT+02:00 Dirk Mahler <[hidden email]>:
>
> > Hi Stephen,
> >
> > I need to declare the dependency to static directly, so I'm on the
> > Sorry-Out-Of-Luck path...
> >
> > But your suggestion makes me  thinking of providing an artifact myself
> > (just pom packaging) in two different versions that pulls in the different
> > dependencies and which can be overridden by the user. This should be
> > possible then, right?
> >
> > In that case I have to think about how to organize my own builds because I
> > assume that within one reactor I won't be able to build two modules with
> > same groupId and artifactId but different versions.
> >
> > Cheers,
> >
> > Dirk
> >
> > PS: Thanks for the 3.5.0 release, works like a charm for me!
> >
> > Am Mittwoch 12. April 2017 schrieb Stephen Connolly:
> > > On Wed 12 Apr 2017 at 20:21, Dirk Mahler <[hidden email]>
> > wrote:
> > >
> > > > Hi Bindul,
> > > >
> > > > sadly it's not that easy (or it's so easy that I don't see the
> > > > solution...). As a default and for compatibility reasons I'd like to
> > > > declare the dependencies of the Neo4j 2.x artifacts for my Maven
> > plugin:
> > > >
> > > > - org.neo4j:neoj
> > > > - org.neo4j.app:neo4j-server
> > > > - org.neo4j.app:neo4j-server:static *
> > >
> > >
> > > Do you declare a direct dependency on static or a transitive one?
> > >
> > > If direct, then yes you are Sorry-out-of-Luck
> > >
> > > If transitive, then the <dependency> in the user's <plugin> will override
> > > the neo4j-server and you are sorted as the newer version will not pull in
> > > the static stuff
> > >
> > > >
> > > >
> > > > For a user it would be possible to override only the first two
> > > > dependencies with the Neo4j 3.x versions: the third artifact (*) does
> > > > not exist for Neo4j 3.x (the Neo guys merged the static content into
> > > > neo4j-server.jar, i.e. into the main artifact without classifier). In
> > > > this case I would need to exclude "org.neo4j.app:neo4j-server:static"
> > > > which is still there as a 2.x artifact and pulls in some other deps
> > that
> > > > are conflicting with the 3.x stuff. Any idea?
> > > >
> > > > Cheers,
> > > >
> > > > Dirk
> > > >
> > > > ------ Originalnachricht ------
> > > > Von: "Bindul Bhowmik" <[hidden email]>
> > > > An: "Maven Developers List" <[hidden email]>; "Dirk Mahler"
> > > > <[hidden email]>
> > > > Gesendet: 12.04.2017 20:28:16
> > > > Betreff: Re: Configurable Dependencies for Maven Plugins?
> > > >
> > > > >Dirk,
> > > > >
> > > > >On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler
> > > > ><[hidden email]> wrote:
> > > > >>  Hi all,
> > > > >>
> > > > >>  is there a way to provide users of a plugin a way of easily
> > switching
> > > > >>  dependencies of it?
> > > > >>
> > > > >>  Background: I'm developing a Maven plugin (jQAssistant) that comes
> > > > >>with a
> > > > >>  dependency to Neo4j (graph database). Currently I'm using Neo4j
> > 2.3.x
> > > > >>which
> > > > >>  has been compiled against Java 7 but I would like to offer users of
> > > > >>the
> > > > >>  Maven plugin an easy option to use the newer Neo4j 3.x releases
> > which
> > > > >>offer
> > > > >>  some new features but require Java 8.
> > > > >>
> > > > >>  I know that it's possible to overwrite an existing dependency for a
> > > > >>plugin,
> > > > >>  e.g.
> > > > >>
> > > > >>  <plugin>
> > > > >>    <groupId>com.buschmais.jqassistant</groupId>
> > > > >>    <artifactId>jqassistant-maven-plugin</artifactId>
> > > > >>    <version>1.3.0</version>
> > > > >>    <dependencies>
> > > > >>      <dependency>
> > > > >>        <groupId>org.neo4j</groupId>
> > > > >>        <artifactId>neo4j</artifactId>
> > > > >>        <version>3.1.3</version> <!-- instead of the default 2.3.10
> > -->
> > > > >>      </dependency>
> > > > >>    </dependencies>
> > > > >>  </plugin>
> > > > >
> > > > >As long as your code can handle the different versions of the
> > > > >dependency, I think this is absolutely doable. In fact the Maven
> > > > >Checkstyle Plugin uses the same approach to allow upgrading checkstyle
> > > > >versions without upgrading the plugin version [1].
> > > > >
> > > > >>
> > > > >>  The problem is that in my case the old version comes with another
> > set
> > > > >>of
> > > > >>  dependencies than the new one:
> > > > >
> > > > >I do not think this will be a problem.
> > > > >
> > > > >>
> > > > >>  old:
> > > > >>
> > > > >>  <dependencies>
> > > > >>       <dependency>
> > > > >>           <groupId>org.neo4j</groupId>
> > > > >>           <artifactId>neo4j</artifactId>
> > > > >>           <version>2.3.10</version>
> > > > >>       </dependency>
> > > > >>       <dependency>
> > > > >>           <groupId>org.neo4j.app</groupId>
> > > > >>           <artifactId>neo4j-server</artifactId>
> > > > >>           <version>2.3.10</version>
> > > > >>       </dependency>
> > > > >>       <dependency>
> > > > >>           <groupId>org.neo4j.app</groupId>
> > > > >>           <artifactId>neo4j-server</artifactId>
> > > > >>           <classifier>static-web</classifier>
> > > > >>           <version>2.3.10</version>
> > > > >>       </dependency>
> > > > >>  </dependencies>
> > > > >>
> > > > >>  new:
> > > > >>
> > > > >>  <dependencies>
> > > > >>       <dependency>
> > > > >>           <groupId>org.neo4j</groupId>
> > > > >>           <artifactId>neo4j</artifactId>
> > > > >>           <version>3.1.3</version>
> > > > >>       </dependency>
> > > > >>       <dependency>
> > > > >>           <groupId>org.neo4j.app</groupId>
> > > > >>           <artifactId>neo4j-server</artifactId>
> > > > >>           <version>3.1.3</version>
> > > > >>       </dependency>
> > > > >>  </dependencies>
> > > > >>
> > > > >>  Is there a good way to deal with it such that a user of the
> > > > >>  jqassistant-maven-plugin can easily switch between both variants?
> > > > >>
> > > > >>  Cheers,
> > > > >>
> > > > >>  Dirk
> > > > >>
> > > > >>  Senior Consultant IT
> > > > >>  buschmais GbR
> > > > >
> > > > >
> > > > >- Bindul
> > > > >
> > > > >[1]
> > > > >
> > > > http://maven.apache.org/plugins/maven-checkstyle-
> > plugin/examples/upgrading-checkstyle.html
> > > > >
> > > > >>
> > > > >>  -----------------------------------------------------------------
> > > > >>  Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias Israel
> > > > >>  Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
> > > > >>  Telefon  +49 (0) 351 3209 23-0
> > > > >>  Fax      +49 (0) 351 3209 23-29
> > > > >>  Mobil    +49 (0) 177 3137411
> > > > >>  E-Mail   [hidden email]
> > > > >>  Internet http://www.buschmais.de
> > > > >>  -----------------------------------------------------------------
> > > > >>
> > > > >>  Diese E-Mail enthält vertrauliche undoder rechtlich geschützte
> > > > >>  Informationen. Wenn Sie diese E-Mail irrtümlich erhalten haben,
> > > > >>  bitten wir Sie diese E-Mail umgehend zu löschen. Das unerlaubte
> > > > >>  Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht
> > > > >>  gestattet.
> > > > >>
> > > > >>  This e-mail may contain confidential or privileged information. If
> > > > >>  you are not the intended recipient we kindly request you to delete
> > > > >>  this e-mail immediately. Any unauthorized copying, disclosure or
> > > > >>  distribution of the material in this e-mail is strictly forbidden.
> > > > >>
> > > > >>
> > > > >
> > > > >---------------------------------------------------------------------
> > > > >To unsubscribe, e-mail: [hidden email]
> > > > >For additional commands, e-mail: [hidden email]
> > > > >
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [hidden email]
> > > > For additional commands, e-mail: [hidden email]
> > > >
> > > > --
> > > Sent from my phone
> > >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>
>
> --
>
> --
> +==============================+
> | Bästa hälsningar,
> | [sw. "Best regards"]
> |
> | Lennart Jörelid
> | EAI Architect & Integrator
> |
> | jGuru Europe AB
> | Mölnlycke - Kista
> |
> | Email: [hidden email]
> | URL:   www.jguru.se
> | Phone
> | (skype):    jgurueurope
> | (intl):     +46 708 507 603
> | (domestic): 0708 - 507 603
> +==============================+
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re[4]: Configurable Dependencies for Maven Plugins?

Dirk Mahler
Hi Lennart,

it works, thanks for the hint!

Now fighting with classloading problems of Apache Lucene (which is used
by Neo4j), but that's another story...

Cheers and happy easter to everybody

Dirk

------ Originalnachricht ------
Von: "Dirk Mahler" <[hidden email]>
An: [hidden email]
Gesendet: 12.04.2017 22:12:55
Betreff: Re: Re[2]: Configurable Dependencies for Maven Plugins?

>Hi Lennart,
>
>that sounds feasible, will give it a try and come back with the result.
>
>Thanks so far to all of you!
>
>Dirk
>
>Am Mittwoch 12. April 2017 schrieb Lennart Jörelid:
>>  Hello Dirk,
>>
>>  There are always options for doing this, although they may not be
>>  considered elegant.
>>
>>  To solve your problem in a practical way I would recommend defining
>>two
>>  profiles within your pom (say "neo4jV2" and "neo4jV3").
>>  One of the properties should be included ("Conditional profiles")
>>using the
>>  value (or existence/non-existence) of a command-line property
>>(typically
>>  something like -Dneo4jVersion=2).
>>
>>  The neo4jv2 profile includes the three neo4j2 dependencies, and the
>>neo4jv3
>>  profile includes the two neo4j3 dependencies.
>>  Include the neo4jV3 profile unless the property "neo4jVersion" is set
>>on
>>  the command line.
>>
>>  Done.
>>
>>
>>  2017-04-12 21:50 GMT+02:00 Dirk Mahler <[hidden email]>:
>>
>>  > Hi Stephen,
>>  >
>>  > I need to declare the dependency to static directly, so I'm on the
>>  > Sorry-Out-Of-Luck path...
>>  >
>>  > But your suggestion makes me  thinking of providing an artifact
>>myself
>>  > (just pom packaging) in two different versions that pulls in the
>>different
>>  > dependencies and which can be overridden by the user. This should
>>be
>>  > possible then, right?
>>  >
>>  > In that case I have to think about how to organize my own builds
>>because I
>>  > assume that within one reactor I won't be able to build two modules
>>with
>>  > same groupId and artifactId but different versions.
>>  >
>>  > Cheers,
>>  >
>>  > Dirk
>>  >
>>  > PS: Thanks for the 3.5.0 release, works like a charm for me!
>>  >
>>  > Am Mittwoch 12. April 2017 schrieb Stephen Connolly:
>>  > > On Wed 12 Apr 2017 at 20:21, Dirk Mahler
>><[hidden email]>
>>  > wrote:
>>  > >
>>  > > > Hi Bindul,
>>  > > >
>>  > > > sadly it's not that easy (or it's so easy that I don't see the
>>  > > > solution...). As a default and for compatibility reasons I'd
>>like to
>>  > > > declare the dependencies of the Neo4j 2.x artifacts for my
>>Maven
>>  > plugin:
>>  > > >
>>  > > > - org.neo4j:neoj
>>  > > > - org.neo4j.app:neo4j-server
>>  > > > - org.neo4j.app:neo4j-server:static *
>>  > >
>>  > >
>>  > > Do you declare a direct dependency on static or a transitive one?
>>  > >
>>  > > If direct, then yes you are Sorry-out-of-Luck
>>  > >
>>  > > If transitive, then the <dependency> in the user's <plugin> will
>>override
>>  > > the neo4j-server and you are sorted as the newer version will not
>>pull in
>>  > > the static stuff
>>  > >
>>  > > >
>>  > > >
>>  > > > For a user it would be possible to override only the first two
>>  > > > dependencies with the Neo4j 3.x versions: the third artifact
>>(*) does
>>  > > > not exist for Neo4j 3.x (the Neo guys merged the static content
>>into
>>  > > > neo4j-server.jar, i.e. into the main artifact without
>>classifier). In
>>  > > > this case I would need to exclude
>>"org.neo4j.app:neo4j-server:static"
>>  > > > which is still there as a 2.x artifact and pulls in some other
>>deps
>>  > that
>>  > > > are conflicting with the 3.x stuff. Any idea?
>>  > > >
>>  > > > Cheers,
>>  > > >
>>  > > > Dirk
>>  > > >
>>  > > > ------ Originalnachricht ------
>>  > > > Von: "Bindul Bhowmik" <[hidden email]>
>>  > > > An: "Maven Developers List" <[hidden email]>; "Dirk
>>Mahler"
>>  > > > <[hidden email]>
>>  > > > Gesendet: 12.04.2017 20:28:16
>>  > > > Betreff: Re: Configurable Dependencies for Maven Plugins?
>>  > > >
>>  > > > >Dirk,
>>  > > > >
>>  > > > >On Wed, Apr 12, 2017 at 7:06 AM, Dirk Mahler
>>  > > > ><[hidden email]> wrote:
>>  > > > >>  Hi all,
>>  > > > >>
>>  > > > >>  is there a way to provide users of a plugin a way of easily
>>  > switching
>>  > > > >>  dependencies of it?
>>  > > > >>
>>  > > > >>  Background: I'm developing a Maven plugin (jQAssistant)
>>that comes
>>  > > > >>with a
>>  > > > >>  dependency to Neo4j (graph database). Currently I'm using
>>Neo4j
>>  > 2.3.x
>>  > > > >>which
>>  > > > >>  has been compiled against Java 7 but I would like to offer
>>users of
>>  > > > >>the
>>  > > > >>  Maven plugin an easy option to use the newer Neo4j 3.x
>>releases
>>  > which
>>  > > > >>offer
>>  > > > >>  some new features but require Java 8.
>>  > > > >>
>>  > > > >>  I know that it's possible to overwrite an existing
>>dependency for a
>>  > > > >>plugin,
>>  > > > >>  e.g.
>>  > > > >>
>>  > > > >>  <plugin>
>>  > > > >>    <groupId>com.buschmais.jqassistant</groupId>
>>  > > > >>    <artifactId>jqassistant-maven-plugin</artifactId>
>>  > > > >>    <version>1.3.0</version>
>>  > > > >>    <dependencies>
>>  > > > >>      <dependency>
>>  > > > >>        <groupId>org.neo4j</groupId>
>>  > > > >>        <artifactId>neo4j</artifactId>
>>  > > > >>        <version>3.1.3</version> <!-- instead of the default
>>2.3.10
>>  > -->
>>  > > > >>      </dependency>
>>  > > > >>    </dependencies>
>>  > > > >>  </plugin>
>>  > > > >
>>  > > > >As long as your code can handle the different versions of the
>>  > > > >dependency, I think this is absolutely doable. In fact the
>>Maven
>>  > > > >Checkstyle Plugin uses the same approach to allow upgrading
>>checkstyle
>>  > > > >versions without upgrading the plugin version [1].
>>  > > > >
>>  > > > >>
>>  > > > >>  The problem is that in my case the old version comes with
>>another
>>  > set
>>  > > > >>of
>>  > > > >>  dependencies than the new one:
>>  > > > >
>>  > > > >I do not think this will be a problem.
>>  > > > >
>>  > > > >>
>>  > > > >>  old:
>>  > > > >>
>>  > > > >>  <dependencies>
>>  > > > >>       <dependency>
>>  > > > >>           <groupId>org.neo4j</groupId>
>>  > > > >>           <artifactId>neo4j</artifactId>
>>  > > > >>           <version>2.3.10</version>
>>  > > > >>       </dependency>
>>  > > > >>       <dependency>
>>  > > > >>           <groupId>org.neo4j.app</groupId>
>>  > > > >>           <artifactId>neo4j-server</artifactId>
>>  > > > >>           <version>2.3.10</version>
>>  > > > >>       </dependency>
>>  > > > >>       <dependency>
>>  > > > >>           <groupId>org.neo4j.app</groupId>
>>  > > > >>           <artifactId>neo4j-server</artifactId>
>>  > > > >>           <classifier>static-web</classifier>
>>  > > > >>           <version>2.3.10</version>
>>  > > > >>       </dependency>
>>  > > > >>  </dependencies>
>>  > > > >>
>>  > > > >>  new:
>>  > > > >>
>>  > > > >>  <dependencies>
>>  > > > >>       <dependency>
>>  > > > >>           <groupId>org.neo4j</groupId>
>>  > > > >>           <artifactId>neo4j</artifactId>
>>  > > > >>           <version>3.1.3</version>
>>  > > > >>       </dependency>
>>  > > > >>       <dependency>
>>  > > > >>           <groupId>org.neo4j.app</groupId>
>>  > > > >>           <artifactId>neo4j-server</artifactId>
>>  > > > >>           <version>3.1.3</version>
>>  > > > >>       </dependency>
>>  > > > >>  </dependencies>
>>  > > > >>
>>  > > > >>  Is there a good way to deal with it such that a user of the
>>  > > > >>  jqassistant-maven-plugin can easily switch between both
>>variants?
>>  > > > >>
>>  > > > >>  Cheers,
>>  > > > >>
>>  > > > >>  Dirk
>>  > > > >>
>>  > > > >>  Senior Consultant IT
>>  > > > >>  buschmais GbR
>>  > > > >
>>  > > > >
>>  > > > >- Bindul
>>  > > > >
>>  > > > >[1]
>>  > > > >
>>  > > > http://maven.apache.org/plugins/maven-checkstyle-
>>  > plugin/examples/upgrading-checkstyle.html
>>  > > > >
>>  > > > >>
>>  > > > >>  
>>-----------------------------------------------------------------
>>  > > > >>  Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler, Tobias
>>Israel
>>  > > > >>  Adresse buschmais GbR, Leipziger Straße 93, 01127 Dresden
>>  > > > >>  Telefon  +49 (0) 351 3209 23-0
>>  > > > >>  Fax      +49 (0) 351 3209 23-29
>>  > > > >>  Mobil    +49 (0) 177 3137411
>>  > > > >>  E-Mail   [hidden email]
>>  > > > >>  Internet http://www.buschmais.de
>>  > > > >>  
>>-----------------------------------------------------------------
>>  > > > >>
>>  > > > >>  Diese E-Mail enthält vertrauliche undoder rechtlich
>>geschützte
>>  > > > >>  Informationen. Wenn Sie diese E-Mail irrtümlich erhalten
>>haben,
>>  > > > >>  bitten wir Sie diese E-Mail umgehend zu löschen. Das
>>unerlaubte
>>  > > > >>  Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist
>>nicht
>>  > > > >>  gestattet.
>>  > > > >>
>>  > > > >>  This e-mail may contain confidential or privileged
>>information. If
>>  > > > >>  you are not the intended recipient we kindly request you to
>>delete
>>  > > > >>  this e-mail immediately. Any unauthorized copying,
>>disclosure or
>>  > > > >>  distribution of the material in this e-mail is strictly
>>forbidden.
>>  > > > >>
>>  > > > >>
>>  > > > >
>>  > > >
>> >---------------------------------------------------------------------
>>  > > > >To unsubscribe, e-mail: [hidden email]
>>  > > > >For additional commands, e-mail: [hidden email]
>>  > > > >
>>  > > >
>>  > > >
>>  > > >
>>---------------------------------------------------------------------
>>  > > > To unsubscribe, e-mail: [hidden email]
>>  > > > For additional commands, e-mail: [hidden email]
>>  > > >
>>  > > > --
>>  > > Sent from my phone
>>  > >
>>  >
>>---------------------------------------------------------------------
>>  > To unsubscribe, e-mail: [hidden email]
>>  > For additional commands, e-mail: [hidden email]
>>  >
>>  >
>>
>>
>>  --
>>
>>  --
>>  +==============================+
>>  | Bästa hälsningar,
>>  | [sw. "Best regards"]
>>  |
>>  | Lennart Jörelid
>>  | EAI Architect & Integrator
>>  |
>>  | jGuru Europe AB
>>  | Mölnlycke - Kista
>>  |
>>  | Email: [hidden email]
>>  | URL:   www.jguru.se
>>  | Phone
>>  | (skype):    jgurueurope
>>  | (intl):     +46 708 507 603
>>  | (domestic): 0708 - 507 603
>>  +==============================+
>>B�KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCB��[��X��ܚX�KK[XZ[�]�][��X��ܚX�PX]�[��\X�K�ܙ�B��܈Y][ۘ[��[X[��K[XZ[�]�Z[X]�[��\X�K�ܙ�B�


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Loading...