嘗試使用配置文件,並且僅在該配置文件中擁有依賴性和陰影。例如:
<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。
依賴於此的其他項目可以根據需要依賴陰影或無陰影的工件,因爲您正在使用分類器來生成兩者。
然後修復你的錯誤。老實說,越簡單越好。使用配置文件將起作用,但它會使所有事情都比需要的更復雜。避免解決方法。讓你的生活變得輕鬆。 – Tunaki
這不是你可以「修復」的東西。這兩個罐子內含有固有的互斥配置。其中一個要發佈的二進制文件需要特定的配置,另一個需要另一個。配置文件是解決方案,而不是解決方法。 –