首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Maven WIll我的打包jar有我修改过的jar依赖项吗?

使用Maven WIll我的打包jar有我修改过的jar依赖项吗?
EN

Stack Overflow用户
提问于 2019-10-27 15:30:36
回答 2查看 89关注 0票数 0

我使用Pcap4j库、Netbeans和Maven在java中创建了一个包嗅探器。我需要修改一些函数以及它们输出的内容,因为我正在创建一个GUI应用程序,而当前的函数输出使工作变得非常困难。那么,当我最终使用Maven将其打包时,生成的jar会包含修改后的Pcap4j依赖项吗?我需要在另一台PC上执行该jar以进行最终演示。或者我关于maven打包的概念是完全错误的?如果是这样的话,请告诉我。干杯!

EN

回答 2

Stack Overflow用户

发布于 2019-10-27 18:35:22

如果您修改了一个第三方项目并使用Maven构建它,那么您应该为它指定一个版本号(如1.2.3-patched-SNAPSHOT1.2.3-modified-SNAPSHOT)。然后你可以用这个版本号来引用它,并确保你得到了你想要的。

票数 0
EN

Stack Overflow用户

发布于 2019-10-27 15:41:49

依赖关系通常是新jar的一部分。但这实际上取决于依赖的范围。提供了默认作用域,这将使其成为jar的一部分:

代码语言:javascript
复制
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
    <scope>compile</scope>
</dependency>

但是,还有其他作用域没有将依赖项打包到jar中。最常用的两个如下所示:

代码语言:javascript
复制
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

有关作用域的更多信息,请访问baeldung

但还有另一件事要考虑,那就是jar中的版本是否会被使用。如果依赖项在项目的类路径上不可用,这不是问题,因为您的依赖项是唯一的依赖项。如果类路径上存在其他版本的依赖项,则由应用程序服务器决定选择哪个版本。

编辑:作为JF Meier的回应,您应该更改groupId、artifactId和/或您更改的依赖项的版本。这是为了确保使用您的依赖项,而不是另一个依赖项。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58577377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档