2016-02-22 60 views
1

我想使用Maven陰影創建陰影罐,但我還想僅在陰影罐的情況下包含特殊依賴項(不在正常的編譯依賴項中我的項目)。我怎麼去解決這個問題?Maven僅在陰影罐中包含依賴項

從我的理解,包括/排除只是白名單/黑名單,所以我不能明確強制某些東西被包含在實際的依賴列表中。

對於更多的上下文,我有一個JAR依賴關係,其中包含一個資源,我只想包含在我的一個陰影工件中,但是在類路徑中包含該jar會導致錯誤。

要清楚,我正在尋找在一個mvn package調用中生成帶有附加依賴項的陰影jar和沒有它的普通jar。

+0

然後修復你的錯誤。老實說,越簡單越好。使用配置文件將起作用,但它會使所有事情都比需要的更復雜。避免解決方法。讓你的生活變得輕鬆。 – Tunaki

+0

這不是你可以「修復」的東西。這兩個罐子內含有固有的互斥配置。其中一個要發佈的二進制文件需要特定的配置,另一個需要另一個。配置文件是解決方案,而不是解決方法。 –

回答

2

嘗試使用配置文件,並且僅在該配置文件中擁有依賴性和陰影。例如:

<profiles> 
    <profile> 
     <id>shadeProfile</id> 
     <dependencies> 
      <dependency> 
       <groupId>com.example</groupId> 
       <artifactId>some-artifact</artifactId> 
       <version>1.23</version> 
      </dependency> 
     </dependencies> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-shade-plugin</artifactId> 
        <version>2.3</version> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>shade</goal> 
          </goals> 
          <configuration> 
           <shadedClassifierName>shaded</shadedClassifierName> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

現在,當您運行mvn -PshadeProfile package它將包括神器爲你的陰影構建的一部分,並使用分類shaded新神器。通過這種方式,只需打開配置文件,您的構建就可以在沒有問題資源的情況下生成未着色的JAR,並使用該資源生成帶陰影的JAR。

依賴於此的其他項目可以根據需要依賴陰影或無陰影的工件,因爲您正在使用分類器來生成兩者。

+0

謝謝,這幾乎是我正在尋找的東西,但是有可能始終生成着色的工件,以及未着色的工件,並使陰影的工件成爲唯一包含該依賴工件的工件。即。有兩個配置文件(默認+陰影),這兩個配置文件總是得到執行? –

+0

上述問題的解決方案是使用配置文件並將其設置爲activeByDefault = true。謝謝! –

+0

很高興聽到你想出了那部分 - 不知道我會認爲這將工作。我必須記住...... – dcsohl

相關問題