Использование распознавателя пакетов для внешнего jar - PullRequest
1 голос
/ 04 октября 2011

Я пытался загрузить Jar-файл внешнего jar, создав файл packager.xml.
Когда я пытаюсь создать файл, я получаю сообщение об ошибке «1002 *»

"....... ivy2 \ packager \ build \ org.jsoup \ jsoup \ 1.6.1 \ packager.xml не является действительный документ XML "

Ниже приведены изменения, которые я внес в мой файл ivysettings.xml

.
<settings defaultResolver="default"/>

    <resolvers>
       <ibiblio name="default" m2compatible="true"/>
        <packager name="packager" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="false">
            <ivy pattern="file:///${ivy.settings.dir}/[organisation]/[module]/[revision]/ivy.xml"/>
            <artifact pattern="file:///${ivy.settings.dir}/packager.xml"/>
        </packager>
    </resolvers>
    <modules>
        <module organisation="org.jsoup" name="jsoup" resolver="packager"/>
    </modules>

ниже приведен созданный мной файл packager.xml,

<packager-module version="1.0">
<property name="name" value="${ivy.packager.module}"/>
    <property name="version" value="${ivy.packager.revision}"/>
<property name="packagename" value="${name}-${version}"/>

    <resource dest="archive" url="http://jsoup.org/$packagename.jar" />

    <build>
      <move file="archive/${packagename}.jar" tofile="artifacts/jars/${name}.jar"/>
    </build>
</packager-module>

Ошибка,

[ivy: resolve] :: org.jsoup # jsoup; 1.6.1: C: \ blah .... \ blah.ivy2 \ packager \ build \ org.jsoup \ jsoup \ 1.6.1 \ packager.xml не является действительным документом XML.

Я пытался сделать все возможное, чтобы сделать его действительным XML-документом, но ошибка все еще не устранена ...... Не могли бы вы дать некоторое представление об этой проблеме.

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Я думаю, что воспроизвел ошибку.

Файл packager.xml не проходит проверку проверки схемы XML.

[ivy:retrieve] [xmlvalidate] /home/mark/.ivy2/packager/build/org.jsoup/jsoup/1.6.1/packager.xml:6:72: 
     cvc-complex-type.4: Attribute 'sha1' must appear on element 'resource'.
[ivy:retrieve] 
[ivy:retrieve] /home/mark/.ivy2/packager/build/org.jsoup/jsoup/1.6.1/build.xml:23: /home/mark/.ivy2/packager/build/org.jsoup/jsoup/1.6.1/packager.xml is not a valid XML document.

При устранении неполадок распознавателя пакетов я бы предложил установить атрибут preserveBuildDirectories в значение "true", что позволит вам увидеть сгенерированные промежуточные файлы.Там очень умные вещи ...

Пересмотренный файл упаковщика

Это не единственная проблема.Я наконец заставил упаковщик работать следующим образом:

<packager-module version="1.0">
    <property name="name" value="${ivy.packager.module}"/>
    <property name="version" value="${ivy.packager.revision}"/>
    <property name="packagename" value="${name}-${version}"/>

    <resource dest="archive" url="http://jsoup.org/packages/jsoup-1.6.1.jar" sha1="b65281e9d00f255cdfab9e1880f7fc7a1fb1bffb"/>

    <build>
        <jar basedir="archive" destfile="artifacts/jars/${name}.jar"/>
    </build>
</packager-module>

Упаковщик действительно предназначен для распаковки архивов tar или zip, содержащих jar-файлы.Вот почему мне пришлось перепаковать файл jar, загруженный распознавателем упаковщика, в приведенном выше примере.

Наблюдение

Вы знаете, что вам вообще не нужен преобразователь упаковщика? jsoup доступен в Maven Central ?Я обращаю на это внимание, потому что у вас уже есть ibilio resolver , настроенный в вашем файле настроек ivy .....

Если вы действительно хотите jsoup с домашней страницы проекта, я бы предложил использовать более простой распознаватель URL

0 голосов
/ 04 октября 2011

Похоже, ваш packager.xml файл содержит искаженный XML - он не имеет ничего общего с Ivy или JSoup, проблема в формате самого файла.

Фрагмент packager.xml, который вы разместили, выглядит хорошо, но я предполагаю, что это не все содержимое файла. Вы можете опубликовать здесь весь файл.

Вы можете использовать редактор с поддержкой XML, чтобы понять, в чем проблема - например, IDE (например, Eclipse) или автономный редактор XML.

В качестве альтернативы вы можете найти поврежденный раздел методом проб и ошибок: удалите небольшие части файла, пока ошибка не исчезнет, ​​и вы не найдете строку, вызывающую ошибки.

...