Mavenで決まっているディレクトリの構成を変えるのは公式サイトを見ても「推奨しない」だの「考え直せ」だの書かれているが、それでも変更しなければならない状況におちいることがあろうかと思います。例えば下図のような構成のプロジェクトで試しにMavenを使ってみたい、とか。
解決方法は幾つかありますが pom.xml だけの変更で済ませたい場合はソースがあるディレクトリを指定し、クラスパスを全て設定するしか無いのではないか。
Antみたいにフォルダ内のjarを * 指定できれば楽なのだが...
また、compile用とtest-compile用のクラスパスは別々に設定する必要があります。
<build> <sourceDirectory>src</sourceDirectory> <testSourceDirectory>test</testSourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.6</source> <target>1.6</target> <compilerArguments> <verbose /> <!-- ここでclasspathを指定するとそれまでにmavenが設定したclasspathを上書きするので注意すること --> <classpath> src;test;target/classes;WebContent/WEB-INF/lib/servlet-api.jar;WebContent/WEB-INF/lib/junit-4.11.jar;WebContent/WEB-INF/lib/mockito-all-1.9.5.jar </classpath> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.13</version> <configuration> <additionalClasspathElements> <additionalClasspathElement>WebContent/WEB-INF/lib/servlet-api.jar</additionalClasspathElement> <additionalClasspathElement>WebContent/WEB-INF/lib/junit-4.11.jar</additionalClasspathElement> <additionalClasspathElement>WebContent/WEB-INF/lib/mockito-all-1.9.5.jar</additionalClasspathElement> </additionalClasspathElements> </configuration> </plugin> </plugins> </build>
テスト可能なファイルは 20130104_SonarSettingTest.zip からダウンロードでき、
> mvn clean compile test
で Mockito を使ったサーブレットのテストまでを実行できます。
コンパイルが通らないとかいった場合は -X オプションを付けて実行するとMavenの挙動が詳細に出力されるので、何かの手がかりになるでしょう。
> mvn -X clean compile test