2013-09-25 6 views
0

У меня есть проблема с некоторыми тестами в модулях для сестер.Ресурсы Maven/в модулях sibling

Я имею следующую папку в модуле 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 для модуля sibling
  • внутри intellij в модуле с файлами xml
  • с maven чистой установкой в ​​модуле с XML-файлами

, но по какой-то причине, когда я ссылаться на этот класс в тесте на собрата модуль он не может найти файлы XML при запуске чистой установки из командной строки.

как я могу это решить?

редактировать: когда оно не удается, распечатайте follwing путь URL-адрес, который, кажется нормально (?): URL: jar:file:/home/<user>/.m2/repository/<path>/1.0.0/<jar-name>1.0.0.jar!/sql/statements

ответ

0

Проверьте ваши POM файлы: вы, вероятно, только копирование ресурсов в сборке вашего «SQL/xml ". Лучше переместите его на родительский POM, если вы хотите использовать его в модулях sibling.

+0

другой модуль имеет родственный как зависимость, я думаю, это должно быть хорошо? У родительского ПОМ нет никаких ресурсов - и я думаю, что он должен оставаться таким. – Vegard

0

Что касается this Maven документ, тестовые ресурсы должны храниться в

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

Эти ресурсы предназначены не только для тестов, я также хочу использовать их в производственном коде – Vegard

+0

@Vegard. С этой настройкой у вас будут одинаковые ресурсы в производстве и в тестах – Ilya