2013-03-16 3 views
2

У меня есть приложение Maven/Java. Часть приложения позволяет загружать некоторые документы. Вот настройка проекта.Maven Resource Filtering Breaking Загрузки

+src 
    +main 
     +resources 
      +downloads 
       MyDocument.docx 
      jdbc.properties 
pom.xml 

скачивает работать правильно, когда jdbc.properties имеет значения жёстко прописанные в них. Тем не менее, я пытаюсь обновить приложение для использования профилей Maven и указать различные подключения к базе данных для разных сред. Мне удается заставить его работать со следующим: pom.xml.

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
</build> 

Однако, даже если файл jdbc.properties получает правильно заполнен правильной информацией базы данных окружающей среды, функция загрузки перестала работать. Файл будет загружен, но когда вы попытаетесь открыть его, он скажет The file MyDocument.docx cannot be opened because there are problems with the contents..

Я попытался изменить <directory> к src/main/resources/*.properties и добавление дополнительного <resource> где я поворачиваю <filtering> ложь для src/main/resources/downloads. Но ни один подход не работал. Как я могу предотвратить фильтрацию Maven от развращения файлов?

FYI - Я заглянул в WAR, и документы не могут быть открыты там (они уже повреждены).

ответ

1

Update: Лучшее решение от https://stackoverflow.com/a/10025058/516167

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
    <encoding>UTF-8</encoding> 
    <nonFilteredFileExtensions> 
     <nonFilteredFileExtension>xls</nonFilteredFileExtension> 
    </nonFilteredFileExtensions> 
    </configuration> 
</plugin> 

Вы должны исключить файлы, такие как MyDocument.docx (* .docs) от фильтрации.

<build> 
    <resources> 
     <resource> 
     <directory>src/main/resouces</directory> 
     <filtering>true</filtering> 
     <excludes> 
      <exclude>**/*.docx</exclude> 
     </excludes> 
     </resource> 
    </resources> 
</build> 

или определить альтернативный каталог для загрузки, как:

<build> 
    <resources> 
     <resource> 
     <directory>src/main/downloads</directory> 
     </resource> 
    </resources> 
</build> 
+0

Когда я первый, есть 'NullPointerException' на моем' InputStream' для загрузки. Он был заполнен как getClass(). GetClassLoader(). GetResourceAsStream ("/ downloads/MyDocument.docx"); '. –

+0

Со вторым вариантом файлы все еще сообщаются как поврежденные. –

+0

Я также попытался добавить ' false' во второй вариант. А также переупорядочивание тегов '', но не повезло. Всегда говорю, что это коррумпировано. –