Задача Айви makepom забывает конфигурации - PullRequest
0 голосов
/ 26 февраля 2020

Я использую задачу makepom Ivy для создания файла Pom, используемого для публикации sh артефактов в центральном хранилище. Здесь мои секции ivy.xml configurations и dependencies:

<configurations defaultconf="runtime"
    defaultconfmapping="compile,runtime->master; sources->sources; javadoc->javadoc; optional->optional">
    <conf name="default"/>
    <conf name="compile"/>
    <conf name="runtime"/>
    <conf name="sources"/>
    <conf name="javadoc"/>
    <conf name="optional"/>
</configurations>

<dependencies>
    <dependency org="com.google.gwt" name="gwt-user" rev="${depver.gwt}" conf="compile"/>
    <dependency org="com.google.gwt" name="gwt-dev" rev="${depver.gwt}" conf="compile"/>
    <dependency org="com.google.jsinterop" name="base" rev="${depver.jsinterop-base}" conf="compile; runtime"/>
    <dependency org="com.google.jsinterop" name="jsinterop-annotations" rev="${depver.jsinterop-annotations}" conf="compile"/>
    <dependency org="com.google.javascript" name="closure-compiler" rev="${depver.closure-compiler}" conf="compile->default"/>
</dependencies>

Версии правильно взяты из отдельного файла свойств.

Как видите, для конфигурации compile нужны все артефакты и runtime нужны только com.google.jsinterop:base.

Здесь мой makepom вызов:

        <ivy:makepom ivyfile="ivy.xml" pomfile="dist/pom.pom" templatefile="pom.template">
            <mapping conf="compile" scope="compile"/>
            <mapping conf="runtime" scope="runtime"/>
        </ivy:makepom>

По умолчанию задача makepom учитывает все конфигурации Ivy, когда ее атрибут conf опущен Подузлы mapping сопоставляют мои конфигурации Ivy compile и runtime с областями Maven compile и runtime соответственно.

Проблема заключается в том, что этот вызов приводит к следующему разделу dependencies Pom:

<dependencies>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>2.8.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-dev</artifactId>
      <version>2.8.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.google.jsinterop</groupId>
      <artifactId>base</artifactId>
      <version>1.0.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.google.jsinterop</groupId>
      <artifactId>jsinterop-annotations</artifactId>
      <version>2.0.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.google.javascript</groupId>
      <artifactId>closure-compiler</artifactId>
      <version>v20200204</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

, что является правильным, за исключением полностью забытой конфигурации / области действия runtime

Я ожидаю, что узел dependency будет ссылаться на com.google.jsinterop:base с областью действия runtime. Что я должен сделать, чтобы получить правильный файл Pom?

...