Как заставить maven распаковывать перезаписывать файлы только для чтения? - PullRequest
0 голосов
/ 10 июля 2020

Моя сборка maven использует unpack для извлечения некоторых пакетов, таких как zulu или postgres, которые содержат файлы только для чтения (например, -r-xr-xr-x pgsql / lib / libssl.so.1.0.0). При повторной сборке [WARNING] Unable to expand to file .../pgsql/lib/libssl.so.1.0.0 указывает, что файл не перезаписан - и это нормально, если я не переключаю версии (я бы все равно предпочел не получать предупреждения).

Но как Могу ли я получить распаковку, чтобы перезаписать файлы, например, если я переключусь на более новую версию postgres? Или, если это слишком сложно, всегда перезаписывать файлы?

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

Я также предпочел бы, чтобы файлы только для чтения были доступны только для чтения, если у владельцев пакетов была причина.

На https://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html Я нашел <overWriteIfNewer> который по умолчанию истинно. Поскольку моя сборка всегда пытается перезаписать файлы, я думаю, что overWrite в целом верна, но это просто не удается.

Для справки, вот соответствующая часть моего pom. xml

                        <id>unpack</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.postgresql</groupId>
                                    <artifactId>${postgresql.artifactId}</artifactId>
                                    <version>${postgresql.3rdparty.version}</version>
                                    <classifier>binaries</classifier>
                                    <type>tar.gz</type>
                                    <outputDirectory>${postgresql.install.folder}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>

1 Ответ

0 голосов
/ 16 июля 2020

Ну, хотя это не совсем ответ на проблему, я обнаружил, что текущее поведение связано с тем, что Plexus Archiver просто перезаписывает файл, не удаляя его, если он существует. Это означает, что расширение maven unpack плохо обрабатывает пакеты, содержащие файлы только для чтения. Мне нужно очищать целевую папку и извлекать пакеты при каждой (пере) сборке.

...