maven-dependency-plugin: проблема с целью распаковки при использовании зависимости с пустым классификатором - PullRequest
0 голосов
/ 06 июня 2018

У меня есть зависимости с классификаторами, которые содержат ключи свойств заполнителей, которые могут быть переопределены через системные свойства.Значение свойства по умолчанию для каждого классификатора пусто.Например,

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

...