Пользовательский процессор NiFi представляет дубликаты стандартных артефактов - PullRequest
0 голосов
/ 10 июля 2020

Я написал специальный процессор для обработки многостраничных сообщений до того, как это будет введено в 1.12. Процессор и nar, которые у меня есть, работают нормально, но в пакете nar есть дубликаты многих стандартных процессоров с номером версии, совпадающим с номером версии моего пользовательского процессора.

Это начало происходить после того, как я представил SSLContextService контроллер. Добавление службы контроллера потребовало добавления

<dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-standard-services-api-nar</artifactId>
            <version>1.11.4</version>
            <type>nar</type>
</dependency>

Согласно руководству на apache nifi wiki , но завершенный nar, похоже, содержит версию "2.1.1-SNAPSHOT" стандартных процессоров nifi, таких как AttributesTo Json или PutRecord, и десятки других.

Duplicate Artifacts from Custom Processor

Excluding this dependency causes the nar build to fail as the SSLContexService class is missing. Using a provided scope builds a nar of approximately the same size, which then causes NiFi to fail to start (so far I haven't found an error message telling my why, it just dies at startup).

Does anyone know how to stop these duplicates being created? The whole nar pom is;

 4.0.0   com.jontia  PostMultipartFormData  2.1.1-SNAPSHOT   nifi-multipart-nar  2.1.1-SNAPSHOT  nar  правда правда   com.jontia  nifi-multipart-processors  2.1.1-SNAPSHOT    org . apache .nifi  nifi-standard-services-api-nar  1.11.4  nar     

Процессор POM;

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.jontia</groupId>
        <artifactId>PostMultipartFormData</artifactId>
        <version>2.1.1-SNAPSHOT</version>
    </parent>

    <artifactId>nifi-multipart-processors</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-utils</artifactId>
            <version>1.11.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-ssl-context-service-api</artifactId>
            <version>1.11.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-proxy-configuration-api</artifactId>
            <version>1.11.4</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.nifi/nifi-processor-utils -->
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-processor-utils</artifactId>
            <version>1.11.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-standard-processors</artifactId>
            <version>1.11.4</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.9</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.11</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.12</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.nifi</groupId>
            <artifactId>nifi-mock</artifactId>
            <version>1.11.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>
</project>

1 Ответ

2 голосов
/ 10 июля 2020

Процессоры pom. xml зависят от стандартных процессоров nifi:

<dependency>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi-standard-processors</artifactId>
    <version>1.11.4</version>
</dependency>

Итак, когда ваш NAR собран, он извлекает JAR стандартных процессоров, поэтому теперь все они связаны снова в вашем NAR, а также в стандартном NAR.

Вы не должны зависеть от стандартных процессоров. Если там есть какой-то код, который вам нужен, его следует реорганизовать в какой-то тип многоразового общего модуля, или если вы пытаетесь расширить процессор, вы действительно должны просто скопировать его в свой NAR и внести все необходимые изменения.

...