35701


Mavenを利用して、依存関係解決を行っています。  
dependencyのscopeタグに「test」を指定して、テストソースにだけ当該ライブラリの利用が許されるように設定したいのですが、コンパイルエラーとなってしまいます。  
これはほかにも設定が必要なのでしょうか。

なお、pomに記載の`<scope>test</scope>`を削除するとコンパイルが通ります。

pom.xml

[code]

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.3.9.RELEASE</version>
        <scope>test</scope>
    </dependency>
    
[/code]

上記ライブラリ利用側のクラス

[code]

    import static org.junit.Assert.*;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration; ★エラー
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; ★エラー
    
    @RunWith(SpringJUnit4ClassRunner.class) ★エラー
    @ContextConfiguration(locations = "classpath:context.xml") ★エラー
    public class HogeTest {
    
        @Test
        public void testExecute() {
            // blah blah
        }
    }
    
[/code]

  * 開発環境：Eclipse, Windows7
  * 開発言語：Java

## 追記

マルチモジュール構成になっていて、以下の状態です。  
hoge-core > hoge-app （hoge-appはhoge-coreに依存）という構成になっており、hoge-
coreのpomに上記のdependencyが記載されており、hoge-appはhoge-coreへの依存のみがpomに記載されています。  
hoge-coreのテストソースではコンパイルOKとなりhoge-appではNGとなるのです。


CC BY-SA 3.0
2017-06-19T05:08:13.730
35699
2017-06-19T05:42:31.157
2020-06-17T08:14:45.997
-1
15316
question
java eclipse maven
Maven依存関係がtestスコープの場合クラスが見つからずコンパイルエラーとなる


コンパイルエラーとなっている`HogeTest`クラスは`hoge-app`に所属するものだと質問文から読み取りました。

この理解で正しいとすると、`hoge-app`の`pom.xml`にも同様に`test`スコープで`spring-
test`の依存関係を記述する必要があります。

自モジュールの`test`スコープ依存関係は、他モジュールには影響を与えられません。  
(例えば、JUnit依存関係も同様に双方の`pom.xml`に書かれているかと思います。)


CC BY-SA 3.0
2017-06-19T05:42:31.157
35701
2017-06-19T05:42:31.157
2808
35699
answer