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

Maven shade插件不会为目标“package”自动调用

益兴生
2023-03-14

我花了很多时间研究如何调用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包”(或最终调用“包”的任何其他目标)将自动触发此插件。

但不管我怎么做,真正调用插件的唯一方法似乎是:运行“mvn package shade:shade”(这似乎违背了配置驱动构建的目的)。无论是从Eclipse内部(STS版本:3.8.2.RELEASE)还是从命令行(Apache Maven 3.3.9)运行Maven,结果都是一样的。

我错过什么了吗?

UPD:解决,见GauravJ的回答。

共有1个答案

曾骁
2023-03-14

我设法重现了你的问题。在你的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>

这可能会解决您的问题。

 类似资料:
  • 以下命令不运行我的任何测试: 而普通的旧确实如此。 我在测试中添加了这些注释: 我在这里或这里的插件文档页面上都没有看到任何相关信息

  • 当我导入此接口并尝试调用方法时,它将失败,并出现以下错误: 我已经创建了一个intellij kotlin应用程序,它的工作是正确的。是新Kotlin gradle插件的bug吗?

  • 在ASP中引入了调用视图组件作为标记助手。NET内核1.1。(请参阅“将视图组件作为标记辅助对象调用”)。但是下面只返回视图中VC部分的测试。似乎

  • 问题内容: 我想使用Mixin始终向子类添加一些初始化功能,每个子类都继承自不同的API基类。具体来说,我想制作多个不同的子类,这些子类继承自这些API提供的不同基类之一和一个Mixin,后者始终将以相同的方式执行Mixin初始化代码,而无需代码复制。但是,除非我在Child类的__init__函数中显式调用它,否则似乎永远不会调用Mixin类的__init__函数,这不理想。我建立了一个简单的测

  • 我正在制作一个小的原型插件,它每分钟都在增强mob,但这个插件并没有出现在服务器上。 插件作为jar文件导出,并放入服务器的plugins文件夹中。 非常感谢您的帮助。谢谢 我的3个脚本在这里: 主脚本: 听众: 插件。yml:

  • 我是新的scala和SBT构建文件。从入门教程中可以直接通过sbt-spark-package插件向scala项目添加spark依赖项,但我得到了以下错误: 请提供资源,以了解更多关于什么可能是驱动错误,因为我想更彻底地理解过程。 代码: 额外的解释+参考资料链接,以了解更多关于SBT构建过程、jar文件和任何其他可以帮助我跟上速度的东西!