我是 NiFi 新手,我正在尝试开发我的第一个定制处理器。
我正在关注有关如何创建一个的文档/教程,我在这里:
为nifi-processor生成maven骨架项目; (✔)
在
onTrigger(...)
方法中添加了一些简单的实现; (✔)
无法构建
.nar
。 (x)
每当我在自定义处理器项目结构的任何子目录(
mvn clean package
或nifi-artifactBaseName-nar
)或项目的根目录中执行nifi-artifactBaseName-processors
时,我都会得到:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.2.1:enforce (enforce-maven-version) on project nifi-myfirstcustomrprocessor-nar:
[ERROR] Rule 3: org.apache.maven.enforcer.rules.dependency.RequireReleaseDeps failed with message:
[ERROR] Dependencies outside of Apache NiFi must not use SNAPSHOT versions
[ERROR] com.giorgi.tutorials:nifi-myfirstcustomrprocessor-nar:nar:1.0-SNAPSHOT
[ERROR] com.giorgi.tutorials:nifi-myfirstcustomrprocessor-processors:jar:1.0-SNAPSHOT <--- is not a release dependency
我做错了什么吗?有什么帮助吗?
解决了。
创建自定义处理器项目(或任何 Maven 项目)时,默认生成版本
1.0-SNAPSHOT
(无论您是否从命令行、IDE 等创建它),这对于 NiFi 自定义处理器来说是不行的- 您不应该使用 SNAPSHOT
来对自定义处理器工件进行版本控制。
我刚刚将
1.0-SNAPSHOT
更改为 1.0
,一切正常 - .nar
已建成。
在 Java 中开发自定义 Nifi 处理器时,有一种方法可以使用快照版本号。
技巧是将以下行添加到
pom.xml
子模块内的 nifi-XXX-nar
文件中:
<enforcer.skip>true</enforcer.skip>
位于 <properties>
标签内。例如
<properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
<source.skip>true</source.skip>
<enforcer.skip>true</enforcer.skip>
</properties>