尝试使用配置文件,并且仅在该配置文件中拥有依赖性和阴影。例如:
<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
这不是你可以“修复”的东西。这两个罐子内含有固有的互斥配置。其中一个要发布的二进制文件需要特定的配置,另一个需要另一个。配置文件是解决方案,而不是解决方法。 –