2016-03-04 43 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