Плющ - Не удается загрузить, поскольку POM-файл и имя JAR-файла не соответствуют шаблонам - PullRequest
2 голосов
/ 04 августа 2011

я снова с IVY.

Проблема теперь в том, что файл ivy, файл POM для библиотеки JSON называется:

http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4.pom

JSON-Lib-2.4.pom

Но файл JAR называется:

JSON-Lib-2,4-jdk13.jar

-jdk13 делает так, что файл pom не может быть найден.

Поэтому он не может загрузить файл JAR, потому что он говорит это:

== resolving dependencies egencia#com.egencia.test.framework;working@ESFVMVI-750->net.sf.json-lib#json-lib;2.4 [default->compile]
[ivy:resolve]       tried http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk13.jar
[ivy:resolve]   maven: no ivy file found for net.sf.json-lib#json-lib;2.4: using default data
[ivy:resolve]   found net.sf.json-lib#json-lib;2.4 in maven

Теперь .. Мне удалось поместить шаблон, в котором находит файл JAR, добавив в него -jdk13 .. Но таким образом файл POM больше не найден.

После этого нет загруженного файла JAR и, конечно, сборка завершается неудачно из-за отсутствующего деп.

Итак ... могу ли я как-то настроить POM, чтобы он был чем-то другим в качестве имени файла JAR?

СПАСИБО !!

1 Ответ

6 голосов
/ 05 августа 2011

Это называется атрибутом классификатора в Maven.Попробуйте объявить вашу зависимость следующим образом:

<ivy-module version='2.0' xmlns:m="http://ant.apache.org/ivy/maven">
    ..
    <dependencies>
        ..
        <dependency org="net.sf.json-lib" name="json-lib" rev="2.4"> 
            <artifact name="json-lib" type="jar" m:classifier="jdk13"/>
        </dependency>
        ..
    </dependencies>
</ivy-module>

При этом из модуля Maven будет получен связанный артефакт, а не основной артефакт по умолчанию.

Обновление

Это объявление зависимости плющафункционально такой же, как и в Maven

<dependency>
  <groupId>net.sf.json-lib</groupId>
  <artifactId>json-lib</artifactId>
  <version>2.4</version>
  <classifier>jdk13</classifier>
</dependency>
...