首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆包不是拆包

拆包不是拆包
EN

Stack Overflow用户
提问于 2017-02-28 18:13:54
回答 1查看 1.2K关注 0票数 1

我正试图实现这里发布的问题的相同目标,即将一个war依赖项组装到一个可部署的zip中,war和它的一些未打包的*.yml文件都在最后的zip中。我已经将war文件正确地组装到了zip中,但是我无法让maven依赖插件将*.yml文件从war中解压出来重新打包。

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

  • 项目1
    • 名称: myapp-war
    • 包装:战争

  • 项目2
    • 名称:myapp-部署
    • 包装: pom
    • 依赖:我的应用-战争:战争
    • 期望输出: myapp.zip,包括:
      • bin/myapp.war
      • conf/应用程序-*..yml

下面是我的插件声明:

代码语言:javascript
运行
复制
        <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输出中的信息和调试消息,声明:

代码语言:javascript
运行
复制
[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已经理解了我的说明,但似乎并没有像它所宣称的那样解压。知道我做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-28 22:23:38

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

代码语言:javascript
运行
复制
$ 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将按预期工作:

代码语言:javascript
运行
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42515957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档