Re: enforcer plugin rules to prevent circular dependencies

2011-03-29 Thread Phillip Hellewell
On Mon, Mar 28, 2011 at 10:52 AM, Caoilte O'Connor caoi...@gmail.com wrote:
 Thanks for the detailed reply Philip,

 On Sat, Mar 26, 2011 at 3:43 AM, Phillip Hellewell ssh...@gmail.com wrote:

 In other words, if any of my dependencies are myself, then it throws
 an exception.

 Were you able to release this anywhere or is it something I could re-develop
 easily enough with the DependencyTreeBuilder.

It's not released anywhere but I could check with my boss to find out
if we could contribute back to the community.

But we're only talking about a few dozen lines of code, so you could
probably figure it out.  Look at the dependency plugin source to give
you a hint on how to do it.  BTW, we are also using this same plugin
to detect version clashes (same dependency appears more than once with
different versions).

 I don't think it is really possible to introduce a cycle when using
 releases, but it is definitely possible with snapshots (just follow
 the steps in the bug).

 I think we were able to introduce this bug by having

 Version 2 of Project A depending  on version 1 of Project B which depends on
 version 1 of Project A.

Oh yes, of course.  I'm not sure why I let myself be led to believe
this could not happen with releases.

Phillip

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



Re: enforcer plugin rules to prevent circular dependencies

2011-03-28 Thread Caoilte O'Connor
Thanks for the detailed reply Philip,

Comments inline

On Sat, Mar 26, 2011 at 3:43 AM, Phillip Hellewell ssh...@gmail.com wrote:

 On Fri, Mar 25, 2011 at 8:45 AM, Wendy Smoak wsm...@gmail.com wrote:
  On Fri, Mar 25, 2011 at 5:55 AM, Caoilte O'Connor caoi...@gmail.com
 wrote:
  Hi,
  I've just discovered the enforcer plugin and would like to use it to
 reduce
  our dependency conflicts but a bigger problem for us when it does turn
 up
  are circular dependencies. The Dependency Tree plugin spots these, but
 does
  anyone have any rules for the enforcer plugin to fail the build if it
  occurs?

 I wrote a plugin to do it.  It uses
 org.apache.maven.shared.dependency.tree.DependencyTreeBuilder to get
 the list of DependencyNode.  Then it cycles through each one calling
 getArtifact() and compares it to see if it is the same as the main
 project's Artifact (same group id and artifact id).

 In other words, if any of my dependencies are myself, then it throws
 an exception.


Were you able to release this anywhere or is it something I could re-develop
easily enough with the DependencyTreeBuilder.



  In what situation does the build get far enough to use a plugin to
  detect this?  I thought Maven would just stop with an error if it
  encountered a cycle.

 I have heard that it will catch a cycle in a reactor build, but
 otherwise no, it won't catch it.  That's why I submitted this bug a
 couple months ago: http://jira.codehaus.org/browse/MNG-4999

 I don't think it is really possible to introduce a cycle when using
 releases, but it is definitely possible with snapshots (just follow
 the steps in the bug).


I think we were able to introduce this bug by having

Version 2 of Project A depending  on version 1 of Project B which depends on
version 1 of Project A.

Regards

Caoilte


enforcer plugin rules to prevent circular dependencies

2011-03-25 Thread Caoilte O'Connor
Hi,
I've just discovered the enforcer plugin and would like to use it to reduce
our dependency conflicts but a bigger problem for us when it does turn up
are circular dependencies. The Dependency Tree plugin spots these, but does
anyone have any rules for the enforcer plugin to fail the build if it
occurs?

Thanks


Caoilte


Re: enforcer plugin rules to prevent circular dependencies

2011-03-25 Thread Wendy Smoak
On Fri, Mar 25, 2011 at 5:55 AM, Caoilte O'Connor caoi...@gmail.com wrote:
 Hi,
 I've just discovered the enforcer plugin and would like to use it to reduce
 our dependency conflicts but a bigger problem for us when it does turn up
 are circular dependencies. The Dependency Tree plugin spots these, but does
 anyone have any rules for the enforcer plugin to fail the build if it
 occurs?

In what situation does the build get far enough to use a plugin to
detect this?  I thought Maven would just stop with an error if it
encountered a cycle.

-- 
Wendy

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



Re: enforcer plugin rules to prevent circular dependencies

2011-03-25 Thread Phillip Hellewell
On Fri, Mar 25, 2011 at 8:45 AM, Wendy Smoak wsm...@gmail.com wrote:
 On Fri, Mar 25, 2011 at 5:55 AM, Caoilte O'Connor caoi...@gmail.com wrote:
 Hi,
 I've just discovered the enforcer plugin and would like to use it to reduce
 our dependency conflicts but a bigger problem for us when it does turn up
 are circular dependencies. The Dependency Tree plugin spots these, but does
 anyone have any rules for the enforcer plugin to fail the build if it
 occurs?

I wrote a plugin to do it.  It uses
org.apache.maven.shared.dependency.tree.DependencyTreeBuilder to get
the list of DependencyNode.  Then it cycles through each one calling
getArtifact() and compares it to see if it is the same as the main
project's Artifact (same group id and artifact id).

In other words, if any of my dependencies are myself, then it throws
an exception.

 In what situation does the build get far enough to use a plugin to
 detect this?  I thought Maven would just stop with an error if it
 encountered a cycle.

I have heard that it will catch a cycle in a reactor build, but
otherwise no, it won't catch it.  That's why I submitted this bug a
couple months ago: http://jira.codehaus.org/browse/MNG-4999

I don't think it is really possible to introduce a cycle when using
releases, but it is definitely possible with snapshots (just follow
the steps in the bug).

You can read my thread about cycle detection from a couple months ago
here: 
http://maven.40175.n5.nabble.com/Why-is-Maven-allowing-cycles-td3355428.html

Phillip

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