Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven pluginManagement会干扰shade插件_Maven_Maven Shade Plugin_Uberjar - Fatal编程技术网

Maven pluginManagement会干扰shade插件

Maven pluginManagement会干扰shade插件,maven,maven-shade-plugin,uberjar,Maven,Maven Shade Plugin,Uberjar,刚开始与马文为真;马上得到一个大惊喜 我理解(或者我认为我理解)胖罐/优步罐的概念。将代码与所有依赖项打包,等等。maven shade plugin,找到文档,举个例子,检查它是否有效。现在将它添加到我的POC项目中,它来自maven原型快速启动-有什么可能出错,嗯 简而言之,quickstart按以下方式安排: <build> <pluginManagement><!-- lock down plugins versions to avoid using

刚开始与马文为真;马上得到一个大惊喜

我理解(或者我认为我理解)胖罐/优步罐的概念。将代码与所有依赖项打包,等等。
maven shade plugin
,找到文档,举个例子,检查它是否有效。现在将它添加到我的POC项目中,它来自maven原型快速启动-有什么可能出错,嗯

简而言之,quickstart按以下方式安排:

<build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
         <plugin>
          ...

...
因此,我刚刚添加了一个着色插件,准备结束这一天:

<!-- Maven Shade Plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <!-- Run shade goal on package phase -->
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>

org.apache.maven.plugins
unshade
是坏分支,master是好分支)

谈论违反最小意外原则的行为,呃=) 有人能解释一下发生了什么事吗?生成的pom中的注释提到了一些关于父pom的内容,但我还没有对多pom设置进行任何操作。

中描述了角色:

插件管理包含插件元素的方式与[插件]基本相同,不同之处在于它不是为这个特定的项目构建配置插件信息,而是配置从这个项目构建继承的项目构建

在由原型生成的项目中,它的目标是设置默认插件的指定版本(
maven clean plugin
maven jar plugin
,…)。请注意,这些默认插件不会出现在POM
部分中,但它们是隐式声明的(您可以通过运行
mvn help:effective POM
来检查)

但是向
部分添加插件不会使项目调用该插件。在这里,您可以设置配置和您想要使用的插件版本。要调用插件,您必须在
部分声明它

在一些项目中(大多数情况下是多模块项目),您可以看到在父POM的
中声明的插件及其配置,然后在需要调用该插件的模块的
部分中引用:因此,您不必在每个模块上重复相同的配置

如果您想使用POM继承,则主要使用
。否则,对于简单的项目,您可以在
部分中声明它们。我还看到一些项目在
中定义了所有配置,只是为了使
部分更短、更可读,如下面的示例所示。这只是品味的问题

<build>
    <!-- pluginManagement section : set versions and configurations -->
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <!-- Run shade goal on package phase -->
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
              </plugin>
        </plugins>
    </pluginManagement>

    <!-- plugins section : plugins that are invoked when building the project -->
    <plugins>
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins

也许我不明白你所说的“请注意,这些默认插件不会出现在您的POM部分”-但我的pomm从generator中出来时,确实明确声明了所有这些插件:谢谢,伙计,我过了一会儿就收到了。有点像是声明要使用的插件,而第节是告诉它们运行的。让我困惑的是,pluginmanagement内部也存在漏洞;删除该选项会完全改变其中的含义=)