Правильно объедините файлы данных в файл Apache NIFI .nar. - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть несколько процессоров NIFI, которые встроены в один файл NAR. Структура проекта определена org.apache.nifi:nifi-processor-bundle-archetype. Некоторые из этих процессоров полагаются на файлы данных в каталоге main / resources, которые мне нужно загружать во время выполнения, а не в базе данных или внешнем источнике. Локально все работает как положено, и модульные тесты проходят, так как ресурсы находятся в пути к классам.

Обычно я бы использовал плагин maven-assembly-для создания jar-with-dependencies, чтобы ресурсы связывались с мой JAT. Но я не могу получить тот же результат в окончательном NAR.

Какую правильную конфигурацию сборки я должен включить в родительский pom. xml (или модуль pom. xml), чтобы гарантировать ресурсы входят в мой окончательный NAR?

Главный родительский pom. xml

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-nar-bundles</artifactId>
        <version>1.9.2</version>
    </parent>

    <groupId>com.example.nifi</groupId>
    <artifactId>nifiprocessors</artifactId>
    <version>1.9.2</version>
    <packaging>pom</packaging>

    <modules>
        <module>nifi-processors</module>
        <module>nifi-nar</module>
    </modules>

</project>

nifi-processors.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.example.nifi</groupId>
        <artifactId>nifiprocessors</artifactId>
        <version>1.9.2</version>
    </parent>

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

    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

nifi-nar.pom

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.example.nifi</groupId>
        <artifactId>nifiprocessors</artifactId>
        <version>1.9.2</version>
    </parent>

    <artifactId>nifi-nar</artifactId>
    <version>1.9.2</version>
    <packaging>nar</packaging>
    <properties>
        <maven.javadoc.skip>true</maven.javadoc.skip>
        <source.skip>true</source.skip>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.example.nifi</groupId>
            <artifactId>nifi-processors</artifactId>
            <version>1.9.2</version>
        </dependency>
    </dependencies>

</project>

1 Ответ

0 голосов
/ 23 апреля 2020

Любые файлы, находящиеся в src / main / resources, попадают в Jar, созданный Maven автоматически, без использования дополнительных плагинов. Если у вас есть файл src / main / resources / foo.txt и вы создали jar, foo.txt будет находиться в root jar рядом с любыми пакетами из src / main / java.

...