无法使用 maven-assembly-plugin 设置最终的 jar 名称

Posted

技术标签:

【中文标题】无法使用 maven-assembly-plugin 设置最终的 jar 名称【英文标题】:Can not set the final jar name with maven-assembly-plugin 【发布时间】:2014-01-08 22:24:02 【问题描述】:

这就是我配置maven-assembly-plugin的方式

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <finalName>myapp</finalName>
        <archive>
            <manifest>
                <mainClass>com.myapp.Main</mainClass>
            </manifest>
        </archive>
        <!--
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        -->
    </configuration>
</plugin>

我希望最终的 jar 文件应该是 myapp.jar 但它最终会是 myapp-jar-with-dependencies.jar

您能告诉我如何配置以将"jar-with-dependencies" 排除在最终名称之外吗?

【问题讨论】:

【参考方案1】:

您可以指定finalName 属性为jar 指定您想要的名称,并指定appendAssemblyId 应为false 以避免jar-with-dependencies 后缀。 下面的配置会输出一个名为test.jar的jar

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <finalName>test</finalName>
                <archive>
                    <manifest>
                        <mainClass>com.myapp.Main</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
               <appendAssemblyId>false</appendAssemblyId>
            </configuration>
         </plugin>

【讨论】:

你也应该取消注释&lt;descriptorRefs&gt;的东西,否则你会得到类似的东西:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:attached (default) on project ...: Error reading assemblies: No assembly descriptors found. 优秀&lt;appendAssemblyId&gt;false&lt;/appendAssemblyId&gt;这行是必须的。 但这会产生[WARNING] Configuration options: 'appendAssemblyId' is set to false, and 'classifier' is missing 这里是实际的按记录工作更改。 svn.apache.org/viewvc?view=revision&revision=1754566,在issues.apache.org/jira/browse/MASSEMBLY-824中引用(链接在我之前的评论中)。 例如,所描述的解决方案不适用于插件 v2.4 或 v2.2.2。使用 Maven 3.3.9 测试。此外,似乎在 3.x 中完全删除了设置结果装配工件名称的可能性 - 请参阅How to set final jar name with maven-assembly-plugin version 3。总而言之,这个 maven 插件非常令人困惑。

以上是关于无法使用 maven-assembly-plugin 设置最终的 jar 名称的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

LINUX下的mail\mailx为啥无法使用外部SMTP发邮件