[GitHub] maven pull request: [MNG-5613] Avoid NPE when dependency graph cre...

2014-04-06 Thread dbroeglin
GitHub user dbroeglin opened a pull request:

https://github.com/apache/maven/pull/12

[MNG-5613] Avoid NPE when dependency graph creation fails

As described in MNG-5613 a NPE occurs if the dependency graph creation 
fails. Errors where properly catched and added to the result. However, after 
the call to createProjectDependencyGraph, the resulting projectDependencyGraph 
was null and as result was not checked for exceptions the call to 
projectDependencyGraph.getSortedProjects() resulted in a NPE.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/dbroeglin/maven master

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/maven/pull/12.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #12


commit 2e5ea4379fe39f083c27d0d965b6d64ddf0d6a7a
Author: Dominique Broeglin dominique.broeg...@gmail.com
Date:   2014-04-06T09:29:55Z

[MNG-5613] Avoid NPE when dependency graph creation fails




---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

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



Permissions change on cwiki?

2014-04-06 Thread Jason van Zyl
I can no longer see the edit button on a page I created: 
https://cwiki.apache.org/confluence/display/MAVEN/Maven+4.0.0

Anyone else having permissions issues on cwiki?

Thanks,

Jason

--
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
-

Selfish deeds are the shortest path to self destruction.

 -- The Seven Samuari, Akira Kurosawa











[Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Jason van Zyl
Hi,

I started making of list of things I'd like to remove in Maven 4.0.0, but I 
would like to start getting some agreement on what we can yank and this is the 
first concrete request. I would like to remove the ability for plugins to 
magically inject dependencies. Plugins can either declare their dependencies or 
instruct users to add dependencies to the plugins in their POMs. This weird 
logic for plugins to add dependencies dynamically is the cause of some 
extremely convoluted logic in the resolution code and I want to remove it.

The original issue is here: http://jira.codehaus.org/browse/MNG-4363

I encountered this when trying to hoist all the resolution logic into once 
place so that from our Aether provider resolution as it is done in the core can 
be done everywhere. Right now we have plugins like the assembly plugin, WAR 
plugin, dependency plugin that all do their own weird, inconsistent thing and 
when I tried to put it all in one place so that it can be analyzed, optimized 
and then executed this issue cropped up. We never should have allowed this in 
the first place but carried it over from 2.x for compatibilities sake. This 
might affect the code coverage tools but we can find a cleaner way. This logic 
is totally bizarro and needs to go.

If everyone agrees we can start systematically documenting what has been 
removed, as we have lost track of this accurately in the past. I'd like to make 
a 4.x branch in 4 weeks or so and this will be one of the first things I'd like 
to cut. It will be one of those radical simplifications that will start 
allowing people to get a better understanding of the core as I can put the 
resolution logic in one place as it is currently in many.

Thanks,

Jason

--
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
-

We all have problems. How we deal with them is a measure of our worth.

 -- Unknown











Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Lennart Jörelid
Hm.

Removing the possibility for plugins to manipulate the classpath is - in my
opinion - a rather poor idea.
If we have a problem with plugins contaminating downstream classpath, then
we should provide a simple means for plugins to define Dependencies which
would be added to the classpath of the project *while the plugin executes*.
Key meaning here is that the Maven plugin API should provide these
mechanics (as opposed to plugin developers reinventing the wheel to achieve
this effect again and again) and then automagically remove the dependency
when the plugin's execute method is over.

If we have a problem with plugins concealing true classpath for reports,
then we need to revise how we expose and harvest data for these reports.

I would suggest we need something which works similar to the @Before and
@After annotations from jUnit 4, but which is limited to Dependency
management for plugins and acted upon by Maven - not left to the plugin
developer to invent on their own.
Using compiled-in annotations for static Dependency declarations in the
plugin code would not be good enough, since plugins have loads of good
reasons to add dependencies dynamically - like, for example, different
dependencies used in different JVMs (think JAXB/SAX/DOM, bytecode
manipulation or similar).
I'm suggesting that we could do something like:

@AddToClasspathDuringThisPluginExecutionOnly
public ListDependency getDependenciesForPluginExecution() { ... }

... where the annotation (really silly name here, but illustrates my point)
would indicate that the Dependency would be added to the project's
classpath during the plugin's execution only.
Our reporting and analytics could simply introspect the plugin for methods
annotated with said annotation to find out if they add some dynamically
computed dependencies to their own execution. While it would be impossible
acquire the correct report unless the plugin was actually run, we could
indicate that the classpath may have been manipulated by the plugin during
its execution phase.

2014-04-06 15:55 GMT+02:00 Jason van Zyl ja...@takari.io:

 Hi,

 I started making of list of things I'd like to remove in Maven 4.0.0, but
 I would like to start getting some agreement on what we can yank and this
 is the first concrete request. I would like to remove the ability for
 plugins to magically inject dependencies. Plugins can either declare their
 dependencies or instruct users to add dependencies to the plugins in their
 POMs. This weird logic for plugins to add dependencies dynamically is the
 cause of some extremely convoluted logic in the resolution code and I want
 to remove it.

 The original issue is here: http://jira.codehaus.org/browse/MNG-4363

 I encountered this when trying to hoist all the resolution logic into once
 place so that from our Aether provider resolution as it is done in the core
 can be done everywhere. Right now we have plugins like the assembly plugin,
 WAR plugin, dependency plugin that all do their own weird, inconsistent
 thing and when I tried to put it all in one place so that it can be
 analyzed, optimized and then executed this issue cropped up. We never
 should have allowed this in the first place but carried it over from 2.x
 for compatibilities sake. This might affect the code coverage tools but we
 can find a cleaner way. This logic is totally bizarro and needs to go.

 If everyone agrees we can start systematically documenting what has been
 removed, as we have lost track of this accurately in the past. I'd like to
 make a 4.x branch in 4 weeks or so and this will be one of the first things
 I'd like to cut. It will be one of those radical simplifications that will
 start allowing people to get a better understanding of the core as I can
 put the resolution logic in one place as it is currently in many.

 Thanks,

 Jason

 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -

 We all have problems. How we deal with them is a measure of our worth.

  -- Unknown












-- 

--
+==+
| Bästa hälsningar,
| [sw. Best regards]
|
| Lennart Jörelid
| EAI Architect  Integrator
|
| jGuru Europe AB
| Mölnlycke - Kista
|
| Email: l...@jguru.se
| URL:   www.jguru.se
| Phone
| (skype):jgurueurope
| (intl): +46 708 507 603
| (domestic): 0708 - 507 603
+==+


Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Jason van Zyl

On Apr 6, 2014, at 10:38 AM, Lennart Jörelid lennart.jore...@gmail.com wrote:

 Hm.
 
 Removing the possibility for plugins to manipulate the classpath is - in my
 opinion - a rather poor idea.

I believe the opposite in that magically manipulating the classpath is a poor 
idea. As evidenced in the convoluted logic in the core. There are a number of 
other ways for plugins to alter the classpath, and if it is required of a 
project to have additions that a plugin requires then it should be explicit. If 
something is required on the classpath for test execution then it can be added 
as a test scoped dependency. Adding all the complexity below as you describe is 
akin to what we have and it's not worth it.

 If we have a problem with plugins contaminating downstream classpath, then
 we should provide a simple means for plugins to define Dependencies which
 would be added to the classpath of the project *while the plugin executes*.
 Key meaning here is that the Maven plugin API should provide these
 mechanics (as opposed to plugin developers reinventing the wheel to achieve
 this effect again and again) and then automagically remove the dependency
 when the plugin's execute method is over.
 
 If we have a problem with plugins concealing true classpath for reports,
 then we need to revise how we expose and harvest data for these reports.
 
 I would suggest we need something which works similar to the @Before and
 @After annotations from jUnit 4, but which is limited to Dependency
 management for plugins and acted upon by Maven - not left to the plugin
 developer to invent on their own.
 Using compiled-in annotations for static Dependency declarations in the
 plugin code would not be good enough, since plugins have loads of good
 reasons to add dependencies dynamically - like, for example, different
 dependencies used in different JVMs (think JAXB/SAX/DOM, bytecode
 manipulation or similar).
 I'm suggesting that we could do something like:
 
 @AddToClasspathDuringThisPluginExecutionOnly
 public ListDependency getDependenciesForPluginExecution() { ... }
 
 ... where the annotation (really silly name here, but illustrates my point)
 would indicate that the Dependency would be added to the project's
 classpath during the plugin's execution only.
 Our reporting and analytics could simply introspect the plugin for methods
 annotated with said annotation to find out if they add some dynamically
 computed dependencies to their own execution. While it would be impossible
 acquire the correct report unless the plugin was actually run, we could
 indicate that the classpath may have been manipulated by the plugin during
 its execution phase.
 
 2014-04-06 15:55 GMT+02:00 Jason van Zyl ja...@takari.io:
 
 Hi,
 
 I started making of list of things I'd like to remove in Maven 4.0.0, but
 I would like to start getting some agreement on what we can yank and this
 is the first concrete request. I would like to remove the ability for
 plugins to magically inject dependencies. Plugins can either declare their
 dependencies or instruct users to add dependencies to the plugins in their
 POMs. This weird logic for plugins to add dependencies dynamically is the
 cause of some extremely convoluted logic in the resolution code and I want
 to remove it.
 
 The original issue is here: http://jira.codehaus.org/browse/MNG-4363
 
 I encountered this when trying to hoist all the resolution logic into once
 place so that from our Aether provider resolution as it is done in the core
 can be done everywhere. Right now we have plugins like the assembly plugin,
 WAR plugin, dependency plugin that all do their own weird, inconsistent
 thing and when I tried to put it all in one place so that it can be
 analyzed, optimized and then executed this issue cropped up. We never
 should have allowed this in the first place but carried it over from 2.x
 for compatibilities sake. This might affect the code coverage tools but we
 can find a cleaner way. This logic is totally bizarro and needs to go.
 
 If everyone agrees we can start systematically documenting what has been
 removed, as we have lost track of this accurately in the past. I'd like to
 make a 4.x branch in 4 weeks or so and this will be one of the first things
 I'd like to cut. It will be one of those radical simplifications that will
 start allowing people to get a better understanding of the core as I can
 put the resolution logic in one place as it is currently in many.
 
 Thanks,
 
 Jason
 
 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -
 
 We all have problems. How we deal with them is a measure of our worth.
 
 -- Unknown
 
 
 
 
 
 
 
 
 
 
 
 
 -- 
 
 --
 +==+
 | Bästa hälsningar,
 | [sw. Best regards]
 |
 | Lennart Jörelid
 | EAI Architect  Integrator
 |
 | jGuru Europe AB
 | Mölnlycke - 

Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Robert Scholte

Hi,

if we are talking about immutable classpath I agree. But there's something  
else which needs to be improved.
Let me describe it with the maven-javadoc-plugin, but there are more  
plugins suffering the same problem.
You must be able to specify doclettags artifact. There are dependencies,  
but they are not added to the classpath. These jars are added to a  
different argument of the javadoc executable.


I see two solutions:
- mark these fields in the plugin as being dependencies, which must be  
resolved.
- add a custom field to the plugin-dependency in the pom.xml, so the  
plugin knows which dependencies are used for which purpose.


With both solutions it should also be possible for the  
maven-release-plugin to verify all used dependencies, which is impossible  
right now.


thanks,

Robert


Op Sun, 06 Apr 2014 15:55:07 +0200 schreef Jason van Zyl ja...@takari.io:


Hi,

I started making of list of things I'd like to remove in Maven 4.0.0,  
but I would like to start getting some agreement on what we can yank and  
this is the first concrete request. I would like to remove the ability  
for plugins to magically inject dependencies. Plugins can either declare  
their dependencies or instruct users to add dependencies to the plugins  
in their POMs. This weird logic for plugins to add dependencies  
dynamically is the cause of some extremely convoluted logic in the  
resolution code and I want to remove it.


The original issue is here: http://jira.codehaus.org/browse/MNG-4363

I encountered this when trying to hoist all the resolution logic into  
once place so that from our Aether provider resolution as it is done in  
the core can be done everywhere. Right now we have plugins like the  
assembly plugin, WAR plugin, dependency plugin that all do their own  
weird, inconsistent thing and when I tried to put it all in one place so  
that it can be analyzed, optimized and then executed this issue cropped  
up. We never should have allowed this in the first place but carried it  
over from 2.x for compatibilities sake. This might affect the code  
coverage tools but we can find a cleaner way. This logic is totally  
bizarro and needs to go.


If everyone agrees we can start systematically documenting what has been  
removed, as we have lost track of this accurately in the past. I'd like  
to make a 4.x branch in 4 weeks or so and this will be one of the first  
things I'd like to cut. It will be one of those radical simplifications  
that will start allowing people to get a better understanding of the  
core as I can put the resolution logic in one place as it is currently  
in many.


Thanks,

Jason

--
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
-

We all have problems. How we deal with them is a measure of our worth.

 -- Unknown










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



Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Jason van Zyl

On Apr 6, 2014, at 2:24 PM, Robert Scholte rfscho...@apache.org wrote:

 Hi,
 
 if we are talking about immutable classpath I agree. But there's something 
 else which needs to be improved.
 Let me describe it with the maven-javadoc-plugin, but there are more plugins 
 suffering the same problem.
 You must be able to specify doclettags artifact. There are dependencies, but 
 they are not added to the classpath. These jars are added to a different 
 argument of the javadoc executable.
 

So the generic category is the downloading of artifacts that are passed into 
the command line of an executable? So the plugin already has a dependencies 
element but the javadoc plugin has a special element such that you can get hold 
of these dependencies to feed into the command line. Yes? I believe we can make 
this generic and prevent plugins from having to do their own resolution logic.

 I see two solutions:
 - mark these fields in the plugin as being dependencies, which must be 
 resolved.
 - add a custom field to the plugin-dependency in the pom.xml, so the plugin 
 knows which dependencies are used for which purpose.
 
 With both solutions it should also be possible for the maven-release-plugin 
 to verify all used dependencies, which is impossible right now.
 

The think the second would be better. We already have a dependencies/ element 
which are added to the classpath of the executing plugin, but another element 
like, say, artifacts/ can just be downloaded and injected into the plugin 
such that it can do what it likes with the files of the downloaded artifacts. 
Would this satisfy the requirement of the javadoc plugin?

Striving for plugins not having to specify and resolution is the goal and this 
would certainly help. If we stepped through all the plugins that we know of 
which employ their own resolution logic we can push it back into the core. This 
also eliminates having to expose most of the resolution system which would go a 
long way in not having to expose Aether. Being purely declarative, as we 
should, is best. It's just sort of slipped in many places because we let people 
get at the resolution internals.

Ultimately this means that what gets exposed is a very simple Artifact-like 
entity and a simple graph for things like the dependency plugin and enforcer 
and we eliminate exposing the underbelly of resolution which is a huge problem 
right now. Also if the artifact-like entity had actions that could be attached 
then very sophisticated things like what the Android people need would not 
require using the resolution system at all. Not sure how many people are 
familiar with p2 but it has the notion of actions that are associated with 
artifacts. So you might say I want this artifact downloaded, unpack it, and add 
this directory in the unpacked structure to my classpath.

It would be a radical simplification to basically shear off all access to the 
resolution system. If we had this years ago we would not have these problems we 
have with the switches between Maven Artifact, Sonatype Aether, and Eclipse 
Aether. This means that many plugins need to be remade but they will be far 
simpler. For Maven 4.0.0 I say go big, go simple, or go home.

I've been noodling around for a couple months and there are a few simple 
mistakes we made in the past and they have bloomed into relatively large 
problems. I think they are all fixable provided we just bite the bullet and 
start removing the janky code.

(I can't seem to edit anything in Confluence or I would have written more there)

 thanks,
 
 Robert
 
 
 Op Sun, 06 Apr 2014 15:55:07 +0200 schreef Jason van Zyl ja...@takari.io:
 
 Hi,
 
 I started making of list of things I'd like to remove in Maven 4.0.0, but I 
 would like to start getting some agreement on what we can yank and this is 
 the first concrete request. I would like to remove the ability for plugins 
 to magically inject dependencies. Plugins can either declare their 
 dependencies or instruct users to add dependencies to the plugins in their 
 POMs. This weird logic for plugins to add dependencies dynamically is the 
 cause of some extremely convoluted logic in the resolution code and I want 
 to remove it.
 
 The original issue is here: http://jira.codehaus.org/browse/MNG-4363
 
 I encountered this when trying to hoist all the resolution logic into once 
 place so that from our Aether provider resolution as it is done in the core 
 can be done everywhere. Right now we have plugins like the assembly plugin, 
 WAR plugin, dependency plugin that all do their own weird, inconsistent 
 thing and when I tried to put it all in one place so that it can be 
 analyzed, optimized and then executed this issue cropped up. We never should 
 have allowed this in the first place but carried it over from 2.x for 
 compatibilities sake. This might affect the code coverage tools but we can 
 find a cleaner way. This logic is totally bizarro and needs to go.
 
 If everyone agrees we can start 

Re: Permissions change on cwiki?

2014-04-06 Thread Jason van Zyl
Can anyone else edit that page. Just checking to make sure it's just me before 
I ask infra to look.

On Apr 6, 2014, at 9:41 AM, Jason van Zyl ja...@takari.io wrote:

 I can no longer see the edit button on a page I created: 
 https://cwiki.apache.org/confluence/display/MAVEN/Maven+4.0.0
 
 Anyone else having permissions issues on cwiki?
 
 Thanks,
 
 Jason
 
 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -
 
 Selfish deeds are the shortest path to self destruction.
 
 -- The Seven Samuari, Akira Kurosawa
 
 
 
 
 
 
 
 
 

Thanks,

Jason

--
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
-

Our achievements speak for themselves. What we have to keep track
of are our failures, discouragements and doubts. We tend to forget
the past difficulties, the many false starts, and the painful
groping. We see our past achievements as the end result of a
clean forward thrust, and our present difficulties as
signs of decline and decay.

 -- Eric Hoffer, Reflections on the Human Condition











Re: Permissions change on cwiki?

2014-04-06 Thread Robert Scholte


I can edit it.
And the page says that no restrictions are defined.

thanks,
Robert

Op Sun, 06 Apr 2014 21:17:35 +0200 schreef Jason van Zyl ja...@takari.io:


https://cwiki.apache.org/confluence/display/MAVEN/Maven+4.0.0


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



Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Robert Scholte

Op Sun, 06 Apr 2014 20:54:24 +0200 schreef Jason van Zyl ja...@takari.io:



On Apr 6, 2014, at 2:24 PM, Robert Scholte rfscho...@apache.org wrote:


Hi,

if we are talking about immutable classpath I agree. But there's  
something else which needs to be improved.
Let me describe it with the maven-javadoc-plugin, but there are more  
plugins suffering the same problem.
You must be able to specify doclettags artifact. There are  
dependencies, but they are not added to the classpath. These jars are  
added to a different argument of the javadoc executable.




So the generic category is the downloading of artifacts that are passed  
into the command line of an executable? So the plugin already has a  
dependencies element but the javadoc plugin has a special element such  
that you can get hold of these dependencies to feed into the command  
line. Yes? I believe we can make this generic and prevent plugins from  
having to do their own resolution logic.



I see two solutions:
- mark these fields in the plugin as being dependencies, which must be  
resolved.
- add a custom field to the plugin-dependency in the pom.xml, so the  
plugin knows which dependencies are used for which purpose.


With both solutions it should also be possible for the  
maven-release-plugin to verify all used dependencies, which is  
impossible right now.




The think the second would be better. We already have a dependencies/  
element which are added to the classpath of the executing plugin, but  
another element like, say, artifacts/ can just be downloaded and  
injected into the plugin such that it can do what it likes with the  
files of the downloaded artifacts. Would this satisfy the requirement of  
the javadoc plugin?


I think this will work. A quick look at the javadoc plugin shows me the  
following artifacts/:
- additionalDependencies: capability to add optionnal dependencies to the  
javadoc classpath.
- bootclasspathArtifacts: Specifies the artifacts where the boot classes  
reside.
- docletArtifacts: Specifies multiple artifacts containing the path for  
the doclet starting class file (specified with the -doclet option).
- resourcesArtifacts: A list of artifacts containing resources which  
should be copied into the Javadoc output directory (like stylesheets,  
icons, etc.).
- tagletArtifacts: Specifies several Taglet artifacts containing the  
taglet class files (.class). These taglets class names will be auto-detect  
and so no need to specify them.


These are artifacts which must be downloaded, and they are all specified  
as groupId/artifactId/version. I don't see additional elements, but we  
need to investigate other plugins as well.


Maybe worth a separate wiki page.

thanks,
Robert




Striving for plugins not having to specify and resolution is the goal  
and this would certainly help. If we stepped through all the plugins  
that we know of which employ their own resolution logic we can push it  
back into the core. This also eliminates having to expose most of the  
resolution system which would go a long way in not having to expose  
Aether. Being purely declarative, as we should, is best. It's just sort  
of slipped in many places because we let people get at the resolution  
internals.


Ultimately this means that what gets exposed is a very simple  
Artifact-like entity and a simple graph for things like the dependency  
plugin and enforcer and we eliminate exposing the underbelly of  
resolution which is a huge problem right now. Also if the artifact-like  
entity had actions that could be attached then very sophisticated things  
like what the Android people need would not require using the resolution  
system at all. Not sure how many people are familiar with p2 but it has  
the notion of actions that are associated with artifacts. So you might  
say I want this artifact downloaded, unpack it, and add this directory  
in the unpacked structure to my classpath.


It would be a radical simplification to basically shear off all access  
to the resolution system. If we had this years ago we would not have  
these problems we have with the switches between Maven Artifact,  
Sonatype Aether, and Eclipse Aether. This means that many plugins need  
to be remade but they will be far simpler. For Maven 4.0.0 I say go big,  
go simple, or go home.


I've been noodling around for a couple months and there are a few simple  
mistakes we made in the past and they have bloomed into relatively large  
problems. I think they are all fixable provided we just bite the bullet  
and start removing the janky code.


(I can't seem to edit anything in Confluence or I would have written  
more there)



thanks,

Robert


Op Sun, 06 Apr 2014 15:55:07 +0200 schreef Jason van Zyl  
ja...@takari.io:



Hi,

I started making of list of things I'd like to remove in Maven 4.0.0,  
but I would like to start getting some agreement on what we can yank  
and this is the first concrete request. I would like to remove the  
ability 

Re: Permissions change on cwiki?

2014-04-06 Thread Martijn Dashorst
A couple of weeks ago infra disabled editing for all accounts due to an
excessive spam influx. IIRC any admin can restore edit privileges.

Martijn


On Sun, Apr 6, 2014 at 9:17 PM, Jason van Zyl ja...@takari.io wrote:

 Can anyone else edit that page. Just checking to make sure it's just me
 before I ask infra to look.

 On Apr 6, 2014, at 9:41 AM, Jason van Zyl ja...@takari.io wrote:

  I can no longer see the edit button on a page I created:
 https://cwiki.apache.org/confluence/display/MAVEN/Maven+4.0.0
 
  Anyone else having permissions issues on cwiki?
 
  Thanks,
 
  Jason
 
  --
  Jason van Zyl
  Founder,  Apache Maven
  http://twitter.com/jvanzyl
  http://twitter.com/takari_io
  -
 
  Selfish deeds are the shortest path to self destruction.
 
  -- The Seven Samuari, Akira Kurosawa
 
 
 
 
 
 
 
 
 

 Thanks,

 Jason

 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -

 Our achievements speak for themselves. What we have to keep track
 of are our failures, discouragements and doubts. We tend to forget
 the past difficulties, the many false starts, and the painful
 groping. We see our past achievements as the end result of a
 clean forward thrust, and our present difficulties as
 signs of decline and decay.

  -- Eric Hoffer, Reflections on the Human Condition












-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com


Re: Permissions change on cwiki?

2014-04-06 Thread Daniel Kulp

Jason’s account was not in the maven-committers group.  Now fixed.

Dan


On Apr 6, 2014, at 5:08 PM, Martijn Dashorst martijn.dasho...@gmail.com wrote:

 A couple of weeks ago infra disabled editing for all accounts due to an
 excessive spam influx. IIRC any admin can restore edit privileges.
 
 Martijn
 
 
 On Sun, Apr 6, 2014 at 9:17 PM, Jason van Zyl ja...@takari.io wrote:
 
 Can anyone else edit that page. Just checking to make sure it's just me
 before I ask infra to look.
 
 On Apr 6, 2014, at 9:41 AM, Jason van Zyl ja...@takari.io wrote:
 
 I can no longer see the edit button on a page I created:
 https://cwiki.apache.org/confluence/display/MAVEN/Maven+4.0.0
 
 Anyone else having permissions issues on cwiki?
 
 Thanks,
 
 Jason
 
 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -
 
 Selfish deeds are the shortest path to self destruction.
 
 -- The Seven Samuari, Akira Kurosawa
 
 
 
 
 
 
 
 
 
 
 Thanks,
 
 Jason
 
 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -
 
 Our achievements speak for themselves. What we have to keep track
 of are our failures, discouragements and doubts. We tend to forget
 the past difficulties, the many false starts, and the painful
 groping. We see our past achievements as the end result of a
 clean forward thrust, and our present difficulties as
 signs of decline and decay.
 
 -- Eric Hoffer, Reflections on the Human Condition
 
 
 
 
 
 
 
 
 
 
 
 
 -- 
 Become a Wicket expert, learn from the best: http://wicketinaction.com

-- 
Daniel Kulp
dk...@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


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



Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Mark Derricutt

On 7 Apr 2014, at 6:24, Robert Scholte wrote:

You must be able to specify doclettags artifact. There are 
dependencies, but they are not added to the classpath. These jars are 
added to a different argument of the javadoc executable.


Would this be possible via plugin-level custom dependency scope types?

Then the mojo, via some API gets the docklet scoped dependencies?

Mark

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



Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Benson Margulies
It seems to me we have several concepts that might benefit from some combing.

We have 'path-like' structures. When building Java programs, we have
the compile and test classpaths. _Within_ these classpaths, we have
scopes. In other words, I think that the concept of a path and the
concept of a scope should be orthogonal. The scope controls whether it
is included in compilation, runtime, or some packaging step. Instead
of 'scope=test', I claim it would be clearer to say 'it's in the
'test' classpath, and the scope is either 'compile' or 'runtime'. When
we specify a 'dependency', we put it in some path.

We then have other logical classpaths. . Something like javadoc should
be able to define another named classpath structure; combining the
dependencies of the plugin's implementation with dynamic code
(doclets, whatever) seems like a category confusion to me.

Then we get to dependencies and path-like structures that are not java
code. The current situation in which a project's dependencies can be a
mixture of jar files and zip files and whatnot is not pretty. What if
I needed a jar file that contained data to be unpacked instead of
something to add to the classpath? Jason's reference to p2's ability
for an artifact to self-route sounds handy; I'd settle for a
declarative idea in the pom that there is more than one kind/path of
dependencies.


On Sun, Apr 6, 2014 at 7:19 PM, Mark Derricutt m...@talios.com wrote:
 On 7 Apr 2014, at 6:24, Robert Scholte wrote:

 You must be able to specify doclettags artifact. There are dependencies,
 but they are not added to the classpath. These jars are added to a different
 argument of the javadoc executable.


 Would this be possible via plugin-level custom dependency scope types?

 Then the mojo, via some API gets the docklet scoped dependencies?

 Mark

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


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



Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Mark Derricutt

On 7 Apr 2014, at 12:32, Benson Margulies wrote:


We then have other logical classpaths. . Something like javadoc should
be able to define another named classpath structure; combining the
dependencies of the plugin's implementation with dynamic code
(doclets, whatever) seems like a category confusion to me.


If we change/break this - can we PLEASE make the compilation path IGNORE 
transitive dependencies of 'compile' dependencies - if I -need- it to 
compile, -I- should depend on it up front.


Mark

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



Re: Permissions change on cwiki?

2014-04-06 Thread Jason van Zyl
Danke.

On Apr 6, 2014, at 5:11 PM, Daniel Kulp dk...@apache.org wrote:

 
 Jason’s account was not in the maven-committers group.  Now fixed.
 
 Dan
 
 
 On Apr 6, 2014, at 5:08 PM, Martijn Dashorst martijn.dasho...@gmail.com 
 wrote:
 
 A couple of weeks ago infra disabled editing for all accounts due to an
 excessive spam influx. IIRC any admin can restore edit privileges.
 
 Martijn
 
 
 On Sun, Apr 6, 2014 at 9:17 PM, Jason van Zyl ja...@takari.io wrote:
 
 Can anyone else edit that page. Just checking to make sure it's just me
 before I ask infra to look.
 
 On Apr 6, 2014, at 9:41 AM, Jason van Zyl ja...@takari.io wrote:
 
 I can no longer see the edit button on a page I created:
 https://cwiki.apache.org/confluence/display/MAVEN/Maven+4.0.0
 
 Anyone else having permissions issues on cwiki?
 
 Thanks,
 
 Jason
 
 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -
 
 Selfish deeds are the shortest path to self destruction.
 
 -- The Seven Samuari, Akira Kurosawa
 
 
 
 
 
 
 
 
 
 
 Thanks,
 
 Jason
 
 --
 Jason van Zyl
 Founder,  Apache Maven
 http://twitter.com/jvanzyl
 http://twitter.com/takari_io
 -
 
 Our achievements speak for themselves. What we have to keep track
 of are our failures, discouragements and doubts. We tend to forget
 the past difficulties, the many false starts, and the painful
 groping. We see our past achievements as the end result of a
 clean forward thrust, and our present difficulties as
 signs of decline and decay.
 
 -- Eric Hoffer, Reflections on the Human Condition
 
 
 
 
 
 
 
 
 
 
 
 
 -- 
 Become a Wicket expert, learn from the best: http://wicketinaction.com
 
 -- 
 Daniel Kulp
 dk...@apache.org - http://dankulp.com/blog
 Talend Community Coder - http://coders.talend.com
 
 
 -
 To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
 For additional commands, e-mail: dev-h...@maven.apache.org
 

Thanks,

Jason

--
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
-

You are never dedicated to something you have complete confidence in.
No one is fanatically shouting that the sun is going to rise tomorrow.
They know it is going to rise tomorrow. When people are fanatically
dedicated to political or religious faiths or any other kind of 
dogmas or goals, it's always because these dogmas or
goals are in doubt.

  -- Robert Pirzig, Zen and the Art of Motorcycle Maintenance











Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Jason van Zyl
I like Robert's idea of getting all the variants in a wiki page. But I'd still 
like you guys to answer the initial query which was to agree on removing the 
magic of plugins adding things to the classpath and requiring it be specific.

On Apr 6, 2014, at 8:32 PM, Benson Margulies bimargul...@gmail.com wrote:

 It seems to me we have several concepts that might benefit from some combing.
 
 We have 'path-like' structures. When building Java programs, we have
 the compile and test classpaths. _Within_ these classpaths, we have
 scopes. In other words, I think that the concept of a path and the
 concept of a scope should be orthogonal. The scope controls whether it
 is included in compilation, runtime, or some packaging step. Instead
 of 'scope=test', I claim it would be clearer to say 'it's in the
 'test' classpath, and the scope is either 'compile' or 'runtime'. When
 we specify a 'dependency', we put it in some path.
 
 We then have other logical classpaths. . Something like javadoc should
 be able to define another named classpath structure; combining the
 dependencies of the plugin's implementation with dynamic code
 (doclets, whatever) seems like a category confusion to me.
 
 Then we get to dependencies and path-like structures that are not java
 code. The current situation in which a project's dependencies can be a
 mixture of jar files and zip files and whatnot is not pretty. What if
 I needed a jar file that contained data to be unpacked instead of
 something to add to the classpath? Jason's reference to p2's ability
 for an artifact to self-route sounds handy; I'd settle for a
 declarative idea in the pom that there is more than one kind/path of
 dependencies.
 
 
 On Sun, Apr 6, 2014 at 7:19 PM, Mark Derricutt m...@talios.com wrote:
 On 7 Apr 2014, at 6:24, Robert Scholte wrote:
 
 You must be able to specify doclettags artifact. There are dependencies,
 but they are not added to the classpath. These jars are added to a different
 argument of the javadoc executable.
 
 
 Would this be possible via plugin-level custom dependency scope types?
 
 Then the mojo, via some API gets the docklet scoped dependencies?
 
 Mark
 
 -
 To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
 For additional commands, e-mail: dev-h...@maven.apache.org
 
 
 -
 To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
 For additional commands, e-mail: dev-h...@maven.apache.org
 

Thanks,

Jason

--
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/takari_io
-

People develop abstractions by generalizing from concrete examples.
Every attempt to determine the correct abstraction on paper without
actually developing a running system is doomed to failure. No one
is that smart. A framework is a resuable design, so you develop it by
looking at the things it is supposed to be a design of. The more examples
you look at, the more general your framework will be.

  -- Ralph Johnson  Don Roberts, Patterns for Evolving Frameworks 











Re: [Maven 4.0.0] Removing ability for plugins to dynamically inject dependencies

2014-04-06 Thread Jason van Zyl
https://cwiki.apache.org/confluence/display/MAVEN/Resolution+scenarios+for+plugins

On Apr 6, 2014, at 4:47 PM, Robert Scholte rfscho...@apache.org wrote:

 Op Sun, 06 Apr 2014 20:54:24 +0200 schreef Jason van Zyl ja...@takari.io:
 
 
 On Apr 6, 2014, at 2:24 PM, Robert Scholte rfscho...@apache.org wrote:
 
 Hi,
 
 if we are talking about immutable classpath I agree. But there's something 
 else which needs to be improved.
 Let me describe it with the maven-javadoc-plugin, but there are more 
 plugins suffering the same problem.
 You must be able to specify doclettags artifact. There are dependencies, 
 but they are not added to the classpath. These jars are added to a 
 different argument of the javadoc executable.
 
 
 So the generic category is the downloading of artifacts that are passed into 
 the command line of an executable? So the plugin already has a dependencies 
 element but the javadoc plugin has a special element such that you can get 
 hold of these dependencies to feed into the command line. Yes? I believe we 
 can make this generic and prevent plugins from having to do their own 
 resolution logic.
 
 I see two solutions:
 - mark these fields in the plugin as being dependencies, which must be 
 resolved.
 - add a custom field to the plugin-dependency in the pom.xml, so the plugin 
 knows which dependencies are used for which purpose.
 
 With both solutions it should also be possible for the maven-release-plugin 
 to verify all used dependencies, which is impossible right now.
 
 
 The think the second would be better. We already have a dependencies/ 
 element which are added to the classpath of the executing plugin, but 
 another element like, say, artifacts/ can just be downloaded and injected 
 into the plugin such that it can do what it likes with the files of the 
 downloaded artifacts. Would this satisfy the requirement of the javadoc 
 plugin?
 
 I think this will work. A quick look at the javadoc plugin shows me the 
 following artifacts/:
 - additionalDependencies: capability to add optionnal dependencies to the 
 javadoc classpath.
 - bootclasspathArtifacts: Specifies the artifacts where the boot classes 
 reside.
 - docletArtifacts: Specifies multiple artifacts containing the path for the 
 doclet starting class file (specified with the -doclet option).
 - resourcesArtifacts: A list of artifacts containing resources which should 
 be copied into the Javadoc output directory (like stylesheets, icons, etc.).
 - tagletArtifacts: Specifies several Taglet artifacts containing the taglet 
 class files (.class). These taglets class names will be auto-detect and so no 
 need to specify them.
 
 These are artifacts which must be downloaded, and they are all specified as 
 groupId/artifactId/version. I don't see additional elements, but we need to 
 investigate other plugins as well.
 
 Maybe worth a separate wiki page.
 
 thanks,
 Robert
 
 
 
 Striving for plugins not having to specify and resolution is the goal and 
 this would certainly help. If we stepped through all the plugins that we 
 know of which employ their own resolution logic we can push it back into the 
 core. This also eliminates having to expose most of the resolution system 
 which would go a long way in not having to expose Aether. Being purely 
 declarative, as we should, is best. It's just sort of slipped in many places 
 because we let people get at the resolution internals.
 
 Ultimately this means that what gets exposed is a very simple Artifact-like 
 entity and a simple graph for things like the dependency plugin and enforcer 
 and we eliminate exposing the underbelly of resolution which is a huge 
 problem right now. Also if the artifact-like entity had actions that could 
 be attached then very sophisticated things like what the Android people need 
 would not require using the resolution system at all. Not sure how many 
 people are familiar with p2 but it has the notion of actions that are 
 associated with artifacts. So you might say I want this artifact downloaded, 
 unpack it, and add this directory in the unpacked structure to my classpath.
 
 It would be a radical simplification to basically shear off all access to 
 the resolution system. If we had this years ago we would not have these 
 problems we have with the switches between Maven Artifact, Sonatype Aether, 
 and Eclipse Aether. This means that many plugins need to be remade but they 
 will be far simpler. For Maven 4.0.0 I say go big, go simple, or go home.
 
 I've been noodling around for a couple months and there are a few simple 
 mistakes we made in the past and they have bloomed into relatively large 
 problems. I think they are all fixable provided we just bite the bullet and 
 start removing the janky code.
 
 (I can't seem to edit anything in Confluence or I would have written more 
 there)
 
 thanks,
 
 Robert
 
 
 Op Sun, 06 Apr 2014 15:55:07 +0200 schreef Jason van Zyl ja...@takari.io:
 
 Hi,
 
 I started making of list of things I'd