maven-dependency-plugin:在使用带有空分类器的依赖时解压缩目标的问题

时间:2018-06-06 13:46:44

标签: maven maven-dependency-plugin

我对包含占位符属性键的分类器有依赖关系,可以通过系统属性覆盖它们。每个分类器的默认属性值为空。 E.g。

<properties>
   <branch.classifier></branch.classifier>
</properties>

<dependency>
        <groupId>de.example</groupId>
        <artifactId>example</artifactId>
        <version>0.0.1</version>
        <classifier>${branch.classifier}</classifier>
</dependency>

此外,我想解压缩依赖关系并将一些资源复制到特定的输出目录中。

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>unpack-dependencies</goal>
                    </goals>
                    <configuration>
                        <includeGroupIds>${project.groupId}</includeGroupIds>
                        <includeArtifactIds>my-dpendency</includeArtifactIds>
                        <includeClassifiers>${branch.classifier}</includeClassifiers>
                        <excludeTransitive>true</excludeTransitive>
                        <overWrite>true</overWrite>
                        <outputDirectory>${project.build.directory}/${project.artifactId}/conf</outputDirectory>
                        <includes>myfile.txt</includes>
                        <overWriteReleases>true</overWriteReleases>
                        <overWriteSnapshots>true</overWriteSnapshots>
                    </configuration>
                </execution>
 </plugin>

但是,依赖插件无法解压缩文件,因为它找不到它。我调试了插件代码,似乎maven的工件对象和直接依赖项工件之间ProjectTrasivityFilter的比较不匹配,因为maven将空分类器作为空值和插件处理将分类器设置为空字符串。这是有问题的代码:

public boolean artifactIsADirectDependency( Artifact artifact )
{
    for ( Artifact dependency : this.directDependencies )
    {
        if ( dependency.equals( artifact ) ) //condition returns false since "" not equals null
        {
            return true;
        }
    }
    return false;
}

这是插件中的错误,是否有人有解决方法?如果没有,我该如何解决这个问题?

更新:好的,我找到了解决方案。如果我将插件的excludeTransitive属性设置为false则可行。但仍不确定这是不是一个bug。

0 个答案:

没有答案