处理 当一个项目依赖于具有闭源的许可证的jar,该许可证阻止其存在中央存储库中 的情况----三种方法

网友投稿 699 2022-10-10

处理 当一个项目依赖于具有闭源的许可证的jar,该许可证阻止其存在中央存储库中 的情况----三种方法

处理 当一个项目依赖于具有闭源的许可证的jar,该许可证阻止其存在中央存储库中 的情况----三种方法

三种方法处理当一个项目依赖于具有闭源的许可证的jar,该许可证阻止其存在中央存储库中 的情况

1、使用install插件在本地安装依赖项。该方法是最简单的推荐方法。

mvn install:install-file -Dfile=non-maven-proj.jar -DgroupId=some.group -DartifactId=non-maven-proj -Dversion=1 -Dpackaging=jar

注意:地址

仍然是必需的,只有在你使用命令行时,安装插件才会使用给定地址为你创建POM。

2、创建自己的存储库并将其部署到那里。对于使用内联网的公司来说,这是一个最喜欢的方法,并且需要能够保持每个人的同步。有一个名为deploy的Maven目标:deploy-file与install:install-file目标类似。

3、将依赖范围设置为system并定义一个systemPath。但是,这并不推荐,但是可以让我们解释以下内容:

classifier   (分类器): 允许区分使用相同POM构建但内容不同的工件。它是一些可选的和任意的字符串,如果存在的话,会附加到版本号后面的工件名称。

作为这个元素的动机,考虑一个项目,该项目提供了一个针对JRE 1.5的工件,但同时也是一个仍然支持JRE 1.4的工件。第一个artifact可以装备 classifier jdk15,第二个artifact 有jdk14,这样客户可以选择使用哪一个。classifier 的另一个常见用例是需要将辅助工件附加到项目的主要artifact上。如果你浏览Maven中央存储库,你会注意到使用了classifiers 的源代码和javadoc来将项目源代码和API文档与打包的类文件一起部署。

type  (类型):对应于相关工件的packaging 类型。这默认为jar。虽然它通常表示依赖项文件名的扩展名,但并非总是如此。一个类型可以映射到不同的扩展和classifier。该类型通常对应于所使用的packaging ,但这并非总是如此。一些例子是jar,ejb-client和test-jar。新类型可以通过将extensions 设置为true 的插件来定义,所以这不是一个完整的列表。

scope  : 该元素引用了手头任务的类路径(编译和运行时,测试等),以及如何限制依赖关系的传递性。有五个范围可用:

这是默认范围,如果没有指定,则使用该范围。compile  依赖关系在所有类路径中都可用。而且,这些依赖关系                                                     会传播到依赖项目。

这非常类似于编译,但表示您期望JDK或容器在运行时提供它。它仅在编译和测试类路径中可用,并且不是传递性                                                     的。

此范围指示编译时不需要依赖关系,但用于执行。它在运行时和测试类路径中,但不在编译类路径中。

此范围指示正常使用应用程序时不需要依赖关系,并且仅适用于测试编译和执行阶段。它不是传递性的。

这个范围与provided 范围相似,除了你必须明确地提供包含它的JAR。工件始终可用,并且不会在存储库中查找。

systemPath :用于仅当所述依赖关系scope  是 system  。否则,如果设置此元素,构建将失败。路径必须是绝对路径,因此建议使用属性来指定机器特定路径。由于假定系统范围依赖关系是事先安装的,因此Maven不会检查项目的存储库,而是检查以确保文件存在。如果没有,Maven将会失败,并建议您手动-并安装它。

optional : 当项目本身是一个依赖项时,标记可选的依赖项。例如,设想一个项目A依赖于项目B来编译一部分代码,这些代码在运行时可能不会被使用,那么我们可能不需要为所有项目使用项目B. 因此,如果项目X添加项目A作为自己的依赖,那么Maven将完全不需要安装项目B。象征性地,如果=>表示一个必须的依赖,-- >表示可选的依赖,尽管当构建项目A的时候,也许是A =>B这种情况,但是当构建项目X的时候也许就是X => A -->B这种情况了。【这段是翻译后的文字,可能有些不妥,以下为未翻译的内容:Marks optional a dependency when this project itself is a dependency. Confused? For example, imagine a project A that depends upon project B to compile a portion of code that may not be used at runtime, then we may have no need for project B for all project. So if project X adds project A as its own dependency, then Maven will not need to install project B at all. Symbolically, if => represents a required dependency, and --> represents optional, although A=>B may be the case when building A X=>A-->B would be the case when building X.】

在最短的时间内,optional 可以让其他项目知道,当你使用这个项目时,为了正常工作,你不需要这个依赖项。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于mpvue的小程序swiper类3d轮播
下一篇:C 语言 Fractal 打印
相关文章

 发表评论

暂时没有评论,来抢沙发吧~