我正在尝试为 Android 项目生成带有 maven-assembly-plugin 的 .zip 工件。如何设置 maven 程序集插件以使用 deflate 压缩?
更长的解释问题:该工件应该只包含 .apk,它是由 android maven 插件生成的(是的,我知道 .apk 实际上是一个 .zip 文件本身,但我们的自动化团队需要这个 apk 以 zip 格式打包) .
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>package.MessageReceiver</mainClass>
</manifest>
</archive>
<descriptors>
<descriptor>assembly_zip.xml</descriptor>
</descriptors>
<archiverConfig>
<compress>true</compress>
</archiverConfig>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
组装配置:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>automation</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<file>
<source>target/${project.build.finalName}.apk</source>
<outputDirectory>.</outputDirectory>
<filtered>false</filtered>
</file>
</files>
</assembly>
- .apk 生成
- .zip 文件已创建
- .zip 文件包含 .apk
不工作的是包装。事实证明,当插件创建 zip 文件时,它只是将文件放在 zip 容器中,而不使用任何压缩。在 mac 上,标准的“unzip -o [archive]”生成“extracting:file”输出,而不是“inflating:file”输出(这是在我使用 mac 的标准打包工具创建 zip 时编写的)。所以自动化工具找不到压缩的.apk(我知道,这很愚蠢,但让我们把它当作一个约束)。