Транзитивная зависимость от спецификации Maven? - PullRequest
0 голосов
/ 18 октября 2019

Я работаю над утилитарной библиотекой, которая расширяет фреймворк rdf4j , импортируя ее с помощью модуля спецификации, например:

<groupId>com.example</groupId>
<artifactId>rdf4j-utils</artifactId>
<version>1.0</version>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.rdf4j</groupId>
            <artifactId>rdf4j-bom</artifactId>
            <version>3.0.1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>

    <!-- core rdf4j dependencies here -->

</dependencies>

Можно ли сделать версию rdf4j указанную с помощьюrdf4j-utils доступно для импорта модулей, так что дополнительные модули rdf4j могут быть импортированы из спецификации без указания целевой версии? Например:

<dependencies>

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>rdf4j-utils</artifactId>
        <version>1.0</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.rdf4j</groupId>
        <artifactId>rdf4j-repository-sparql</artifactId>
        <!-- !!! implicit rdf4j version as specified by rdf4j-utils -->
    </dependency>

</dependencies>

Ответы [ 2 ]

2 голосов
/ 18 октября 2019

То, что вы хотите, точно решается путем создания ведомости материалов. Таким образом, вы можете создать свою собственную спецификацию, которая импортирует rdf4j. Затем вы можете поместить обе зависимости в раздел dependencyManagement и определить версию как одно свойство для создания минимальной настройки обслуживания.

<properties>
  <rdf4j-utils-version>1.0</rdf4j-utils-version>
</properties>

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.eclipse.rdf4j</groupId>
        <artifactId>rdf4j-bom</artifactId>
        <version>3.0.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>rdf4j-utils</artifactId>
        <version>${rdf4j-utils-version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.rdf4j</groupId>
        <artifactId>rdf4j-repository-sparql</artifactId>
        <version>${rdf4j-utils-version}</version>
      </dependency>
    </dependencies>
<dependencyManagement>

Для более полного примера спецификации я нахожу пружину -cloud-dependencies одно хорошее вдохновение - потому что это приятно и полнофункционально, будучи спецификацией с родительским pom и импортированием множества других спецификаций.

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

Нет, но вы можете определить свойство с именем типа <rdf4j.version> в <properties> и использовать его в различных зависимостях.

...