【问题标题】:Install über jar with maven-shaded-plugin使用 maven-shaded-plugin 安装 über jar
【发布时间】:2020-07-06 19:54:34
【问题描述】:

我一直在使用 maven 程序集插件来创建 uber jar 并部署到 Artifactory。 我切换到 maven shaded 插件来遮蔽一些依赖项。 现在我的 jar 在安装阶段没有部署。

对于他们在文档中的 Maven 程序集插件

创建程序集时,它将使用 assemblyId 作为 工件的分类器,并将创建的程序集附加到 项目,以便在安装时将其上传到存储库中 和部署阶段。

这不是阴影插件的情况。 如何配置 maven pom 来部署使用 shaded 插件创建的 Uber Jar?

【问题讨论】:

    标签: maven maven-assembly-plugin maven-shade-plugin


    【解决方案1】:

    您必须告诉maven-shade-plugin to attach 可以通过以下方式完成的阴影工件:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.2</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <shadedArtifactAttached>true</shadedArtifactAttached>
                  <shadedClassifierName>jackofall</shadedClassifierName> <!-- Any name that makes sense -->
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      ...
    </project>
    

    【讨论】:

    • 非常感谢 :) 这正是我一直在寻找的 :)
    【解决方案2】:

    我也遇到了这个问题,mvn install 会在我的目标目录中构建一个带阴影的 jar,但将非阴影的 jar 安装到我的本地 Maven 存储库。

    最终证明是我在我的 maven-shade-plugin 配置中定义了&lt;finalName&gt;。最终将阴影 jar 保存在该特定名称下,而非阴影 jar 采用默认 jar 名称,mvn install 在安装时必须查找该名称。在没有 &lt;finalName&gt; 存在的情况下,它会将阴影 jar 适当地复制到本地 Maven 存储库中。

    使用&lt;shadedArtifactAttached&gt;,我可以安装阴影 jar,但只能以 shadedClassifierName 为后缀,而非阴影 jar 以正常的工件名称存在,导致依赖于它的库获取非阴影 jar在阴影上(在这种情况下,这不是我想要的,因为我正在构建一个带有阴影的依赖关系的库)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2011-03-24
      相关资源
      最近更新 更多