Обернуть значение groupId в спецификации зависимостей maven - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь добавить библиотеку log4j-Rolling-Appender в качестве зависимости в моем приложении. Баночка доступна здесь:

https://mvnrepository.com/artifact/uk.org.simonsite/log4j-rolling-appender/

Я добавил следующие 2 вещи (спецификация хранилища и jar) в pom.xml. фрагмент ниже:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <modelVersion>4.0.0</modelVersion>
        ...
        ...
        <repositories>
            <repository>
                <id>log4j-appender</id>
                <name> Repository for log4j-rolling-appender</name>
                <url>https://mvnrepository.com/artifact/</url>
            </repository>
        </repositories>

        <dependency>
            <groupId>uk.org.simonsite</groupId>
            <artifactId>log4j-rolling-appender</artifactId>
            <version>20131024-2017</version>
        </dependency>
        ...
        ...
</project>

После сборки maven генерирует следующий URL-адрес для загрузки зависимости, которая является неверной (хотя, согласно стандартам, она корректна, но неверна в моем случае):

https://mvnrepository.com/artifact/uk/org/simonsite/log4j-rolling-appender/20131024-2017/log4j-rolling-appender-20131024-2017.pom

Обратите внимание, как пакет, упомянутый в groupId (uk.org.simonsite), преобразуется в иерархию пакетов в URL (../uk/org/simonsite/).

URL-адрес, по которому можно найти JAR, и который я хочу создать для maven:

https://mvnrepository.com/artifact/uk.org.simonsite/log4j-rolling-appender/20131024-2017/log4j-rolling-appender-20131024-2017.pom

Может ли кто-нибудь предложить какие-либо рекомендации относительно того, как я могу дать команду maven пропустить это преобразование при создании URL-адреса?

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Репозитории Maven имеют фиксированный формат для разрешения координат Maven.

После начального URL-адреса указывается groupId с / вместо ., затем artifactId, затем версия, а затем имя файла, который содержит artifactId, версию, классификатор, если имеется, и расширение.

Если вы хотите нарисовать банку с другого URL, тогда этот URL не является репозиторием Maven. Сначала вы должны загрузить jar-файл и установить его в репозиторий вашей компании (или в свой локальный репозиторий, если больше ничего не доступно).

0 голосов
/ 19 июня 2019

Если вы используете несколько зависимостей, попробуйте использовать аннотацию, охватывающую все зависимости.

Также следуйте шаблону:

<project>
    <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-b</artifactId>
      <version>1.0</version>
      <type>bar</type>
      <scope>runtime</scope>
    </dependency>

  <repositories>
    <repository>
      <id>my-internal-site</id>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>
  ...
</project>

Зависимости с системой областей видимости всегда доступны и не доступныпосмотрел в хранилище.Всегда используйте зависимости сначала перед репозиторием по порядку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...