maven-dependency-plugin: проблема с целью распаковки при использовании зависимости с пустым классификатором
У меня есть зависимости с классификаторами, которые содержат ключи свойств заполнителей, которые могут быть переопределены через системные свойства. Значение свойства по умолчанию для каждого классификатора пустое. Например
<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>
Тем не менее, плагин зависимости не может распаковать файл, потому что он не находит его. Я отладил код плагина, и кажется, что сравнение в ProjectTrasivityFilter
между объектом артефакта maven и артефактами прямых зависимостей не совпадают, так как 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
оно работает. Но все еще не уверен, является ли это ошибкой или нет.