gpt4 book ai didi

ant - 使用 Ivy 解决 XSD

转载 作者:行者123 更新时间:2023-12-01 16:22:48 25 4
gpt4 key购买 nike

请原谅重复的帖子,但我很想知道这个问题的答案。

我想要一些关于我正在采取的方法的建议。我正在使用 Ivy 进行依赖管理,并且能够毫无问题地下载和使用我所有的 jar 文件。我还想运行 <schemavalidate> Ant 中的任务,并希望使用 Ivy 按指定下载 xsd 和 dtd,从而消除了在初始下载后对网络连接的需要,并减少了我的构建时间。我想我有解决方案但想运行它通过一些额外的眼睛进行健全性检查和可能的改进建议。以下是我的构建脚本的相关部分。第一次检索调用使用我的默认 ivysettings.xml,第二次调用使用特定于检索 xsd 和 dtd 的设置文件。如有任何反馈,我们将不胜感激。

build.xml:

<project etc>
...

<target name="resolve" description="Retrieve dependencies with ivy">
<ivy:retrieve refresh="true"
sync="true"
conf="compile,war,runtime,test,findbugs"
pattern="${ivy.lib.dir}/[conf]/[artifact]-[revision].[ext]"/>
<ivy:settings id="xsd.settings"
file="${search.server.home}/ivysettings-xsd.xml"/>
<ivy:retrieve settingsref="xsd.settings"
refresh="false"
sync="false"
conf="xmlentities"
pattern="${ivy.lib.dir}/[conf]/[artifact].[ext]"/>
</target>
...
</project>

Ivy .xml:

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<dependencies>
<!-- Jar files defined here but removed for brevity -->
...
<dependency org="beans" name="spring-beans" rev="3.0" conf="xmlentities->default">
<artifact name="spring-beans" type="xsd"/>
</dependency>
<dependency org="context" name="spring-context" rev="3.0" conf="xmlentities->default">
<artifact name="spring-context" type="xsd"/>
</dependency>
<dependency org="mvc" name="spring-mvc" rev="3.0" conf="xmlentities->default">
<artifact name="spring-mvc" type="xsd"/>
</dependency>
<dependency org="tool" name="spring-tool" rev="3.0" conf="xmlentities->default">
<artifact name="spring-tool" type="xsd"/>
</dependency>
<dependency org="util" name="spring-util" rev="3.0" conf="xmlentities->default">
<artifact name="spring-util" type="xsd"/>
</dependency>
<dependency org="javaee" name="javaee" rev="5" conf="xmlentities->default">
<artifact name="javaee_5" type="xsd"/>
<artifact name="web-app_2_5" type="xsd"/>
<artifact name="javaee_web_services_client_1_2" type="xsd"/>
<artifact name="jsp_2_1" type="xsd"/>
</dependency>
<dependency org="xmlschema" name="xmlschema" rev="2001" conf="xmlentities->default">
<artifact name="XMLSchema" type="xsd"/>
<artifact name="xml" type="xsd"/>
</dependency>
</dependencies>
</ivy-module>

ivysettings-xsd.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
<settings defaultResolver="namespaces"/>
<resolvers>
<chain name="namespaces" returnFirst="true">
<url name="w3-org-ns" checksums="">
<artifact pattern="http://www.w3.org/2001/[artifact].[ext]"/>
</url>
<url name="javaee-ns" checksums="">
<artifact pattern="http://java.sun.com/xml/ns/javaee/[artifact].[ext]"/>
</url>
<url name="spring-ns" checksums="">
<artifact pattern="http://www.springframework.org/schema/[organisation]/[artifact].[ext]"/>
</url>
</chain>
</resolvers>
</ivysettings>

最佳答案

有趣的问题。缓存架构文件可以实现离线验证。

正如 Tom 所说,我认为只需要一次检索。 (我的示例同时获取 jar 和模式文件)

<ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[revision].[ext]"/>

我已经对 ivy 和设置文件进行了一些更改。

Ivy .xml

我用过 ivy extra attributes协助生成 Spring Schema URL:

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="com.myspotontheweb.demo" module="spring"/>

<configurations defaultconfmapping="compile->default">
<conf name="compile" description="Compile dependencies"/>
<conf name="schemas" description="XML schema files"/>
</configurations>

<dependencies>
<!-- Compile depedencies -->
<dependency org="org.springframework" name="spring-core" rev="3.0.6.RELEASE"/>

<!-- Schema dependencies -->
<dependency org="org.springframework" name="schemas" rev="3.0" conf="schemas->default">
<artifact name="spring-beans" e:framework="beans" type="xsd"/>
<artifact name="spring-context" e:framework="context" type="xsd"/>
<artifact name="spring-mvc" e:framework="mvc" type="xsd"/>
<artifact name="spring-tool" e:framework="tool" type="xsd"/>
<artifact name="spring-util" e:framework="util" type="xsd"/>
</dependency>

<dependency org="com.sun.java" name="schemas" rev="5" conf="schemas->default">
<artifact name="javaee_5" type="xsd"/>
<artifact name="web-app_2_5" type="xsd"/>
<artifact name="javaee_web_services_client_1_2" type="xsd"/>
<artifact name="jsp_2_1" type="xsd"/>
</dependency>

<dependency org="org.w3" name="schemas" rev="2001" conf="schemas->default">
<artifact name="XMLSchema" type="xsd"/>
<artifact name="xml" type="xsd"/>
</dependency>
</dependencies>
</ivy-module>

Ivy 设置.xml

将 ivy 配置为默认使用 Maven 存储库。使用modules将特殊模式模块路由到您的 URL 解析器的声明。

<ivysettings>
<settings defaultResolver="maven-repos"/>
<resolvers>
<chain name="maven-repos">
<ibiblio name="central" m2compatible="true"/>
..
Other Maven repositories go here
..
</chain>
<url name="spring-schemas">
<artifact pattern="http://www.springframework.org/schema/[framework]/[artifact].[ext]"/>
</url>
<url name="javaee-schemas">
<artifact pattern="http://java.sun.com/xml/ns/javaee/[artifact].[ext]"/>
</url>
<url name="w3-schemas">
<artifact pattern="http://www.w3.org/2001/[artifact].[ext]"/>
</url>
</resolvers>
<modules>
<module organisation="org.springframework" name="schemas" resolver="spring-schemas"/>
<module organisation="com.sun.java" name="schemas" resolver="javaee-schemas"/>
<module organisation="org.w3" name="schemas" resolver="w3-schemas"/>
</modules>
</ivysettings>

关于ant - 使用 Ivy 解决 XSD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132185/

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