使用packager解析器用于外部jar

时间:2011-10-04 14:02:48

标签: java ivy jsoup

我一直在尝试通过创建一个packager.xml文件来下载外部jar Jsoup 当我尝试构建文件时,我收到一个错误,上面写着

  

“....... 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 个答案:

答案 0 :(得分:2)

我想我已经复制了这个错误。

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.

packager resolver进行疑难解答时,我建议将 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文件。

观察

你知道你根本不需要打包机解析器吗? jsoup is available from Maven Central?我指出这一点是因为你已经在你的常春藤设置文件中配置了ibilio resolver .....

如果你真的想从它的项目主页获取jsoup,我建议使用更简单的url resolver

答案 1 :(得分:0)

听起来你的packager.xml文件包含格式错误的XML - 它与Ivy或JSoup无关,问题在于文件本身的格式。

你发布的packager.xml片段看起来不错,但我猜它不是整个文件内容。欢迎您在此处发布整个文件。

您可以使用支持XML的编辑器来了解问题所在 - 例如IDE(例如Eclipse)或独立的XML编辑器。

或者,您可以通过反复试验找到违规部分:删除文件的一小部分,直到错误消失并找到有问题的行。