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