Можно ли сохранить разрешения для файла с ресурсами Maven: testResources? Мой пример использования - бинарный драйвер Selenium, который я помещаю в /src/test/resources, который я хотел бы использовать в своих тестах. Мой -rwxr-xr-x
, однако, изменяется на -rw-r--r--
в целевых/тестовых классах.
Сохранять разрешения на файлы с ресурсами Maven: testResources
Ответ 1
Это похоже на ошибку в Maven Resource Plugin
Если вы используете плагин Maven Assembly, вы можете настроить права доступа к файлам там.
Если нет, вы можете рассмотреть обходной путь. Вы можете сделать это через Ant, выполнив что-то вроде этого:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>process-test-classes</id>
<phase>process-test-classes</phase>
<configuration>
<target>
<chmod file="target/test-classes/test.sh" perm="755"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Ответ 2
Я добавил профиль, который активируется автоматически при запуске на машине Unix. Он запускает встроенную оболочку script для репликации файлов из всех файлов в папке рекурсивно в файлы с тем же именем в другой папке (см. Переменные SRC и DST). Для script требуется /bin/sh
, а также find
, xargs
и chmod
, которые должны существовать во всех современных системах.
<profile>
<id>unix</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>fix-resource-permissions</id>
<goals>
<goal>exec</goal>
</goals>
<phase>process-test-resources</phase>
<configuration>
<executable>/bin/sh</executable>
<arguments>
<argument>-c</argument>
<argument>
set -x
SRC="${basedir}/src/test/resources"
DST="${project.build.directory}/test-classes"
find "$$SRC" -printf "%P\0" | xargs --verbose -0 -I {} chmod --reference="$$SRC/{}" -f "$$DST/{}"
</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>