2016-03-04 44 views
0

我的问题是,maven-shade-plugin似乎在我的项目上运行两次。Maven着色插件运行两次

我的父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] ---行家遮阳帘插件:2.4.3:灯罩(默认)@ mydynamicsql-独立---

[INFO]不包括com.fakeneth.mydynamicsql:mydynamicsql核: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

这是预期的行为?谢谢

+1

maven-jar-plugin运行两次,它看起来配置错误,导致它产生一个没有版本的工件,我假设有其他配置。 – khmarbaise

+0

@khmarbaise我不知道这是否是问题。我怎么能错误地配置它,当我所有添加的是' jar'? –

+0

可能会基于父母? – khmarbaise

回答

0

我解决了我的问题。

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

+1

我可以告诉你为什么,因为在你的父POM:'干净的软件包安装'。这个没有意义,要么使用'clean package'或'mvn install',而不要使用'mvn package install',因为'nstall'运行的所有生命周期阶段都已经运行'package'(除了安装阶段)...顺便说一句:不要定义诸如' src/main/java之类的东西,因为这是默认的......此外' src/test/java'这也是默认值所以不要定义它... – khmarbaise