我对包含占位符属性键的分类器有依赖关系,可以通过系统属性覆盖它们。每个分类器的默认属性值为空。 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。