Ant 设置蚂蚁/常春藤
所以,假设我已经安装了一个SVN,并在本地安装了ANT/Ivy 我想让ivy配置的“共享”部分指向服务器上的某种共享。我需要如何设置这个 我知道我必须翻开常春藤罐子,取出ivysettings文件并修改共享存储库 因此,假设我的intranet上有一台服务器,位于MyServer.intranet.net,我的团队文件夹位于/path/to/NetAdmin下(因此完整路径为MyServer.intranet.net/path/to/NetAdmin),我如何将其设置为共享库的团队存储库?我会指定它吗?当我打包项目时,它会在那里写入依赖项吗Ant 设置蚂蚁/常春藤,ant,ivy,Ant,Ivy,所以,假设我已经安装了一个SVN,并在本地安装了ANT/Ivy 我想让ivy配置的“共享”部分指向服务器上的某种共享。我需要如何设置这个 我知道我必须翻开常春藤罐子,取出ivysettings文件并修改共享存储库 因此,假设我的intranet上有一台服务器,位于MyServer.intranet.net,我的团队文件夹位于/path/to/NetAdmin下(因此完整路径为MyServer.intranet.net/path/to/NetAdmin),我如何将其设置为共享库的团队存储库?我会指
谢谢你不需要换常春藤罐子。只需在ivysettings文件中创建一个文件系统解析器并发布到该文件系统。下面是一个例子:
- 我创建了一个名为
的Subversion项目ivy.dir
- 在这个
项目中,我有最新的ivy.jarivy.dir
- 在
中,我为我们的环境设置了ivy.dir
。例如,我们使用本地artifactorymaven存储库来存储我们自己的jar。ivysettings.xml
项目中的ivy.dir
指出了这一点ivysettings.xml
- 我创建了一个名为
的文件。这是一个Ant构建文件李>ivy.tasks.xml
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>
这解决了很多问题:
- 您可以更新
,每个人都将拥有更新的设置。这对我们来说非常重要,因为我们使用Jenkins,我希望Jenkins清理每个构建上的常春藤缓存。哎呀!这将清除同时执行的构建上的常春藤缓存!我通过更改ivy.settings
文件来为每个Jenkins构建执行器定义不同的Ivy缓存,从而解决了这个问题。在Jenkins服务器上,您有一个名为ivysettings.xml
,$HOME/.ivy2/cache-0
的常春藤缓存。每个执行者都可以删除自己的常春藤缓存,而不会影响其他执行者。同时,用户将只拥有$HOME/.ivy2/cache-1
$HOME/.ivy2/cache-0
- 当一个新罐子出来时,你也可以更新常春藤。你更新了你的常春藤jar文件,每个人都会得到这个文件
- 最大的一点当然是,Ivy会在项目签出时自行安装
- 和额外的特别奖励:您可以使用
和ivy.dir
文件安装其他任务。例如,我们的每个项目都必须通过CPD(PMD项目的一部分)运行,并使用.For测试覆盖率ivy.tasks.xml
。还有,您如何使用这些任务呢?它们没有在标准Ant模型中定义。开发人员不知道如何使用它们
我已经将这些JAR添加到我的ivy.dir
项目中,并将所有这些任务定义安装到我的ivy.tasks.xml
文件中。我还为大多数任务定义了易于使用的
,因此开发人员可以很容易地使用它们。事实上,我甚至为了好玩而包含了旧的Ant Contrib任务
现在,一旦你将
ivy.dir
添加到你的项目中,你就有了所有这些额外的任务,并且你没有任何东西可以安装到你的机器上。David,你能为我提供一些资源,让我可以镜像这个设置吗?据我所知,我们只是在运行svn,而不是svn:external,我的团队正在寻找我来设置和安装它这听起来像是它处理(并超越)了我们当前的所有问题。谢谢