【发布时间】:2020-06-02 15:34:28
【问题描述】:
我正在开发一个小型代码库(maven 项目),它需要由与我的项目集成的系统的创建者提供的库。现在该库采用以下形式:
com.example.library.client_1.2.3.v20190123/ (just a directory)
├── lib/
│ ├── some-dependency-3.2.1.jar
│ ├── ....jar
│ └── another-dependency-1.2.3.jar
├── META-INF/
│ └── MANIFEST.MF
└── some.library.jar
这个库是如何构建的?
如何使用 maven 向这样的包添加“正确”依赖项,以便以后可以构建一个 big/uber jar?我知道一个罐子有几种方法,例如我可以使用mvn install:install-file ... 将它安装到我的本地存储库中。但是,如何将上述结构添加为依赖项,以在 lib 目录中包含库(传递依赖项)?我可以重新包装上述结构以便更好地使用吗?
我需要将所有这些 lib jar 单独添加到我的本地 maven 存储库吗?
如果感兴趣,清单具有以下形式:
Manifest-Version: 1.0
Bundle-SymbolicName: com.example.library....;singleton:=true
Export-Package: com.example.library...
Bundle-Name: ...
Bundle-Version: 1.2.3.v20190123
Bundle-ClassPath: lib/some-dependency-3.2.1.jar,lib/...
.jar,lib/another-dependency-1.2.3.jar
Bundle-ManifestVersion: 2
Bundle-ActivationPolicy: lazy
Bundle-Vendor: ...
【问题讨论】:
-
没有。您可以添加具有系统范围的依赖项,但除了单独添加它们之外,没有简单的方法来处理传递依赖项。您可能应该避免这种情况,因为它与特定系统的构建密切相关。
-
这是一个 OSGi 项目,它处理的事情完全不同。
-
OSGi 真的有必要吗?
-
不适合我,但不幸的是我无法控制这个库的创建者以哪种形式提供(和构建)它。我也不知道 OSGi 以及如何将它集成到我的 maven 项目中。
-
对于编辑器:我的问题并不是真正的传递依赖,我可以接受它们在上述结构中的样子。但是,我正在寻找一种一种简单的方法来将此结构作为一个整体集成到我的 maven 项目中。