我使用Pcap4j库、Netbeans和Maven在java中创建了一个包嗅探器。我需要修改一些函数以及它们输出的内容,因为我正在创建一个GUI应用程序,而当前的函数输出使工作变得非常困难。那么,当我最终使用Maven将其打包时,生成的jar会包含修改后的Pcap4j依赖项吗?我需要在另一台PC上执行该jar以进行最终演示。或者我关于maven打包的概念是完全错误的?如果是这样的话,请告诉我。干杯!
发布于 2019-10-27 18:35:22
如果您修改了一个第三方项目并使用Maven构建它,那么您应该为它指定一个版本号(如1.2.3-patched-SNAPSHOT或1.2.3-modified-SNAPSHOT)。然后你可以用这个版本号来引用它,并确保你得到了你想要的。
发布于 2019-10-27 15:41:49
依赖关系通常是新jar的一部分。但这实际上取决于依赖的范围。提供了默认作用域,这将使其成为jar的一部分:
<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中。最常用的两个如下所示:
<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和/或您更改的依赖项的版本。这是为了确保使用您的依赖项,而不是另一个依赖项。
https://stackoverflow.com/questions/58577377
复制相似问题