具有本机依赖项和复制文件的 Maven 项目

2023-11-27

我有以下场景:

mylib 是一个库(我有其源代码,因此我想将它们放入 Maven 项目 mylib:mylib 中)。这个库有一个 jar 依赖项,我只有 jar,并且在 Maven 存储库中找不到它(而且我也不想在那里安装它)。为了使其编译,可以像这样工作:将 jar 文件添加到“lib”文件夹中的 mylib 项目中,例如“lib/thirdpartylib.jar”并在 mylib 的 pom.xml 中添加具有自选组/工件/版本的依赖项和一个“<scope>system</scope><systemPath>${project.basedir}/lib/thirdpartylib.jar</systemPath>“ 条目。mylib 项目可以正常编译。

请注意,mylib 还具有对 dll 文件的运行时依赖性,例如thirdparty.dll。但对于编译来说这并不重要。

但是,现在我想知道如何实现以下目标:

任何其他项目,例如项目“X”,即usesmylib,将需要

- mylib.jar
- thirdpartylib.jar
- thirdpartylib.dll

,

并且必须将 java.library.path 设置为目录(例如“.”),以便执行虚拟机能够找到第三方 jar 和 dll。

我担心的是:我希望第三方 jar/dll 的东西由 mylib 项目负责。 IE。我想定义知识,您需要将第三方 jar 和 dll 复制到目标文件夹,并且 java.library.path 引用它们,以成为 mylib 项目的一部分(mylib pom 知道事情是如何发生的)用于其他项目)。然而,我希望将这些知识(即复制指令,无论它们在 Maven 中是如何完成的)传递给使用 mylib 的任何其他项目,例如 X。这有可能吗?

[我现在的黑客解决方案是,我有 X 中第三方内容的副本,但即便如此,我也不知道如何复制/处理 dll 文件,所以我必须写一个自述文件,说明 dll 文件有复制到正在执行的 VM 的 bin 文件夹中)。

任何建议表示赞赏!


基本思想如下:

  • Maven 擅长处理每个 Maven POM 的一个结果。
  • 可以仅在本地存储库中拥有库和这些库的依赖项。

所以你必须执行以下步骤:

  1. 为附加库定义一个单独的项目(或项目中的模块),并将库定义为结果。
  2. 更改您的 POM,以便该 POM 现在依赖于新项目。
  3. 对您的 DLL 执行相同的步骤(请参阅帖子使用 Maven 管理 DLL 依赖项) 怎么做)。
  4. 将附加库和 DLL 部署到本地存储库。

现在您应该能够再次使用 Maven 进行构建过程,并使用其他插件,例如maven-assembly-plugin,您可以将所有内容打包在一起。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有本机依赖项和复制文件的 Maven 项目 的相关文章

