Как бороться с несогласованным файлом дескриптора модуля, обнаруженным в Ivy? - PullRequest
0 голосов
/ 16 января 2020

При запуске IVY для модуля commons-jxpath я получаю следующую ошибку:

[ivy:retrieve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/ ::
[ivy:retrieve] :: loading settings :: url = jar:file:/Applications/Eclipse.app/Contents/Eclipse/plugins/org.apache.ivy.eclipse.ant_2.5.0.final_20191020104435/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:retrieve] :: resolving dependencies :: 
[ivy:retrieve]  confs: [default]
[ivy:retrieve] :: resolution report :: resolve 848ms :: artifacts dl 0ms
    ---------------------------------------------------------------------
    |                  |            modules            ||   artifacts   |
    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
    ---------------------------------------------------------------------
    |      default     |   1   |   0   |   0   |   0   ||   0   |   0   |
    ---------------------------------------------------------------------
[[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      ::          UNRESOLVED DEPENDENCIES         ::
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      :: com.mockrunner#mockrunner-jdk1.3-j2ee1.3;0.4: java.text.ParseException: inconsistent module descriptor file found in 'https://repo1.maven.org/maven2/com/mockrunner/mockrunner-jdk1.3-j2ee1.3/0.4/mockrunner-jdk1.3-j2ee1.3-0.4.pom': bad module name: expected='mockrunner-jdk1.3-j2ee1.3' found='mockrunner-j2ee1.3-jdk1.3'; 
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :::: ERRORS
[ivy:retrieve]      public: bad module name found in https://repo1.maven.org/maven2/com/mockrunner/mockrunner-jdk1.3-j2ee1.3/0.4/mockrunner-jdk1.3-j2ee1.3-0.4.pom: expected='mockrunner-jdk1.3-j2ee1.3 found='mockrunner-j2ee1.3-jdk1.3'
[ivy:retrieve] 
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

Мой плющ. xml

<ivy-module version="1.0">
  <info organisation="myOrg" module="myModule"/>
  <dependencies>
    <dependency org="commons-jxpath" name="commons-jxpath" rev="1.3"/>
  </dependencies>
</ivy-module>

Моя сборка. xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse.ant.import?>
<project name="MyProject" default="build" xmlns:ivy="antlib:org.apache.ivy.ant" basedir=".">

  <!-- Project properties -->
  <property name="src" location="${basedir}/src"/>
  <property name="test-output" value="${basedir}/test-output"/>
  <property name="debuglevel" value="source,lines,vars"/>

  <!-- Ivy properties -->
  <property name="ivy.install.version" value="2.5.0" />
  <property name="ivy.jar.dir" value="${basedir}/ivy" />
  <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
  <property name = "ivy.lib.dir" value="${basedir}/lib" />

  <path id="lib.path.id">
    <fileset dir="${ivy.lib.dir}" />
  </path>

  <target name="download-ivy" unless="skip.download">
    <mkdir dir="${ivy.jar.dir}"/>
    <get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/>
  </target>

  <target name="install-ivy" depends="download-ivy" description="Install ivy">
    <path id="ivy.lib.path">
      <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
  </target>

  <target name="update" depends="install-ivy" description="Download project dependencies">
    <ivy:retrieve/>
  </target>
</project>

Сегодня утром все работало с версией ivy 2.3, но из-за изменения хранилища maven на HTTPS мы обновились до 2.5.0 и теперь получаем ошибку.

Я пытался напрямую запросите соответствующий mockrunner, но получите ту же ошибку. Когда я смотрю на файл POM, оказывается, что указанный идентификатор артефакта не соответствует имени цели зависимости.
https://repo1.maven.org/maven2/com/mockrunner/mockrunner-jdk1.3-j2ee1.3/0.4/mockrunner-jdk1.3-i2ee1.3-0.4.pom

target = mockrunner-jdk1.3-j2ee1.3 id в POM = mockrunner-j2ee1.3-jdk1.3

Есть ли способ обойти эту ошибку, чтобы разрешить извлечение commons-jxpath с помощью ivy?

...