【问题标题】:Maven assembly plugin zips the jar.original content and not the executable jarMaven 程序集插件压缩 jar.original 内容而不是可执行 jar
【发布时间】:2021-10-21 18:34:34
【问题描述】:

如何使用 maven-assembly-plugin 而不是原始文件(即 .jar.original

executable jar 打包为 zip

目前,在提供 maven-assembly-plugin 作为依赖项时,它会将 jar.original 打包到 zip 中。

ma​​ven-assembly-plugin定义

    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptors>
                        <descriptor>assembly.xml</descriptor>
                    </descriptors>

                    <finalName>${project.artifactId}-${project.version}</finalName>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>

assembly.xml

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

    <id>assembly-id</id>

    <formats>
        <format>zip</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <fileSets>
        <fileSet>
            <directory>./</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>**/*.yml</include>
                <include>**/RestCoordinator-1.0-SNAPSHOT.jar</include>
            </includes>
            
        </fileSet>
    </fileSets>

</assembly>

这里,RestCoordinator-1.0-SNAPSHOT.jar,是我想要的 zip 中的 jar。但是,它将 RestCoordinator-1.0-SNAPSHOT.jar.original 的内容作为 RestCoordinator-1.0-SNAPSHOT.jar 并将其压缩。

pom.xml* 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hsbc.gmmo.frtb</groupId>
    <artifactId>RestCoordinator</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>RestCoordinator</name>
    <description>Rest API to talk to FDS/Vault system</description>

    <properties>
        <java.version>1.8</java.version>
        <aws.version>1.11.818</aws.version>
        <org.json.version>20200518</org.json.version>
        <swagger.version>3.0.0</swagger.version>
        <lz4.version>1.7.0</lz4.version>
        <opencsv.version>5.0</opencsv.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-websocket</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.glassfish</groupId>
                    <artifactId>jakarta.el</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.yaml</groupId>
                    <artifactId>snakeyaml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>${aws.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.dataformat</groupId>
                    <artifactId>jackson-dataformat-cbor</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>${org.json.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.vaadin.external.google</groupId>
                    <artifactId>android-json</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.lz4</groupId>
            <artifactId>lz4-java</artifactId>
            <version>${lz4.version}</version>
        </dependency>
        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>${opencsv.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.5</version>
        </dependency>

    </dependencies>



    <build>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <!-- <exclude>**/*.properties</exclude> -->
                    <!-- <exclude>trustedterms/**</exclude> -->
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.3</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>dsnexus</serverId>
                    <nexusUrl>https://dsnexus.uk.hibm.hsbc:8081/nexus</nexusUrl>
                    <!--<stagingProfileId>ff935ee1cf3eb</stagingProfileId> -->
                </configuration>
            </plugin>

            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptors>
                        <descriptor>assembly.xml</descriptor>
                    </descriptors>

                    <finalName>${project.artifactId}-${project.version}</finalName>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>
            
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>3.7.0.1746</version>
            </plugin>
            <plugin>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>3.4.0.905</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludeDevtools>true</excludeDevtools>
                    <!-- <mainClass></mainClass> <layout>ZIP</layout> -->
                </configuration>
            </plugin>
        </plugins>
    </build>

    <distributionManagement>
        <repository>
            <uniqueVersion>false</uniqueVersion>
            <id>dsnexus</id>
            <url>https://dsnexus.uk.hibm.hsbc:8081/nexus/content/repositories/releases
            </url>
        </repository>
        <snapshotRepository>
            <id>dsnexus-snapshots</id>
            <url>https://dsnexus.uk.hibm.hsbc:8081/nexus/content/repositories/snapshots
            </url>
        </snapshotRepository>

    </distributionManagement>


</project>

【问题讨论】:

  • 您要打包什么样的应用程序? RestCoordinator 来自哪里?
  • SpringBoot application ,它是我的项目的名称。同样在 POM 中,
  • 也在 POM 中,com.hsbc.gmmo.frtbRestCoordinator1.0-SNAPSHOTRestCoordinator名称>
  • 我猜组装插件只是在spring-boot-maven-plugin 之前运行。但是,根据您提供的内容,无法确定。
  • 请显示定义 maven-assembly-plugin 的完整 pom ...

标签: java spring-boot maven maven-assembly-plugin maven-lifecycle


【解决方案1】:

spring-boot-maven-pluginmaven-assembly-plugin 之后运行。因此,在创建程序集时,还没有可用的可执行 JAR 文件。要修复执行顺序,只需将 maven-assembly-plugin 的定义移到 POM 中的 spring-boot-maven-plugin 下方即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-07
    • 2021-12-28
    • 1970-01-01
    • 2010-12-12
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多