2013-09-25 68 views
0

我在兄弟模块中有一些测试问题。Maven资源/在兄弟模块中

我有资源在模块1以下文件夹/:SQL /语句该文件夹中 的所有文件被加载用下面的代码:

URL url = this.getClass().getClassLoader().getResource("sql/statements"); 
assert url != null; 
Collection<File> files = FileUtils.listFiles(new File(url.getPath()), 
    FileFilterUtils.suffixFileFilter("sql.xml"), TrueFileFilter.INSTANCE); 

这工作得很好:

  • intellij里面为兄弟模块
  • intellij里面带有xml文件的模块
  • 用maven干净的安装在模块里与XML文件

但由于某些原因,当我在同级测试中引用这个类模块是无法找到的XML文件,当我运行清理命令行安装。

我该如何解决这个问题?

编辑:当它失败,打印如下网址路径,这似乎OK(?): 网址:jar:file:/home/<user>/.m2/repository/<path>/1.0.0/<jar-name>1.0.0.jar!/sql/statements

回答

0

检查您的POM文件:你可能只是复制的资源,你的“SQL的构建/ xml“模块。如果你想在兄弟模块中使用它,最好将它移动到父POM。

+0

其他模块有兄弟设置参数testResources到同一目录作为依赖,我想这应该是好的?母公司POM没有任何资源 - 我认为它应该保持这种状态。 – Vegard

0

至于this Maven的文档,测试资源应存放在

src/test/resources 

但是你可以为主要资源

<build> 
     <testResources> 
      <testResource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </testResource> 
     <testResources> 
     <resources> <!-- this is default setting --> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
+0

这些资源不仅用于测试,我想在生产代码中使用它们 – Vegard

+0

@Vegard我明白。使用此设置,您将在生产和测试中拥有相同的资源 – Ilya