【问题标题】:Maven shade plugin is not called automatically for goal "package"目标“包”不会自动调用 Maven 阴影插件
【发布时间】:2017-02-13 16:09:16
【问题描述】:

我花了很多时间弄清楚如何调用 Maven shade 插件来构建一个 uber-jar(包含所有依赖项)。 我发现的大多数 google 信息(包括大量示例和 Maven 文档)表明我所要做的就是将插件包含到 pom.xml 中:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
         </plugin>

然后“mvn package”(或任何其他最终调用“package”的目标)将自动触发此插件。

但无论我尝试什么 - 实际调用插件的唯一方法似乎是:运行“mvn package shade:shade”(这似乎违背了配置驱动构建的目的)。无论是从 Eclipse(STS 版本:3.8.2.RELEASE)还是从命令行(Apache Maven 3.3.9)运行 Maven,结果都相同。

我错过了什么吗?

UPD:已解决,请参阅 GauravJ 的回答。

【问题讨论】:

  • 请出示您的完整 pom 文件...我认为您的位置错误..
  • 我很乐意 - 但 pom.xml 相当大,无法在此处完整包含。您能否详细说明您认为 pom.xml 的内容可能与它位于错误的位置有关?该位置看起来很标准(Eclipse 将其放置在通常的位置,在项目根目录下)。

标签: maven plugins


【解决方案1】:

我已设法重现您的问题。在您的 pom.xml 中,您必须定义如下插件,

<build>
<pluginManagement>
  <plugins>

    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-shade-plugin</artifactId>
       <version>2.4.3</version>
       <executions>
       <execution>
            <phase>package</phase>
            <goals>
             <goal>shade</goal>
            </goals>
       </execution>
      </executions>
   </plugin>
   ....

  </plugins>
</pluginManagement>
</build>

而不是

<build>
 <plugins>
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-shade-plugin</artifactId>
       <version>2.4.3</version>
       <executions>
       <execution>
            <phase>package</phase>
            <goals>
             <goal>shade</goal>
            </goals>
       </execution>
      </executions>
   </plugin>
 </plugins>
</build>

这可能会解决您的问题。

【讨论】:

  • 绝对!但看不到这样做的选择。试图对其进行投票,但没有看到任何反映。 ?? UPD:哦 - 灰色复选框 :) UX...
  • 有趣的是在 Mac OSX 上,后者对我有用。将阴影包裹在 上不起作用。
  • 你不需要在&lt;plugins&gt;...&lt;/plugins&gt; 中包装插件吗?
  • 谢谢!!这也为我解决了。有点疯狂,这在所有关于阴影的教程中都没有提到。
  • 经过大量挠头后发现了这一点。谢谢
猜你喜欢
  • 2019-07-09
  • 1970-01-01
  • 2021-05-01
  • 2012-03-06
  • 2015-07-29
  • 1970-01-01
  • 2018-09-26
  • 2013-11-17
  • 2021-07-17
相关资源
最近更新 更多