1

我试图实现与此处发布的问题相同的目标,即将战争依赖项组装到可部署的 zip 中,战争及其一些解压缩的 *.yml 文件都在最终的 zip 中。我已将战争文件正确组装到 zip 中,但我无法让 maven-dependency-plugin 将 *.yml 文件从战争中解压缩以重新打包。

为了清楚起见,这就是我所拥有的:

  • 项目一
    • 名称:myapp-war
    • 包装:战争
  • 项目 2
    • 名称:myapp-部署
    • 包装:pom
    • 依赖:myapp-war:war
    • 所需输出:myapp.zip,其中包括:
      • bin/myapp.war
      • conf/application-*.yml

这是我的插件声明的样子:

        <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>and<includes>就在 之下,根据unpack mojo docs<configuration>是允许的。

无论哪种情况,我都会得到一个空的 myapp-deploy/target/unpack 文件夹,以及 maven 输出中的 [INFO] 和 [DEBUG] 消息,说明:

[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 似乎已经理解了我的指示,但似乎并没有像它声称的那样解包。知道我做错了什么吗?

4

1 回答 1

1

创建 *.war 依赖项显然存在问题。它首先用 . 创建maven-war-plugin:war,然后用spring-boot-maven-plugin:repackage. 从命令行解压缩战争成功,但会产生警告:

$ 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 启动脚本添加到战争中,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>
于 2017-02-28T22:23:38.660 回答