maven test-jar:src / test / resources / file存在但无法通过测试找到

时间:2014-05-08 02:54:22

标签: java maven

我有像

这样的模块结构
external_services/pom.xml
                 ifs/pom.xml
                     src/main/java
                     src/main/java/resources
                     src/test/java
                     src/test/java/resources/sample.json
inventory/pom.xml
         ifs/pom.xml
            src/main/java
            src/main/java/resources
            src/test/java/MyTest.java

在此MyTest.java我需要获得sample.json,因为我希望在business/pom.xml之间共享,因此我添加以下内容

       <dependency>
            <groupId>com.org.my_services.external_services</groupId>
            <artifactId>ifs</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>

所以现在当我运行测试时,我看到了

file:/Users/harith/.m2/repository/com/org/my_services/external_services/ifs/1.0-SNAPSHOT/ifs-1.0-SNAPSHOT-tests.jar!/sample.json (No such file or directory)

然而,当我看到jar ifs-1.0-SNAPSHOT-tests.jar时,我在那里看到了

jar -tvf /Users/harith/.m2/repository/com/org/pryme_services/federated_services/ifs/1.0-SNAPSHOT/ifs-1.0-SNAPSHOT-tests.jar
     0 Wed May 07 09:47:36 PDT 2014 META-INF/
   131 Wed May 07 09:47:34 PDT 2014 META-INF/MANIFEST.MF
     0 Wed May 07 09:47:34 PDT 2014 com/
     0 Wed May 07 09:47:34 PDT 2014 com/org/
     0 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/
     0 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/
     0 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/
     0 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/configuration/
   892 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/configuration/DevelopmentContextConfiguration.class
   888 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/configuration/ProductionContextConfiguration.class
  2381 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/IFSClientTest.class
  1422 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/InventoryRESTClientTest.class
  1033 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/MockIfsClient$1.class
  2350 Wed May 07 09:47:34 PDT 2014 com/org/pryme_services/external_services/ifs/MockIfsClient.class
142315 Wed May 07 09:47:34 PDT 2014 sample.json   // <-- here
     0 Wed May 07 09:47:36 PDT 2014 META-INF/maven/
     0 Wed May 07 09:47:36 PDT 2014 META-INF/maven/com.org.pryme_services.federated_services/
     0 Wed May 07 09:47:36 PDT 2014 META-INF/maven/com.org.pryme_services.federated_services/ifs/
  2391 Wed May 07 09:45:36 PDT 2014 META-INF/maven/com.org.pryme_services.federated_services/ifs/pom.xml
   138 Wed May 07 09:47:34 PDT 2014 META-INF/maven/com.org.pryme_services.federated_services/ifs/pom.properties

在课堂上使用它的方式是

inventoryPriceDetails = mapper.readValue(new File(getClass().getResource("/getInventoryAndPrice.json").getPath()), new TypeReference<List<InventoryPriceDetail>>() {
            });

我不确定我缺少什么,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

有几件事:

1) external_services / pom.xml的                  IFS / pom.xml的                      的src /主/ JAVA                      的src / main / JAVA /资源                      的src /测试/ JAVA                      的src /测试/ JAVA /资源/ sample.json

但是maven期待 external_services / pom.xml的                  IFS / pom.xml的                      的src /主/ JAVA                      的src / main /资源                      的src /测试/ JAVA                      的src /测试/资源/ sample.json

&#34;资源&#34;平行于&#34; java&#34;。在你的情况下&#34;资源&#34;是一个包。

2)文件名为&#34; sample.json&#34;但是你要找&#34; getInventoryAndPrice.json&#34;

3)新文件在路径上不起作用。您需要getResourceAsStream()从jar中提取数据。    (如果您想使用路径,则需要使用nio类,而不是文件)