我正在将Apache Ivy与Eclipse(IvyDE)一起使用,并试图解决以下问题。我有两个项目,Ivy家长和IvyChild,其中孩子依赖于父级。我为Eclipse Ivy Classpath容器选择了“解决工作区中的依赖关系”的选项。
Eclipse autobuilder工作得很好——我下载并包含了我所有的Ivy依赖项。我打开了父项目和子项目,可以对父项目进行实时编辑,并查看子项目中的编译更改。
问题是当我试图使用Ant将子项目构建到jar中时。我的问题是,如何在显式Ant构建期间利用工作区解析器?
我已经研究了常春藤文件系统解析器,但我试图避免的是,在Ant构建子项目之前,必须显式地重建父项目。
我得到的错误如下:
[ivy:retrieve] :: problems summary ::
[ivy:retrieve] :::: WARNINGS
[ivy:retrieve] module not found: org.example#ParentModule;latest.integration
[ivy:retrieve] ==== local: tried
[ivy:retrieve] ...
[ivy:retrieve] ==== shared: tried
[ivy:retrieve] ...
[ivy:retrieve] ==== public: tried
[ivy:retrieve] ...
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: UNRESOLVED DEPENDENCIES ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: org.example#ParentModule;latest.integration: not found
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
BUILD FAILED
C:\Users\user\workspace\IvyExampleChild\build.xml:15: impossible to resolve dependencies:
resolve failed - see output for details
这是家长项目常春藤。xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="org.example" module="ParentModule" status="integration" />
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.6"/>
</dependencies>
</ivy-module>
这是常春藤儿童项目。xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="org.example" module="ChildModule" status="integration" />
<dependencies>
<dependency org="org.example" name="ParentModule" rev="latest.integration"/>
</dependencies>
</ivy-module>
这是儿童版。xml:
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="ChildModule" default="release">
<property name="build.dir" value="build" />
<property name="build.dir.classes" value="${build.dir}/classes" />
<property name="src.dir" value="src" />
<property name="output.jar" value="${build.dir}/${ant.project.name}.jar" />
<target name="clean">
<delete includeemptydirs="true" quiet="true">
<filehtml" target="_blank">set dir="${build.dir}" />
</delete>
</target>
<target name="apache-ivy" depends="clean">
<ivy:retrieve />
<ivy:cachepath pathid="ivy.build.path" conf="default" />
</target>
<target name="release" depends="apache-ivy">
<echo message="compiling ${src.dir}..." />
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir.classes}" />
<javac srcdir="${src.dir}" destdir="${build.dir.classes}" classpathref="ivy.build.path"/>
<jar destfile="${output.jar}" basedir="${build.dir}"/>
</target>
</project>
这是一个解析程序和发布问题。ParentModule的构建需要将其jar“发布”到特定目录。然后,您的子模块构建应该使用能够找到这个特定目录的解析器。
所以例如,ivy_设置可能如下所示:
<ivysettings>
<properties file="./ivysettings.properties"/>
<property name="repository.dir" value="${ivy.build.dir}/repository"/>
<settings defaultResolver="chain"/>
<resolvers>
<chain name="chain">
<filesystem name="internal">
<ivy pattern="${repository.dir}/[module]/ivy.xml" />
<artifact pattern="${repository.dir}/[module]/[artifact].[ext]" />
</filesystem>
<ibiblio name="maven2" m2compatible="true"/>
</chain>
</resolvers>
</ivysettings>
你的build.xml文件应该
<ivy:settings file="${ivy.build.dir}/ivysettings.xml" />
这里发生的是我们告诉ivy本地构建jar文件的目录(....../repository)。
因此,您的父版本现在build.xml一个“发布”目标:
<target name="publish" depends="jar, jarSources" description="--> publish this project in the ivy repository">
<delete file="${dist.dir}/lib/ivy.xml"/>
<ivy:publish artifactspattern="${dist.dir}/lib/[artifact](-[classifier]).[ext]"
resolver="internal"
status="integration"
overwrite="true"/>
<echo message="project ${ant.project.name} integration published" />
</target>
所以...运行它并确认您的父母odule.jar文件显示在您的存储库目录中。
一旦到了那里,您的子模块应该能够“解析”父模块jar文件。
我想下载使用ivy的工件:解决,但使用使用[conf]属性的模式。所以我在IvyS中定义了以下内容ettings.xml 注意这个模式 现在可以很好地解决依赖关系,但只为配置创建了一个文件夹:默认。没有为ConfGroup1创建文件夹 另外,我知道这可以通过使用ivy:retrieve实现,但我不想使用它,因为它将涉及将工件从ivy缓存复制到ivy:resolve之后的另一个地方,我有价值数十亿字
我在Mac 10.7.5上使用Ant 1.9,我刚刚安装了Ivy。我在下载依赖项时遇到了问题。我有这个build.xml文件和我的Ivy解析目标。 那么我有这棵常春藤。xml文件与我的构建版本处于同一级别。xml文件: 但是当我运行我的蚂蚁目标时,一切都悬而未决 为了解决依赖关系并启动我的目标,我还缺少什么?
我有安装了M2E的eclipse oxygen。我通常通过右键单击->Spring Tools->update Maven dependencies来更新我的依赖项。默认情况下,这将使用,这是我不想要的。 注意:我的项目不是eclipse中的maven项目
问题内容: 首先,我要说我是Ant的新手。就像之前一样,我只是在两天前才开始学习它以完成此任务。 我想要做的是创建一个“ master”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如: 现在,我拥有用于A,B和C的所有单独版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“ ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们
为什么Eclipse在构建一个Android项目时,会陷入构建工作区的无限循环...和(重新)构建工作区...和(重新)构建工作区... 这是已知的虫子吗? 走出这个循环的正确方法是什么? 备注: 如果取消选中,它会生成良好的版本,甚至导出一个完美运行的签名发行版APK。 此问题仅在我升级到最新的SDK r19后才开始。在此之前(SDK r11),我从未遇到过此问题。 错误160868正好描述了这
首先,很抱歉我不得不用伪代码来展示这个问题,因为原始库代码是封闭源代码,整个构建过程稍微复杂一点。 问题如下: 我们有一个项目a,它使用了一个内部库B。这个库使用了几个opensource库,我们现在称之为C和D。 出于调试的目的,我希望创建项目a的一个分级复合构建,其中包括使用的库B。 项目A:安置。梯度 项目A在其构建中包括库B。Gradle: 库B有C和D作为依赖项。D有自己的存储库,C在M