问题标签 [maven-nar-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1143 浏览

java - 如何从命令行运行 nar 文件?

我使用 Eclipse 并使用nar-maven插件在我的开发机器上构建了一个 JNI 项目。这可以在多种架构上编译,并给我留下.nar文件。

我的问题是,现在我想在nar. UnsatisfiedLinkError当 Java 程序尝试加载应该在nar文件中的本机库时,我不断收到消息。现在我意识到该.so文件需要放在该文件上,java.library.path但我的问题是我看不到在哪里指出这一点,因为唯一的副本不知何故在nar文件中。我的印象是这将在幕后处理,因为我NarSystem.loadLibrary在 Java 中使用自动生成的方法。

详情如下。

我的 POM 中配置nar插件的部分:

在我的一个 Java 类中,我有一个静态初始化程序,它调用自动生成的方法来加载库:

运行后mvn install,我在本地.m2/repository目录的相应子目录中有以下文件:

  • maven-metadata-local.xml
  • _maven.repositories
  • project-0.0.1-arm-Linux-gpp-jni.nar
  • project-0.0.1.nar
  • project-0.0.1.pom
  • project-0.0.1-javadoc.jar

我尝试使用以下命令从命令行运行:

这开始运行相应的主程序,因此它找到了 Java 部分。当它到达应该加载本机库的地步时——上面的静态块——它会抛出错误

这个问题,Nar dependency in multi-module maven project,看起来很接近,但答案取决于已经以某种方式“暴露”了本机库。我跟着提问者在那里尝试mvn nar:nar-unpackand mvn exec:java,但这并没有让我进步。(从该问题中描述的第一个获得相同的明显空结果,以及我在此处为第二个描述的相同异常。)

考虑的其他问题:

那么如何从命令行运行这个主程序呢?如果有一些预处理步骤来“提取”本机库,它是什么?如果它是自动的,那么我错过了什么?谢谢!

0 投票
2 回答
159 浏览

maven - Maven自定义文件结构

我想为开发创建一个特定的自定义文件结构,我想知道它是否可以用 maven 完成。

值得一提的是,我正在使用 c++ 作为编程语言和Maven-nar-plugin

我希望能够运行如下命令:mvn dependency:resolve并且所需的库将进入文件夹Librairies。这样,我所要做的就是将库的包含文件夹链接到我在 Visual Studio 中的项目。

我不想用 maven 编译我只想用它的依赖管理器

我知道您可以更改 SourceDirectory,但您可以更改 Librairies 的安装位置吗?

工作区
|
|-- 项目1
| |-- pom.xml
|
|-- 项目2
| |-- pom.xml
|
|--
     库 |-- ExampleLib-V-2.0
     | |-- 包括
     | |-- 库
     |
     |-- ExampleLib-V-3.1

0 投票
3 回答
1831 浏览

maven - 无法从任何配置的存储库解析原型 org.apache.maven.archetypes:maven-archetype-quickstart:1.1。在 STS 中使用时

我能够从 STS 创建 Spring Boot Starter Project 和 Maven Web Project,但不知何故无法在 eclipse中创建maven-archetype-quickstart项目,它给了我以下错误

在此处输入图像描述

在此处输入图像描述

在我的项目中,我使用 cacert 文件和自定义 setting.xml

0 投票
1 回答
63 浏览

java - Maven NAR 插件 + webapp 中的 Spring boot,在 Tomcat 中加载 .nar 工件

我已经设法将平台依赖项添加到jni 工件war并由其生成到.maven-nar-pluginWEB-INF/lib/

但问题是:添加的工件具有.nar扩展名,而WebappClassLoaderBase仅将.jars 添加到其内部类存储库中,因此我的 jni 桥未加载并且类无法访问导致 ClassNotFoundException.

我在这里有什么选择?我认为有可能

  1. 以某种方式更改工件扩展spring-boot:repackage
  2. 将此自定义工件添加到类加载器存储库?

哪个会更好,我将如何实施?

0 投票
1 回答
421 浏览

java - Maven nar插件:nar文件不在依赖项目的类路径中

我有一个用 C 编写的 JNI 共享库和一个 maven 项目中的相应 Java 类,以及在另一个项目中使用该类的应用程序。我使用 nar-maven-plugin 来处理 JNI。版本:Maven 3.6.0 Java 12 nar plugin 3.6.0 我以 nar-maven-plugin 附带的集成测试 3 和 4 为例。对于它 3,我刚刚将 POM 更新为独立的并与 Java 12 一起使用:

mvn install在这个项目上运行,它安装在我的.m2目录中

it0003-jni-1.0-SNAPSHOT.nar包含

现在我使用它的缩减版 4 来测试它,这是 Java 文件src/main/java/it0004/Hello.java

并且 POM 是

请注意,此 POM 仅处理编译。使用 指定依赖关系<type>nar</type>,以便找到依赖关系。但是nar文件不在classPath中,所以编译失败。mvn -X compile包含的输出

可以看到,依赖的nar文件不在classPath中,所以编译失败,因为找不到依赖类。如何确保 nar 文件包含在 classPath 中?

0 投票
1 回答
249 浏览

c++ - 如何使用 maven-nar 插件生成 cpp 二进制文件

我需要使用 maven-nar 插件编译 c++ 代码的帮助。我尝试通读文档,但无法使代码正常工作。任何帮助是极大的赞赏

http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0

上面的 pom.xml 没有引发任何问题,但它没有为 Windows 创建任何二进制文件,而且我无法理解我可以为 WINDOWS 使用哪些选项。

0 投票
1 回答
161 浏览

java - 使用 NAR 文件作为 Maven 依赖项

一般来说,我对 Apache Nifi 和 NARs 很陌生。我正在创建一个自定义处理器 NAR 项目,该项目需要引用另一个 NAR 文件中存在的 jar 中的类。我无权访问生成此 NAR 的项目(源代码)。所以我试图将此 NAR 文件包含为 maven 依赖项。这类似于您将外部/本地 jar 添加为 maven 依赖项的方式。实现这一目标的正确方法是什么?

注意:我的自定义项目是“nifi-nar-bundles”的子项目,因此它将继承“nar-maven-plugin”

我正在使用 eclipse 及其 maven 插件,并尝试了几件事:

#1

这不会在 Eclipse 中的“Maven Dependencies”下添加 NAR 文件。但是,如果我将其删除<type>nar</type>,则会在“Maven Dependencies”下显示 NAR 文件,但不会将其 jar 放入类路径中。

#2

我使用以下命令将 NAR 安装在本地 maven 存储库中,并将其打包为“nar”:

然后将其作为依赖项放入pom.xml文件中,如下所示:

这也不会在 Eclipse 中的“Maven Dependencies”下添加 NAR 文件。

0 投票
0 回答
126 浏览

java - 将外部 jar 的依赖项添加到 NAR 文件

我有以下项目结构

nifi-basename-nar的项目具有以下项目的依赖关系nifi-basename-processors

我在项目的 pom.xml 中添加了一个外部 jar 的依赖项,nifi-basename-processors如下所示,我的自定义处理器指的是这个 jar 中的类:

一旦我使用 构建项目maven clean install,在项目下生成的 narnifi-basename-nar就没有xyz.jar捆绑在其中。因此,NoClassDefFoundError当此自定义 nar 部署在 nifi 中时,它会抛出并且 nifi 无法启动。

处理此要求的正确方法是什么?

0 投票
0 回答
25 浏览

nexus3 - 将 nar 上传到 nexus 会引发内容类型错误

我有一个 nar 工件(它是由 maven-nar-plugin 处理的 Java 代码的原生代码),我想上传到我的 nexus 实例上。

根据7 年前的这个答案(我知道从那时起事情有时间改变),我正在编写正确的命令:

但是,这会失败并显示一个错误,指出它接收到 [application/zip](确实如此)并期望 [application/xml] 类型。我收到错误消息,但我如何才能表明它确实应该是 [application/zip] 而不是 [application/xml]?