- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直致力于创建自定义 NIFI 处理器。我正在尝试使用 luwak 搜索库,它使用 Lucene 6.5.0。然而,NiFi 库似乎使用 Lucene 4.10.4。我已经尝试了 pom 文件的各种操作,但在构建 nar 文件时无法让它覆盖 NiFi 4.10.4 lib。这很可能是用户错误。我只是一辈子都无法弄清楚它是什么。在我的 IDE 中运行良好,但是当我构建 Artifact (NAR) 时,我可以看到 4.10.4 库在那里,但不是 Luwak 需要的某些 6.5.0 库。任何帮助将不胜感激。
阅读一项研究后,我发现如果我专门将所需库的 Lucene 版本与 DependencyMangement 一起放入 pom 中,它就会起作用。还尝试了排除(也显示)。
编辑:尝试了@Rob的建议并删除了pom进口。但是,仍然遇到同样的问题。更新的 Pom 示例
Maven 依赖树:
[INFO] gov.pnnl.nifi:nifi-streamqry-nar:nar:1.3
[INFO] \- gov.pnnl.nifi:nifi-streamqry-processors:jar:1.3:compile
[INFO] \- com.github.flaxsearch:luwak:jar:1.5.0:compile
[INFO] +- org.apache.lucene:lucene-core:jar:4.10.4:compile (version managed from 6.5.0)
[INFO] +- org.apache.lucene:lucene-memory:jar:6.5.0:compile
[INFO] | \- (org.apache.lucene:lucene-core:jar:4.10.4:compile - version managed from 6.5.0; omitted for duplicate)
[INFO] +- org.apache.lucene:lucene-analyzers-common:jar:4.10.4:compile (version managed from 6.5.0)
[INFO] | \- (org.apache.lucene:lucene-core:jar:4.10.4:compile - version managed from 6.5.0; omitted for duplicate)
[INFO] +- org.apache.lucene:lucene-queries:jar:6.5.0:compile
[INFO] | \- (org.apache.lucene:lucene-core:jar:4.10.4:compile - version managed from 6.5.0; omitted for duplicate)
[INFO] \- org.apache.lucene:lucene-queryparser:jar:4.10.4:compile (version managed from 6.5.0)
[INFO] \- (org.apache.lucene:lucene-core:jar:4.10.4:compile - version managed from 6.5.0; omitted for duplicate)
POM 文件
<properties>
<lucene.group>org.apache.lucene</lucene.group>
<lucene.version>6.5.0</lucene.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
<version>6.5.0</version>
</dependency>
<dependency>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-memory</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>${lucene.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-queries -->
<dependency>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>${lucene.version}</version>
</dependency>
<dependency>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queries</artifactId>
<version>${lucene.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-utils</artifactId>
<exclusions>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-mock</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-sandbox</artifactId>
</exclusion>
</exclusions>
</dependency>
排除:
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-utils</artifactId>
<exclusions>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-mock</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
<exclusion>
<groupId>${lucene.group}</groupId>
<artifactId>lucene-sandbox</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
最佳答案
4.x lucene 版本不是通过传递依赖项引入的,因此将它们从 nifi-api 和 nifi-mock 等内容中排除不会执行任何操作。
您获得 4.x 版本的原因是您的 NAR 包根 pom 很可能有 nifi-nar-bundles 的父级,这意味着您一直继承到 NiFi 的根 pom,这导致 NiFi 的 dependencyManagement在您的 NAR 中生效。
你有两个选择...
1) 如果这是一个自定义 bundle ,将位于 NiFi 源代码树之外,那么您可以删除 bundle 和 NiFi 之间的这种关系。此处对此进行了描述:
最新的 NAR 插件是 1.2.0。
2) 如果您计划将其贡献给 NiFi,或者您正在维护自己的 NiFi 分支并希望您的 bundle 位于 nifi/nifi-nar-bundles 下,那么您应该能够完成这项工作通过在包的根 pom 中声明您自己的 dependencyManagement 部分,并声明与顶级 NiFi pom 中相同的 lucene 依赖项,并将其版本设置为 6.5.0。
NiFi 中已经有一些类似情况的示例..
例如,NiFi的顶级pom声明了特定版本的http-client,而Solr处理器需要不同的版本,因此在这里重新声明:
https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-solr-bundle/pom.xml#L43-L45
第二个选项的重要部分是,您的 dependencyManagement 部分必须位于位于处理器和 NAR 上方的 bundle 的 pom 中。
关于java - 无法覆盖来自第三方库的 Maven 依赖项 -NiFi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968224/
我有 asp.net mvc 2 应用程序。 现在我正在重新实现它以使用 Ninject .除了一件事,一切都很好:我应该在哪里存储 Ninject.dll ?? 我创建了 lib我的 appdir
我有一个使用第三方 FTP 库的类 http://ftps.codeplex.com/我想模拟它,这样我就可以只测试那个类而不是 FTP 库。我已经做到了,但对我来说感觉很乱。详细地说,该类使用 Al
我正在尝试关注 Ilya Grigoric's performance best practices通过内联关键的 css 和 js 并在以后异步加载所有其余部分。 我的问题是当我的页面需要第 3 方
我正在开发聊天应用程序。我有像 Skype 这样的聊天同步选项。假设我登录了设备 A,并且已经通过该设备进行了聊天。现在,当我当时登录设备 B 时,所有聊天记录都会同步到设备 B。 XMPP 问题 我
我在 VS2010 上有两个项目的解决方案。 主工程引用并依赖第二个,构建为静态库。第二个使用未在解决方案中构建的静态第三方库,但仅在第二个项目的链接器设置中引用。 如果我尝试生成解决方案,VS失败,
我想跟踪从另一个第 3 方库发出的对某些第 3 方库的调用。 示例:我想跟踪对库 A 的调用。我的应用程序静态链接库 B,而库 B 又静态链接到库 A。所以基本上我拥有的是 libAB.a 在动态链接
代码显示使用 -cp 触发器编译但未运行。显然,它找不到 HashMultimap。类路径问题? $ javac -cp google-collect-1.0.jar MultiThing.java
我所拥有的:我的代码(简单的 main.cpp)、第 3 方库的 header (EnvVar TPLIB_INCLUDE)、二进制库(TPLIB_BINARY_PATH 中的几个 .a 文件)和以下
我是 ionic 的新手,需要一些帮助: 我已经通过 here 中的教程实现了 chart.js 之类的东西,我真的很喜欢这个结果。 但我尝试用来自 processing 的 p5.js 做同样的事情
是否可以在 MonoTouch 中使用用 C# 编写的第 3 方库?例如,如果我需要进行图像处理并需要使用图像处理库... 或者重新表述问题:有人可以向我解释一下用 Objective-C 或 C#
我目前正在努力将一组 C++ 二进制文件升级为基于 Autotools 的更现代的东西,每个文件都使用自己的 Makefile 集。但是我不知道如何将第三方库(例如 Oracle Instant Cl
在过去的几个月里,我的学习速度一直很慢,并且很好奇 C++ 标准是否使用第 3 方库。我问这个的原因是因为 C++20 说可能的库更改将包括我被告知在 Boost ASIO 之后需要的网络。 Boos
我正在尝试开始使用 angular 2 cli。 我想在我的项目中使用 momentjs,所以这是我所做的: 1. 使用angular cli创建项目。 2. 运行 npm install --sav
我的配置如下: OCaml 由 Homebrew 根据其默认配方安装。它住在 /usr/local/Cellar/objective-caml/3.12.0/[bin,lib,share] ,其内容被
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: Managing 3rd party sources and binaries used by code under
所以我在项目中使用专有的 java 库,我无法访问源代码。 它抛出一个Message对象,显然我不能实现Serializable。它在整个运行时生成。 我有哪些选择?有没有办法将 Message 对象
我正在尝试使用以下方法将 Google Plus 身份验证引入 CodeIgniter: https://code.google.com/p/google-api-php-client/ 我已经把这些
我的配置中有以下内容: const viewerConfigProdWeb = merge(common.commonWebConfig, { output: { path: outputPa
在生产项目中使用 3rd 方库/组件时,您是否严格要求仅使用所述库的已发布版本? 您什么时候考虑使用库的预发布或测试版(在开发中?在生产中,在某些情况下)? 如果您遇到库的错误或缺点并且您已经 pro
我正在尝试将 qpOASES c++ 库包含在我在 RStudio 中构建的 Rcpp 项目中。 我浏览了编写 R 包和各种 Rcpp 小插图。我找到了这个 post其中引用 this存档对话。按照我
我是一名优秀的程序员,十分优秀!