当前位置: 首页 > 知识库问答 >
问题:

将jar工件部署到Nexus会导致内容类型不匹配

钱展
2023-03-14

我使用的是Nexus Repository Manager V3.1.0-04。当我尝试mvn deploy一个jar工件到我的存储库时,我遇到了以下问题。

我认为这可能与nexus-staging-maven-plugin(链接)的版本有关,但即使我将版本设置为1.6.8(最新),也会得到相同的效果。这篇文章建议使用build-helper-maven-plugin,因此我修改了我的pom.xml如下。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
        <id>attach-artifacts</id>
        <phase>package</phase>
        <goals>
            <goal>attach-artifact</goal>
        </goals>
        <configuration>
            <artifacts>
            <artifact>
                <file>target/${artifactId}-${version}.jar</file>
                <type>jar</type>
            </artifact>
            </artifacts>
        </configuration>
        </execution>
    </executions>
</plugin>

然而,我现在看到了一个不同的问题。

[错误]无法在项目上执行目标org.codehaus.mojo:build-helper-maven-plugin:3.0.0:attach-artifacts(attach-artifacts)rest-service:执行目标org.codehaus.mojo:build-helper-maven-plugin:3.0.0:attach-artifact失败:对于工件{com.xyz:rest-service:0.0.1-snapshot:jar}:附加的工件必须具有与其对应的主工件不同的ID。->[帮助1]

共有1个答案

权浩阔
2023-03-14

在所讨论的存储库的设置中(错误消息中的URL提到了“快照”存储库),存储部分:禁用严格的内容类型验证设置。该设置的描述是:验证上载到此存储库的所有内容都是适合存储库格式的MIME类型

要回答第二个问题,为什么:在编辑器中加载JAR文件。您可能会看到一个shell脚本头(Bash)。在这种情况下,JAR文件是一个“可执行的JAR”,shell脚本头是一个来自Spring Boot的启动脚本。因为这个Nexus会错误地将文件检测为shell脚本。

示例:

#!/bin/bash
#
#    .   ____          _            __ _ _
#   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
#  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#    '  |____| .__|_| |_|_| |_\__, | / / / /
#   =========|_|==============|___/=/_/_/_/
#   :: Spring Boot Startup Script ::
#
# ... etc
 类似资料:
  • 我的名为“TestProject”的Java/Maven项目与我的jenkins and nexus repo挂钩: 我的pom.xml看起来是: 正如预期的那样,jenkins将工件上传到Nexus,看看jenkins build的控制台输出,如下所示: 问题是: 如果我在pom.xml中指定的版本是

  • 主要内容:使用 Maven 部署构件到 Nexus ,手动上传构件如果仅仅是为了代理远程的公共仓库,那么 Nexus 的代理仓库就完全能够满足需要,但是我们知道,Nexus 除了代理仓库外,还有另一种仓库:宿主仓库。 宿主仓库的主要作用是存储公司或组织内部的构件,以及一些无法从公共仓库获取的第三方构件(JDBC 驱动),供用户下载使用。用户可以通过配置 Maven 将构件自动部署到 Nexus 宿主仓库,也可以在 Nexus 界面手动上传构件。 使用 Maven

  • 我正在使用Jenkins的Nexus插件向Nexus发布一个应用程序。我正在尝试让管道发布快照版本。 我查看了Nexus中的.xml并将其复制到之前没有这个.xml文件的repo中,然后再次尝试。相同的错误消息。我删除了Nexus中的快照文件夹,然后再试一次,同样的错误。我尝试更新快照版本号,同样的错误。我在Nexus没有访问任何配置的权限,而且这是我第一次在Jenkins周围。pom中的组、工件

  • 我试图将工件部署到nexus。当我尝试使用本地机器时,它工作正常。但是当我尝试在另一台机器中使用nexus时,它会抛出错误。 我已经配置了

  • 问题内容: 我正在编写一个测试程序,如下所示: 当用户单击按钮A时,它将打开50个JFrame。 当用户单击按钮B时,它将放置所有通过单击按钮A显示的JFrame。 我发现单击按钮B后内存不会减少。我使用任务管理器(在Windows中为+ + ,并检查“ java”的内存使用情况)确定了这一点。 问题答案: 是的,没有办法,无法解决(不仅在Java PL中), 1)实际上,不要在运行时/运行时创建

  • 问题内容: 我有一个在Jenkins中运行的多模块Maven项目。我想将最终的工件(程序集构建中的RPM)部署到Nexus服务器。我认为没有理由部署中间工件(因此没有“ mvn clean deploy”),因为这会在服务器上产生我不需要的额外垃圾。我们正在尝试建立一个持续交付管道,因此我们从未部署过SNAPSHOT版本。Jenkins的各种插件似乎都专注于部署所有工件。我该如何部署自己选择的那个