I'm pretty new to maven, so this may be an obvious question to those
with more experience. I have looked through all the docs however, and
am unable to resolve it, and would appreciate any help/information.
I am using maven2 (2.0.1) and am trying to get the cobertura plugin to
work. I am able to run cobertura under ant, but not with maven2.
Our build directory uses maven modules. It's structure is like this:
main/
main/pom.xml (which has module declarations for core, etc)
main/core/
main/core/pom.xml (which has some additional dependencies for core classes)
<etc>
The pom.xml in the main level produces no artifacts. The main
directory has no classes just has a few subdirectories. The
subdirectories have the classes, resources, and unit tests. The
main-level pom.xml has the surefire plugin, which is working fine
traversing the subdirectories.
Here are the details for my cobertura attempts. Any help is
appreciated:
1. Version from the svn sandbox (which uses cobertura 1.7), and
specifies the instrument goal in the lifecycle.xml file as part of the
process-classes phases:
a) When I call "mvn install", which should trigger the
instrumentation goal, nothing happens. It looks like
instrumentation is not attempted
b) When I call "mvn site", I get this null-pointer exception (which I think
is because the target/generated-classes directory was never produced from the
mvn install):
[INFO] task-segment: [site]
[INFO] -------------------------------------------------------------------------
---
[INFO] Preparing surefire-report:report
[INFO] No goals needed for project - skipping
[INFO] Preparing cobertura:cobertura
[INFO] -------------------------------------------------------------------------
---
[ERROR] FATAL ERROR
[INFO] -------------------------------------------------------------------------
---
[INFO] null
[INFO] -------------------------------------------------------------------------
---
[INFO] Trace
java.lang.NullPointerException
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptor
(DefaultLifecycleExecutor.java:884)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecy
cle(DefaultLifecycleExecutor.java:842)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(Def
aultLifecycleExecutor.java:729)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:521)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
<etc>
c) When I try to call the instrument target directly, I get a
"BUILD ERROR" that says "Unable to prepare instrumentation
directory. Source directory doesn't exist". The
target/generated-classes/cobertura directory is created so I can
tell that it did try to instrument
2. Version from the maven auto-download. This one uses cobertura 1.6,
and specifies instrumentation as part of the generate-sources phase
(which I don't think is correct):
a) When I call "mvn install", which should trigger the
instrumentation goal, nothing happens as with the sandbox version.
b) When I call "mvn site", I get an error that the cobertura.ser
file doesn't exist (which it doesn't because the install did
nothing)
c) When I try to call the instrument target directly, I get this
error:
[INFO] Trace
java.lang.IllegalStateException: basedir C:<etc>\target\classes does not exist
at org.codehaus.plexus.util.DirectoryScanner.scan(DirectoryScanner.java:
542)
at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1402)
at org.codehaus.plexus.util.FileUtils.getFileNames(FileUtils.java:1368)
at org.codehaus.mojo.cobertura.tasks.InstrumentTask.execute(InstrumentTa
sk.java:97)
at org.codehaus.mojo.cobertura.CoberturaInstrumentMojo.execute(Cobertura
InstrumentMojo.java:91)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:432)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:530)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandalone
Goal(DefaultLifecycleExecutor.java:485)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:455)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:303)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
<etc>
3. Here is the top-level pom.xml file contents (with a little bit
blanked out). (I've also tried the plugin tag under build to have
the
<executions><execution><goals><goal>clean</goal></goals></execution></executions>
but that didn't seem to affect anything)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyId</groupId>
<artifactId>MyArtifact</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>Field Equipment Simulator</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.1</version>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- plugins -->
</dependencies>
<modules>
<module>MyModule1</module>
<module>MyModule2</module>
<module>MyModule3</module>
<module>MyModule4</module>
<module>MyModule5</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.0-beta-4</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>surefire-report-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<!--
<configuration>
<outputDirectory>${project.build.directory}/site</outputDirectory>
<reportsDirecotry>${project.build.directory}/surefire-reports</reportsDirecotry>
</configuration>
-->
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>MyLocalRepository</id>
<name>MyLocaalRepositoryName</name>
<url>http://MyLocalRepositoryUrl</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>snapshot</id>
<name>Maven Snapshot Repository</name>
<layout>default</layout>
<url>http://snapshots.maven.codehaus.org/maven2/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<developers>
<developer>
<name>MyDeveloper</name>
</developer>
</developers>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]