Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven仅在着色Jar中包含依赖项_Java_Maven_Jar_Maven Shade Plugin - Fatal编程技术网

Java Maven仅在着色Jar中包含依赖项

Java Maven仅在着色Jar中包含依赖项,java,maven,jar,maven-shade-plugin,Java,Maven,Jar,Maven Shade Plugin,我想使用maven shade创建一个着色jar,但我还想只在着色jar中包含一个特殊的依赖项(不在我的项目的正常编译依赖项中)。我该怎么办 根据我的理解,includes/excludes只是白名单/黑名单,所以我不能明确地强制包含实际依赖项列表中没有包含的内容 对于更多的上下文,我有一个JAR依赖项,它包含一个资源,我只想包含在我的一个shade工件中,但是如果在类路径上有这个JAR,则会导致错误 为了清楚起见,我希望在一个mvn包调用中生成一个带附加依赖项的着色jar和一个不带附加依赖项的

我想使用maven shade创建一个着色jar,但我还想只在着色jar中包含一个特殊的依赖项(不在我的项目的正常编译依赖项中)。我该怎么办

根据我的理解,includes/excludes只是白名单/黑名单,所以我不能明确地强制包含实际依赖项列表中没有包含的内容

对于更多的上下文,我有一个JAR依赖项,它包含一个资源,我只想包含在我的一个shade工件中,但是如果在类路径上有这个JAR,则会导致错误


为了清楚起见,我希望在一个
mvn包调用中生成一个带附加依赖项的着色jar和一个不带附加依赖项的普通jar。

尝试使用一个配置文件,并且仅在该配置文件中使用依赖项和着色。例如:

<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>

阴影轮廓
com.example
一些人工制品
1.23
org.apache.maven.plugins
maven阴影插件
2.3
包裹
阴凉处
遮住的
现在,当您运行
mvn-PshadeProfile包时,它将把工件作为着色构建的一部分,并对新工件使用分类器
shaded
。通过这种方式,您的构建只需打开概要文件,就可以在没有问题资源的情况下生成未着色的JAR,并生成带有该资源的着色JAR


依赖于此的其他项目可以依赖于着色或非着色工件(视情况而定),因为您正在使用分类器生成两者。

然后修复错误。老实说,越简单越好。使用配置文件会起作用,但会使一切变得比需要的更复杂。避免变通办法。让你的生活变得轻松。这不是你能“解决”的事情。这两个JAR中包含的配置本质上是互斥的。一个要发布的二进制文件需要特定的配置,另一个需要另一个配置。配置文件是解决方案,而不是解决方法。谢谢,这正是我所寻找的,但是否有可能始终生成着色工件,以及未着色工件,并使着色工件成为唯一包含该依赖项的工件。例如,有两个配置文件(默认+阴影),它们总是被执行?我上面问题的解决方案是使用配置文件并将其设置为activeByDefault=true。谢谢很高兴听到你明白了这一点-我不确定我会不会想到这会起作用。我必须记住。。。