Будут ли в моем упакованном банке, использующем Maven, измененные зависимости jar? - PullRequest
0 голосов
/ 27 октября 2019

Я создаю анализатор пакетов в Java, используя библиотеку Pcap4j, Netbeans и Maven. Мне нужно изменить некоторые функции и то, что они выводят, так как я создаю приложение с графическим интерфейсом, а текущие выходы функций очень усложняют жизнь. Так, когда я наконец упаковываю это, используя Maven, будет ли сгенерированный jar содержать мою измененную зависимость Pcap4j? Мне нужно выполнить эту банку на другом ПК для моей финальной презентации. Или мои представления о упаковке maven совершенно неверны? Если так, пожалуйста, просветите меня. Ура!

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Если вы изменяете сторонний проект и собираете его с помощью Maven, вам следует указать номер версии, который указывает именно на это (например, 1.2.3-patched-SNAPSHOT или 1.2.3-modified-SNAPSHOT). Тогда вы можете ссылаться на него с этим номером версии и быть уверенным, что вы получите то, что вы хотите.

0 голосов
/ 27 октября 2019

Зависимости, как правило, будут частью нового фляги. Но это действительно до уровня зависимости. Предусмотрена область действия по умолчанию, которая сделает его частью 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 .

Но есть еще одна вещь, которую следует учитывать, и этоесли версия в банке будет использоваться или нет. Если зависимость не указана в пути к классам проекта, это не проблема, поскольку ваша зависимость - единственная. Если существует другая версия зависимости от пути к классам, то это будет зависеть от сервера приложений, который будет выбран.

Редактировать: Поскольку JF Meier ответил, вы должны изменить groupId, artifactIdи / или версию зависимости, которую вы изменяете. Это означает, что ваша зависимость используется, а не другая.

...