解释如何使用文件系统解析器的样本示例 [英] sample example which explain how to use filesystem resolver

查看:46
本文介绍了解释如何使用文件系统解析器的样本示例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以考虑考虑向我解释如何在Ivy中使用文件系统解析器.

Can anyone explain me how to use filesystem resolver in Ivy with sample by considering..

  1. 我有ivy.xml文件,其中定义了所有依赖项,但是我希望文件系统中的jars而不是maven存储库中的jar..?

  1. I have ivy.xml file where i have defined all the dependecies but i want the jars from my filesystem not from maven repository..?

我在哪里放置ivysettings.xml文件.

where do i put ivysettings.xml file.

build.xml应该包含什么才能使用ivysettings.xml,这样我就可以使用文件系统中的jar,而不是maven中的jar..

what build.xml should contain to use ivysettings.xml so that i can use jars from filesystem not from maven..

推荐答案

默认情况下, ivysettings.xml 文件与 ivy.xml 文件位于同一目录中

The ivysettings.xml file is located by default in the same directory as the ivy.xml file.

备用位置可以使用常春藤设置任务

Alternative locations can be specified using the ivy settings task

第三方依赖关系.

$ tree
.
|-- build.xml
|-- ivysettings.xml
|-- ivy.xml
|-- lib
|   |-- junit-4.10.jar
|   |-- slf4j-api-1.6.4.jar
|   `-- slf4j-simple-1.6.4.jar
`-- src
    |-- main
    |   `-- java
    |       `-- org
    |           `-- demo
    |               `-- App.java
    `-- test
        `-- java
            `-- org
                `-- demo
                    `-- AppTest.java

10 directories, 8 files

ivy.xml

这个常春藤文件使用配置来管理3种依赖项:

ivy.xml

This ivy file uses configurations to manages 3 kinds of dependencies:

  1. 编译
  2. 运行时
  3. 测试

这些将对应于ANT构建所使用的类路径.

These will correspond to the classpaths used by the ANT build.

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations defaultconfmapping="compile->default">
        <conf name="compile" description="Required to compile application"/>
        <conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
        <conf name="test"    description="Required for test only" extends="runtime"/>
    </configurations>

    <dependencies>
        <!-- compile dependencies -->
        <dependency org="org.slf4j" name="slf4j-api" rev="1.6.4"/>

        <!-- runtime dependencies -->
        <dependency org="org.slf4j" name="slf4j-simple" rev="1.6.4" conf="runtime->default"/>

        <!-- test dependencies -->
        <dependency org="junit" name="junit" rev="4.10" conf="test->default"/>
    </dependencies>

</ivy-module>

ivysettings.xml

没什么好看的.简单映射到 lib 目录中的jar:

ivysettings.xml

Nothing fancy. Simple mapping to the jars located in the lib directory:

<ivysettings>
    <settings defaultResolver="local"/>
    <resolvers>
        <filesystem name="local">
            <artifact pattern="${ivy.settings.dir}/lib/[artifact]-[revision].[ext]"/>
        </filesystem>
    </resolvers>
</ivysettings>

或者.....我总是将非本地jar的Maven中央存储库包括如下:

Alternatively..... I would always include the Maven central repo for non-local jars as follows:

<ivysettings>
    <settings defaultResolver="central"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
        <filesystem name="local">
            <artifact pattern="${ivy.settings.dir}/lib/[artifact]-[revision].[ext]"/>
        </filesystem>
    </resolvers>
    <modules>
        <module organisation="org.slf4j" resolver="local"/>
        <module organisation="junit" name="junit" resolver="local"/>
    </modules>
</ivysettings>

模块部分指定应在本地检索哪些罐子.

The modules section specifies which jars should be retrieved locally.

最后,使用常春藤管理类路径的构建逻辑.

Finally the build logic that uses ivy to manage the classpaths.

<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">

    <!--
    ================
    Build properties
    ================
    -->
    <property name="src.dir" location="src/main/java"/>
    <property name="test.src.dir" location="src/test/java"/>
    <property name="build.dir" location="build"/>
    <property name="classes.dir" location="${build.dir}/classes"/>
    <property name="test.classes.dir" location="${build.dir}/test-classes"/>
    <property name="ivy.reports.dir"  location="${build.dir}/ivy-reports"/>
    <property name="test.reports.dir"  location="${build.dir}/test-reports"/>

    <!--
    ===========
    Build setup
    ===========
    -->
    <target name="init">
        <ivy:resolve/>

        <ivy:report todir='${ivy.reports.dir}' graph='false' xml='false'/>

        <ivy:cachepath pathid="compile.path" conf="compile"/>
        <ivy:cachepath pathid="runtime.path" conf="runtime"/>
        <ivy:cachepath pathid="test.path"    conf="test"/>

        <mkdir dir="${classes.dir}"/>
        <mkdir dir="${test.classes.dir}"/>
        <mkdir dir="${test.reports.dir}"/>
    </target>

    <!--
    ===============
    Compile targets
    ===============
    -->
    <target name="compile" depends="init">
        <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" debug="true" classpathref="compile.path"/>
    </target>

    <target name="compile-tests" depends="compile">
        <javac srcdir="${test.src.dir}" destdir="${test.classes.dir}" includeantruntime="false" debug="true">
            <classpath>
                <path refid="test.path"/>
                <pathelement path="${classes.dir}"/>
            </classpath>
        </javac>
    </target>

    <!--
    ============
    Test targets
    ============
    -->
    <target name="test" depends="compile-tests">
        <junit printsummary="yes" haltonfailure="yes">
            <classpath>
                <path refid="test.path"/>
                <pathelement path="${classes.dir}"/>
                <pathelement path="${test.classes.dir}"/>
            </classpath>
            <formatter type="xml"/>
            <batchtest fork="yes" todir="${test.reports.dir}">
                <fileset dir="${test.src.dir}">
                    <include name="**/*Test*.java"/>
                    <exclude name="**/AllTests.java"/>
                </fileset>
            </batchtest>
        </junit>
    </target>

    <!--
    =====================
    Build and run targets
    =====================
    -->
    <target name="build" depends="test"/>

    <target name="run" depends="build">
        <java classname="org.demo.App">
            <classpath>
                <path refid="runtime.path"/>
                <pathelement location="${classes.dir}"/>
            </classpath>
        </java>
    </target>

    <!--
    =============
    Clean targets
    =============
    -->
    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="clean-all" depends="clean">
        <ivy:cleancache/>
    </target>

</project>

这篇关于解释如何使用文件系统解析器的样本示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