Maven资源/兄弟模块

时间:2013-09-25 08:49:44

标签: java maven intellij-idea classpath

我在兄弟模块中遇到了一些测试问题。

我在资源/:sql / statements中的模块1中有以下文件夹 该文件夹中的所有文件都加载了以下代码:

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为兄弟模块
  • 在带有xml文件的模块中的intellij内部
  • 在带有xml文件的模块中使用maven clean install

但由于某些原因,当我在兄弟模块的测试中引用此类时,当我从命令行运行clean install时,它无法找到xml文件。

我该如何解决这个问题?

编辑:当它失败时,它打印下面的url路径,看起来没问题(?): 网址:jar:file:/home/<user>/.m2/repository/<path>/1.0.0/<jar-name>1.0.0.jar!/sql/statements

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

对于this maven doc,测试资源应存储在

src/test/resources

但您可以将参数testResources设置为与主资源相同的目录

    <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>