随机推荐

  • C# MVC 4 ControllerName 属性

    我正在努力为我的 MVC 4 控制器提供友好的名称 我想做一些类似的事情 ActionName My Friendly Name 风格 但针对整个控制器 我找不到有关此类属性的任何信息 那么我该怎么做呢 另外 我需要添加一个新的 MapRo
  • shinydashboard 不能与 uiOutput 一起使用

    我在 server R 中设置了 UI 以进行更多控制 但是在 server R 中定义时 shinyDashboard 不起作用 我将此方法与 navBarPage 一起使用没有问题 这段代码有效 library shiny librar
  • 实体框架实体 SQL 与 linq to 实体

    实体sql的目的是什么 我的意思是 如果你有实体的linq 为什么你需要在字符串中编写查询 是否有任何性能原因或其他原因 LINQ to Entities 不允许您访问数据库的每个功能 能够 深入 数据库有时对于高级查询是必要的 要么首先完
  • 如何在sql server 2008中使用插入后触发器

    我正在 sql server 上工作 我想将记录插入到特定的表中 例如 a 在将记录插入表中之后 该表现在包含两列 id 身份字段 和名称 nvarchar max a 触发器应该触发并在表 b 中插入标识字段值 我为此目的使用插入触发器
  • Javascript-更改文本区域中某些文本的字体颜色

    有没有JS函数可以改变textarea中某些文本的颜色 例如 blar blar blar blar blar 包括 将为蓝色 其他单词将显示为空白 换句话说 我需要的只是一个可以改变 中所有文本颜色的函数 我做了一些研究 似乎大多数人都说
  • 不带 Spring Boot 的 Spring Boot 执行器

    我一直在开发 Spring Spring MVC 应用程序 并且希望添加性能指标 我遇到过 Spring Boot Actuator 它看起来是一个很好的解决方案 但是我的应用程序不是 Spring Boot 应用程序 我的应用程序在传统容
  • 我应该取消订阅 Cold Observable 吗?

    我知道这是一个很好的做法取消订阅从可观察到预防内存泄漏 但如果是冷可观测我也应该取消订阅吗 例如 返回的一个Http get 你不需要这样做 HTTP 可观察对象在操作完成后立即调用完成 从源代码来看sources我理解了unsubscri
  • scala import 是递归的吗?

    With import mypack 我还需要吗 import mypack box writer import mypack box reader and import mypack box parser stringparser 搜索
  • T-SQL 动态 SQL 和临时表

    看起来通过 EXECUTE 字符串方法使用动态 SQL 创建的 temptables 具有不同的作用域 并且不能由同一存储过程中的 固定 SQL 引用 但是 我可以在后续动态 SQL 中引用由动态 SQL 语句创建的临时表 但除非 SQL
  • Jquery 按 Enter 键选择 NEXT 文本字段

    我使用 jquery 制作了一个页面 加载时它会自动选择第一个文本字段 我希望当按下 ENTER 键时它移动到下一个字段 barcodeField input bind keyup function event if event keyCo
  • BackgroundWorker 不在 VSTO 中工作

    我有一个后台工作人员 在调用工作人员之前 我禁用一个按钮并让 gif 可见 然后 我调用 runworkerasync 方法 它运行良好 直到完成 在 RunWorkerCompleted 上 我收到跨线程错误 知道为什么吗 private
  • 可以以编程方式将用户控件添加到 Silverlight 网格列吗?

    我有一个用户控件 我需要以编程方式将其添加到指定行和列索引的 Silverlight 网格中 要求是我需要在任意索引处插入 这样纯数据绑定可能并不理想 我不想在后面的代码中从头开始创建网格 这可以做到吗 有人举个例子吗 使用Grid Chi
  • 是否可以在 Django 项目之外更改“migrations”文件夹的位置?

    我想做的是更改 django 项目中特定应用程序的默认迁移路径 将其放在项目本身之外 但保持透明 继续使用进行迁移 and migrate 是否可以 如果是 怎么办 姜戈有一个MIGRATION MODULES环境 它允许您为每个应用程序的
  • Android - 删除工具栏和TabLayout之间的阴影

    我正在尝试做一个布局CollapsingToolbarLayout 但我不明白一件事 我想要去除Toolbar和TabLayout之间的阴影 我尝试了多种方法 但没能消除阴影 有谁能够帮助我 谢谢
  • 这是检测 iPad 的正确方法吗?

    我可以使用以下代码来检测我的应用程序是否在 iPad 上运行吗 我的应用程序需要在 iOS 3 0 或更高版本上运行 if UIDevice currentDevice model isEqualToString iPad Do iPad
  • Windows 任务计划程序安装程序

    我有一个用 c net 编写的小 exe 我想每 24 小时在服务器上运行一次 因此 我自然会使用 Windows 任务计划 而不是自己进行数学计算 我已经创建了该程序 但我想创建一个安装程序来设置所有内容 有没有办法像 Visual St
  • 导航 | IntelliJ IDEA 2017.2 中的类或文件弹出窗口立即关闭

    自从我将 IntelliJ IDEA Community 更新到此版本后 我遇到了一个恼人的问题 IntelliJ IDEA 2017 2 Build IC 172 3317 76 built on July 15 2017 JRE 1 8
  • 在 Docker Jupyter Notebook 的 GUI 中显示卷文件

    我使用 Docker 运行 Jupyter Notebook 并尝试将本地目录安装到预期的 Docker 卷上 但我无法在 Jupyter 笔记本中看到我的文件 Docker 命令是 sudo nvidia docker create v
  • C 编译错误:程序中出现杂散“\200”,并且在数字常量之前出现预期“)”

    我复制了这个程序 但在使用 void downFrequency 函数时遇到了问题 我认为 这是为了Arduino Uno 以下是编译器错误 为 Arduino Uno 编译 MY dds MY dds ino stray 342 in p
  • 具有本机依赖项和复制文件的 Maven 项目

    我有以下场景 mylib 是一个库 我有其源代码 因此我想将它们放入 Maven 项目 mylib mylib 中 这个库有一个 jar 依赖项 我只有 jar 并且在 Maven 存储库中找不到它 而且我也不想在那里安装它 为了使其编译