Maven依赖插件:复制依赖项:排除单个构件

8
我需要从maven-depencency-plugin:copy-dependencies中排除单个工件。
在文档上:https://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html,我找到了两个有趣的选项: excludeArtifactIds将排除与给定artifact-id匹配的所有工件(group-id通配符); excludeGroupIds将排除与给定group-id匹配的所有工件(artifact-id通配符)。
如果给定工件的group-id或artifact-id是唯一的,那么这将起作用。是否可能在不使用通配符的情况下排除单个工件?

为什么需要复制依赖项? - khmarbaise
1
@khmarbaise,这对帮助 OP 有什么重要作用? - kjsmita6
1个回答

12
你可以通过使用两个execution部分来实现这一点。
假设你有以下依赖:
javax.mail:mailapi
javax.mail:mail
sun-javamail:mail
org.jdom:jdom2

如果你只想要排除 javax.mail:mail,而该库的groupId和artifactId与其他库相同,则可以使用以下方法:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <!--include all in group apart from one-->
                    <configuration>
                        <excludeArtifactIds>mail</excludeArtifactIds>
                        <includeGroupIds>javax.mail</includeGroupIds>
                    </configuration>
                </execution>
                <execution>
                    <id>copy-dependencies2</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <!--include all other dependencies-->
                    <configuration>
                        <excludeGroupIds>javax.mail</excludeGroupIds>
                    </configuration>
                </execution>                    
            </executions>                
        </plugin>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接