我正试图实现这里发布的问题的相同目标,即将一个war依赖项组装到一个可部署的zip中,war和它的一些未打包的*.yml文件都在最后的zip中。我已经将war文件正确地组装到了zip中,但是我无法让maven依赖插件将*.yml文件从war中解压出来重新打包。
为了清楚起见,这就是我所拥有的:
下面是我的插件声明:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>unpack</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>myapp</groupId>
<artifactId>myapp-war</artifactId>
<type>war</type>
<outputDirectory>${project.build.directory}/unpack</outputDirectory>
<includes>**/*.yml</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>我还尝试了一个变体,我在<outputDirectory>和<includes>下面声明了<configuration>,这在解包mojo文档中是允许的。
在任何一种情况下,我都会得到一个空myapp-部署/目标/unpack文件夹,以及maven输出中的信息和调试消息,声明:
[INFO] Configured Artifact: myapp:myapp-war:?:war
[INFO] Unpacking /build/myapp-war/target/myapp-war-0.0.1-SNAPSHOT.war to /build/myapp-deploy/target/unpack with includes "**/*.yml" and excludes ""
[DEBUG] Found unArchiver by type: org.codehaus.plexus.archiver.zip.ZipUnArchiver$__sisu2@692a65b1
[DEBUG] Expanding: /build/myapp-war/target/myapp-war-0.0.1-SNAPSHOT.war into /build/myapp-deploy/target/unpack
[DEBUG] expand complete看来maven已经理解了我的说明,但似乎并没有像它所宣称的那样解压。知道我做错什么了吗?
发布于 2017-02-28 22:23:38
显然,创建*.war依赖关系存在问题。它首先用maven-war-plugin:war创建,然后用spring-boot-maven-plugin:repackage重新打包。从命令行解压缩war成功,但会产生警告:
$ unzip myapp-war-0.0.1-SNAPSHOT.war
Archive: myapp-war-0.0.1-SNAPSHOT.war
warning [myapp-war-0.0.1-SNAPSHOT.war]: 7318 extra bytes at beginning or within zipfile如果我将spring-boot-maven-plugin:repackage配置为禁用可执行文件 *nix启动脚本到war的前置,maven-dependency-plugin:unpack将按预期工作:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>false</executable>
</configuration>
</plugin>https://stackoverflow.com/questions/42515957
复制相似问题