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 оно работает. Но все еще не уверен, является ли это ошибкой или нет.

0 ответов

Другие вопросы по тегам