On 05/02/2009, at 7:28 PM, Brett Porter wrote:

Is there anything the clover2 plugin should be doing to ensure that these modifications are made on the transitively resolved projects?

I'd have to dig a bit - it has been a while. I thought that the project in a forked lifecycle was discarded (the forking mojo was responsible for putting changes back into the main project as needed, which is what you seem to need here).


AFAICT, this problem is happening during the forked lifecycle. Otherwise, the output directories would not be target/clover etc? Also, some clovered artifacts are correctly resolved. How can the forking mojo access the main project? I am not sure the maven-clover2-plugin does that anywhere.

Is it possible your call to add the clover artifact itself is dumping the revised artifacts?


I don't think so. When the clover artifact itself is added, the same dependencies added during swizzling should also be included.
ie:

Set set = new LinkedHashSet( getProject().getDependencyArtifacts() );
        set.add( cloverArtifact );
        getProject().setDependencyArtifacts( set );

from: 
http://svn.atlassian.com/fisheye/browse/public/contrib/clover/maven-clover-plugin/trunk/src/main/java/com/atlassian/maven/plugin/clover/CloverInstrumentInternalMojo.java?r=27752#l416

Cheers, Nick.








[1] Clover's Life-cycle 
http://svn.atlassian.com/fisheye/browse/public/contrib/clover/maven-clover-plugin/trunk/src/main/resources/META-INF/maven/lifecycle.xml?r=24080

On 03/02/2009, at 10:04 PM, Brett Porter wrote:

There's a further resolution step. The resources:resources in question is for the app, and has both:

[DEBUG] com.fidelity.shares:shares-app:jar:1.0-SNAPSHOT (selected for null) [DEBUG] com.fidelity.shares:shares-domain:jar:clover:1.0- SNAPSHOT:compile (selected for compile)

and

[DEBUG] com.fidelity.shares:shares-mail:jar:clover:1.0- SNAPSHOT:compile (selected for compile) [DEBUG] com.fidelity.shares:shares-domain:jar:1.0- SNAPSHOT:compile (selected for compile)

The modifications are being made to the main project, but not the transitively resolved projects.

It's always hard to tell from the output - is the resources call in the forked lifecycle or the main one afterwards? The latter would not retain all the settings.

- Brett

On 03/02/2009, at 4:08 PM, Nick Pellow wrote:

You're right. the dependency artifacts are already transitive.
e.g. the -X output shows:

[DEBUG] [Clover] List of dependency artifacts after changes:
[DEBUG] [Clover] Artifact [com.fidelity.shares:shares- domain:jar:clover:1.0-SNAPSHOT], scope = [compile]
....
[DEBUG] [Clover] List of artifacts after changes:
[DEBUG] [Clover] Artifact [com.fidelity.shares:shares- domain:jar:clover:1.0-SNAPSHOT], scope = [compile]
....

The full list of artifacts 'after changes' only includes shares- domain:jar:clover .ie - the correctly resolved and classified artifact.
This is in both the "dependency artifacts" and the artifacts list.
ie:
getProject ().setDependencyArtifacts (swizzleCloverDependencies ( getProject().getDependencyArtifacts() ) ); getProject ().setArtifacts (swizzleCloverDependencies( getProject().getArtifacts() ) );

This seems to not be the case when resources:resources runs?
A -X log file showing this is attached to our forum: output.txt . The tests fail with a: "DuplicateMappingException: Duplicate class/entity mapping com.fidelity.shares.domain.simple.SimpleThing" at the end of that file. Just above this, you can see that both the classified and non-classified versions of the shares-domain artifact are on the classpath.

The full post is: 
http://forums.atlassian.com/thread.jspa?threadID=22387&tstart=0


On 03/02/2009, at 3:33 PM, Brett Porter wrote:

The dependency artifacts should already be transitive. I'm not quite sure how you are seeing the results you are. Have you tracked the output of the swizzling process? Does -X show what is then fed into the compiler plugin in the forked lifecycle?

- Brett

On 03/02/2009, at 3:26 PM, Nick Pellow wrote:

Will the filtering be applied to the artifacts resolved by the maven-compiler-plugin, and the maven-surefire-plugin?

My understanding is that:
1) the maven-clover2-plugin creates a classified artifact with the -clover classifier. it also looks for -clover classified artifacts of project dependencies and sets those on the MavenProject. 2) any other plugins called as part of the build lifecycle then resolve both the classified and the non-classified versions of the same artifact 3) certain plugins assert that the classpath contains only a distinct set of classes. if more than one class is found on the classpath they fail the build.

AFAICT, the maven-clover2-plugin is setting a distinct set of artifacts on the project via: http://svn.atlassian.com/fisheye/browse/public/contrib/clover/maven-clover-plugin/trunk/src/main/java/com/atlassian/maven/plugin/clover/CloverInstrumentInternalMojo.java?r=27752#l325 .

I think however that when the classpath is built by the maven- compiler-plugin, say, it is resolving all transitive dependencies, and finding the non-classified clovered artifact.

Does this sound plausible? Should clover be swizzling dependencies transitively ?

Cheers,
Nick


On 03/02/2009, at 12:24 PM, Brett Porter wrote:

You can't modify the resolution, but you can filter the artifacts it gets from the project. There are a few utility classes for that (you'll see them used in the dependency plugin, assembly plugin for example).

- Brett

On 03/02/2009, at 12:14 PM, Nick Pellow wrote:

Thanks for the clarification, Brett.
What can the maven-clover2-plugin do to ensure that only classified artifacts are resolved if they are available?


On 03/02/2009, at 9:17 AM, Brett Porter wrote:

Yes, that's expected - artifacts with a particular classifier are considered different to artifacts with a different or no classifier.

On 02/02/2009, at 5:44 PM, Nick Pellow wrote:

Hi,

The maven-clover2-plugin creates both a classified and a normal jar artifact for each sub-module it builds. I have a problem, where I am seeing both a classified _and_ a non-classified artifact being put on the classpath under certain circumstances.
e..g

[INFO] Compiling 3 source files to target\clover\test-classes
[DEBUG] com.app:app:jar:1.0-SNAPSHOT (selected for null)
[DEBUG] com.app:app-domain:jar:clover:1.0- SNAPSHOT:compile (selected for compile)
... and ...
[DEBUG] com.app:app-mail:jar:clover:1.0- SNAPSHOT:compile (selected for compile) [DEBUG] com.app:app-domain:jar:1.0-SNAPSHOT:compile (selected for compile)

This debug output shows that both com.app:app- domain:jar:clover:1.0-SNAPSHOT and com.app:app-domain:jar: 1.0-SNAPSHOT:compile are on the compile time classpath.

Is this expected behavior? Is there something possibly misconfigured that will cause this?

Cheers,
Nick Pellow
Atlassian Clover.



--
Brett Porter
br...@apache.org
http://blogs.exist.com/bporter/


---------------------------------------------------------------------
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


--
Brett Porter
br...@apache.org
http://blogs.exist.com/bporter/


---------------------------------------------------------------------
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


--
Brett Porter
br...@apache.org
http://blogs.exist.com/bporter/


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



--
Brett Porter
br...@apache.org
http://blogs.exist.com/bporter/


---------------------------------------------------------------------
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


--
Brett Porter
br...@apache.org
http://blogs.exist.com/bporter/


---------------------------------------------------------------------
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

Reply via email to