Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 设置蚂蚁/常春藤_Ant_Ivy - Fatal编程技术网

Ant 设置蚂蚁/常春藤

Ant 设置蚂蚁/常春藤,ant,ivy,Ant,Ivy,所以,假设我已经安装了一个SVN,并在本地安装了ANT/Ivy 我想让ivy配置的“共享”部分指向服务器上的某种共享。我需要如何设置这个 我知道我必须翻开常春藤罐子,取出ivysettings文件并修改共享存储库 因此,假设我的intranet上有一台服务器,位于MyServer.intranet.net,我的团队文件夹位于/path/to/NetAdmin下(因此完整路径为MyServer.intranet.net/path/to/NetAdmin),我如何将其设置为共享库的团队存储库?我会指

所以,假设我已经安装了一个SVN,并在本地安装了ANT/Ivy

我想让ivy配置的“共享”部分指向服务器上的某种共享。我需要如何设置这个

我知道我必须翻开常春藤罐子,取出ivysettings文件并修改共享存储库

因此,假设我的intranet上有一台服务器,位于MyServer.intranet.net,我的团队文件夹位于/path/to/NetAdmin下(因此完整路径为MyServer.intranet.net/path/to/NetAdmin),我如何将其设置为共享库的团队存储库?我会指定它吗?当我打包项目时,它会在那里写入依赖项吗


谢谢

你不需要换常春藤罐子。只需在ivysettings文件中创建一个文件系统解析器并发布到该文件系统。下面是一个例子:

你会发现ivy非常灵活,几乎可以支持任何托管文件的机制

个人而言,我会考虑安装一个Maven知识库管理器,或者使用它来托管您的构建依赖关系和构建输出。从长远来看,这要容易得多,尤其是在进行Java开发时。

以下是我所做的:

  • 我创建了一个名为
    ivy.dir
    的Subversion项目
  • 在这个
    ivy.dir
    项目中,我有最新的ivy.jar
  • ivy.dir
    中,我为我们的环境设置了
    ivysettings.xml
    。例如,我们使用本地artifactorymaven存储库来存储我们自己的jar。
    ivy.dir
    项目中的
    ivysettings.xml
    指出了这一点
  • 我创建了一个名为
    ivy.tasks.xml
    的文件。这是一个Ant构建文件
ivy.tasks.xml
如下所示:

<project name="Ivy.Tasks"
    xmlns:ivy="http://ant.apache.org/ivy"
    xmlns:jacoco="antlib:org.jacoco.ant">

    <property environment="env"/>

    <!-- Add Ivy Tasks -->
    <taskdef uri="http://ant.apache.org/ivy"
        resource="org/apache/ivy/ant/antlib.xml">
        <classpath>
            <fileset dir="${ivy.dir}">
                <include name="ivy*.jar"/>
            </fileset>
        </classpath>
    </taskdef>
    <ivy:settings file="${ivy.dir}/ivysettings.xml"/>
</project>
<ivysettings>

    <!-- I'll explain this part below -->
    <property name="env.EXECUTOR_NUMBER" value="0" override="false"/>
    <caches
        defaultCacheDir="${ivy.default.ivy.user.dir}/cache-${env.EXECUTOR_NUMBER}"
        resolutionCacheDir="${ivy.dir}/../target/ivy.cache"/>

    <!-- Just the standard stuff you find in the `ivysettings.xml in the ivy.jar -->
    <settings defaultResolver="default"/>
    <include file="${ivy.dir}/ivysettings-public.xml"/> <!-- This one is different -->
    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>
<project name="post-a-matic" default="package" basedir="."
    xmlns:ivy="http://ant.apache.org/ivy">

    <property name="ivy.dir" value="${basedir}/ivy.dir"/>
    <import file="${ivy.dir}/ivy.tasks.xml"/>

    <!-- A whole bundle of properties are set -->

    <target name="clean">
        <delete dir="${target.dir}"/>
        <ivy:cleancache/>   <!-- Look: They have access to Ivy! -->
    </target>

    <target name="-resolve">
        <ivy:resolve/>
    </target>

    <target name="compile"
        depends="-resolve">

       <ivy:cachpath 
           pathid="main.classpath" 
           conf="compile,provided"/>

       <!-- Boy that's easy! -->

       <javac srcdir="${main.srcdir}"
           destdir="${main.destdir}"
           classpathref="main.classpath"/>
   </target>

   <!-- On and on -->
最大的变化是
ivysetting public.xml
文件:

<ivysettings>
    <resolvers>
        <ibiblio name="public"
            m2compatible="true"
            checkmodified="true"
            root="http://repos.vegicorp.com/artifactory/libs-release" />
    </resolvers>
</ivysettings>
这解决了很多问题:

  • 您可以更新
    ivy.settings
    ,每个人都将拥有更新的设置。这对我们来说非常重要,因为我们使用Jenkins,我希望Jenkins清理每个构建上的常春藤缓存。哎呀!这将清除同时执行的构建上的常春藤缓存!我通过更改
    ivysettings.xml
    文件来为每个Jenkins构建执行器定义不同的Ivy缓存,从而解决了这个问题。在Jenkins服务器上,您有一个名为
    $HOME/.ivy2/cache-0
    $HOME/.ivy2/cache-1
    的常春藤缓存。每个执行者都可以删除自己的常春藤缓存,而不会影响其他执行者。同时,用户将只拥有
    $HOME/.ivy2/cache-0
  • 当一个新罐子出来时,你也可以更新常春藤。你更新了你的常春藤jar文件,每个人都会得到这个文件
  • 最大的一点当然是,Ivy会在项目签出时自行安装
  • 和额外的特别奖励:您可以使用
    ivy.dir
    ivy.tasks.xml
    文件安装其他任务。例如,我们的每个项目都必须通过CPD(PMD项目的一部分)运行,并使用.For测试覆盖率
这些项目中的每一个都包含一个jar文件和一个将任务定义拉入Ant的
。还有,您如何使用这些任务呢?它们没有在标准Ant模型中定义。开发人员不知道如何使用它们

我已经将这些JAR添加到我的
ivy.dir
项目中,并将所有这些任务定义安装到我的
ivy.tasks.xml
文件中。我还为大多数任务定义了易于使用的
,因此开发人员可以很容易地使用它们。事实上,我甚至为了好玩而包含了旧的Ant Contrib任务


现在,一旦你将
ivy.dir
添加到你的项目中,你就有了所有这些额外的任务,并且你没有任何东西可以安装到你的机器上。

David,你能为我提供一些资源,让我可以镜像这个设置吗?据我所知,我们只是在运行svn,而不是svn:external,我的团队正在寻找我来设置和安装它这听起来像是它处理(并超越)了我们当前的所有问题。谢谢