gpt4 book ai didi

java - 使用外部 jar 的打包解析器

转载 作者:行者123 更新时间:2023-11-30 04:58:46 28 4
gpt4 key购买 nike

我一直在尝试通过创建 packager.xml 文件来下载外部 jar Jsoup。
当我尝试构建文件时,我收到一个错误,其中显示

".......ivy2\packager\build\org.jsoup\jsoup\1.6.1\packager.xml is not a valid XML document"

以下是我在 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 文档,但错误仍然无法恢复......您能否深入了解此问题。

谢谢

最佳答案

我想我已经重现了该错误。

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>

打包程序实际上是为解开包含 jar 的 tar 或 zip 文件而设计的。这就是为什么我必须重新打包由打包解析器下载的 jar 文件(在上面的示例中)。

观察

您确实知道您根本不需要打包解析器吗? jsoup is available from Maven Central ?我指出这一点是因为您已经有一个 ibilio resolver在你的ivy设置文件中配置......

如果您确实想要从项目主页获取 jsoup,我建议使用更简单的 url resolver

关于java - 使用外部 jar 的打包解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649120/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com