【问题标题】:Maven shading plugin running twiceMaven 着色插件运行两次
【发布时间】:2016-03-06 10:02:42
【问题描述】:

我的问题是 maven-shade-plugin 似乎在我的项目上运行了两次。

我的 parent-pom 文件在这里:http://pastebin.com/EsYaCbzJ(在这里发布太长了)

给我带来麻烦的项目(好吧,在这种情况下是模块)的 pom 在这里:http://pastebin.com/jdyGXGpL

我正在尝试在 MySQL jdbc 驱动程序中隐藏。

这是我希望使用的 pom.xml 中的块。

<build>
....
  <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>
        <configuration>
          <shadedArtifactAttached>true</shadedArtifactAttached>
          <createDependencyReducedPom>false</createDependencyReducedPom>
          <relocations>
            <relocation>
              <pattern>mysql</pattern>
              <shadedPattern>mysql.shaded</shadedPattern>
            </relocation>
          </relocations>
          <artifactSet>
            <excludes>
              <exclude>com.fakeneth.mydynamicsql:mydynamicsql-core</exclude>
              <exclude>junit:junit</exclude>
            </excludes>
          </artifactSet>
        </configuration>
      </execution>
    </executions>
  </plugin> 
...
</build>

现在,当我尝试构建项目时,会出现(或似乎会出现)问题。我使用与 pom.xml 中所见的没有什么不同来构建它。

由于某种原因,以下几行显示了两次,彼此稍晚一点;

[INFO] --- maven-shade-plugin:2.4.3:shade (默认) @ mydynamicsql-standalone ---

[INFO] 从阴影 jar 中排除 com.fakeneth.mydynamicsql:mysql-core:jar:0.0.1-SNAPSHOT。

[INFO] 在阴影 jar 中包含 mysql:mysql-connector-java:jar:5.1.38。

[INFO] 附加着色伪影。

下面一行也连续显示两次;

[INFO] Installing C:\Users\cneth_000\Documents\EclipseWorkspace\mydynamicsql-parent\mydynamicsql-standalone\target\mydynamicsql-standalone-0.0.1-SNAPSHOT-shaded.jar to C:\Users\cneth_000\.m2\repository\com\fakeneth\mydynamicsql\mydynamicsql-standalone\0.0.1-SNAPSHOT\mydynamicsql-standalone-0.0.1-SNAPSHOT-shaded.jar

这是构建此项目时打印的完整日志:http://pastebin.com/L3RQaUvv

这是预期的行为吗?谢谢

【问题讨论】:

  • maven-jar-plugin 运行了两次,它看起来配置错误,因为它产生了一个没有版本的工件,我假设还有其他配置。
  • @khmarbaise 我不知道这是否是问题所在。当我添加的只是&lt;packaging&gt;jar&lt;/packaging&gt; 时,我怎么会错误地配置它?
  • 可能基于父pom?
  • @khmarbaise 除了“pom”包装风格之外,父 pom 没有任何不同。那和编译器插件完全不同
  • 请出示完整的 pom 而不仅仅是摘录,否则无法提供帮助

标签: maven maven-shade-plugin


【解决方案1】:

我解决了我的问题。

当我构建我的项目时,我正在构建我的父项目。事实证明,单独构建每个模块不会导致我的所有插件执行两次。由于某种原因,构建父项目导致每个模块被构建两次。

【讨论】:

  • 我可以告诉你为什么在你的父 pom 中这样做:&lt;defaultGoal&gt;clean package install&lt;/defaultGoal&gt;。使用clean packagemvn install 而不是mvn package install 这没有意义,因为nstall 运行的所有生命周期阶段都已经使用package 运行(除了安装阶段...BTW: Don't define things like src/ main/java` 因为这是默认值...此外&lt;testSourceDirectory&gt;src/test/java&lt;/testSourceDirectory&gt; 这也是默认值所以不要定义它...
猜你喜欢
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2016-09-22
  • 2022-11-03
相关资源
最近更新 更多