Xml 链接Ant构建文件
我有一个客户端和一个服务器,我正在用Ant构建。客户端依赖于先构建的服务器,然后才能构建。除了捆绑在客户机中的服务器ear文件之外,我拥有所有必需的库 我创建了3个ant文件,然后。(单击任意文件名查看它们)文件和包含在中,以便它可以从中运行目标 我遇到的问题是,Xml 链接Ant构建文件,xml,ant,Xml,Ant,我有一个客户端和一个服务器,我正在用Ant构建。客户端依赖于先构建的服务器,然后才能构建。除了捆绑在客户机中的服务器ear文件之外,我拥有所有必需的库 我创建了3个ant文件,然后。(单击任意文件名查看它们)文件和包含在中,以便它可以从中运行目标 我遇到的问题是,basedir变量在构建文件之间变化。因此,如果我从basedir中运行targets,则变量是相对的 如何在Ant脚本中多次更改basedir变量 另外,看看这些构建文件,您是否看到更好的方法来完成我正在尝试的工作?现在我在想,我必须
basedir
变量在构建文件之间变化。因此,如果我从basedir中运行targets,则变量是相对的
如何在Ant脚本中多次更改basedir变量
另外,看看这些构建文件,您是否看到更好的方法来完成我正在尝试的工作?现在我在想,我必须让客户端war和服务器ear位于同一位置,然后才能制作最终的捆绑ear。不过,我的想法可能有缺陷,因为这些脚本似乎不必要地复杂。我注意到ant的一个问题是,我无法让变量按照我想要的方式进行更改 解决方案是让ant从命令行为您想要执行的每个目标运行,这样就不用执行命令行语句,例如
ant target1 target2
或
我不得不从命令行按顺序执行目标调用
anttarget1
ant target2
所以我选择将这些ant调用放在python脚本中,这只会使os.system(“”)代码>调用,其中我的命令行语句将位于引号内。bash也可以这样做
这是ant为每个目标使用适当变量的唯一方法,如果这些变量具有相同的名称,for
任务将为您提供有关如何完成此任务的信息
根据导入的文件解析文件
假设名为import.xml的主生成文件导入文件系统中任意位置的一个生成文件imported.xml,imported.xml从imported.properties读取一组属性:
<!-- importing.xml -->
<project name="importing" basedir="." default="...">
<import file="${path_to_imported}/imported.xml"/>
</project>
<!-- imported.xml -->
<project name="imported" basedir="." default="...">
<property file="imported.properties"/>
</project>
如上所述,${ant.file.imported}
存储构建脚本的路径,该脚本定义了名为imported的项目(简而言之,它存储到imported.xml的路径),并且
获取其目录。此技术还允许将imported.xml用作独立文件(而不必在其他项目中导入)
基本上,您不能在项目标记中真正使用${basedir}
变量,也不能使用basedir=“../../grahamsprrojclient”
属性,但您可以构造它:
<!-- build-client.xml -->
<project name="GPClient" default="dist" >
<dirname property="client.root.dir" file="${ant.file.GPClient}"/>
<property name="real.basedir" value="${client.root.dir}/../GrahamsProjClient"/>
<!-- Then from then on, replace ${basedir} with ${real.basedir} -->
...
</project>
...
您也可以对build-server.xml执行同样的操作,唯一需要注意的是项目名称出现在${ant.file.[project name]}
的文件属性中,因为它破坏了依赖项检查,所以我的常规规则是不使用或不在正常的构建过程中使用。我们让一位开发人员将build.xml分解成七个独立的构建文件,这是由于不断调用,或。(实际上,这些都是Maven存储库管理器,但Ivy与它们配合得非常好。)
然后,需要将ivy.jar
导入到项目中,并获取ivysettings.xml
文件以指向Maven ivy存储库服务器
如果使用Subversion作为版本控制系统,则可以执行以下操作:
- 创建一个包含Ivy.jar的Ivy项目,以及一个为您设置一切的XML文件。我有一个你可以看的。XML文件名为
ivy.tasks.XML
- 然后在项目中,使用
svn:externals
导入此项目李>
- 在
build.xml
中,您需要做两件事:
- 在
实体中添加常春藤名称空间
- 使用
任务导入包含所有设置的常春藤XML文件
优点是,更改您的常春藤项目将自动更改与常春藤交互的所有项目。例如,如果更改常春藤服务器的URL,或者需要重新定义常春藤缓存目录
这样做之后,您只需创建一个定义依赖项的ivy.xml
文件,并使用
和
检索所需的第三方JAR。这将包括客户端需要的服务器jar
<!-- imported.xml -->
<project name="imported" basedir="." default="...">
<dirname property="imported.basedir" file="${ant.file.imported}"/>
<property file="${imported.basedir}/imported.properties"/>
</project>
<!-- build-client.xml -->
<project name="GPClient" default="dist" >
<dirname property="client.root.dir" file="${ant.file.GPClient}"/>
<property name="real.basedir" value="${client.root.dir}/../GrahamsProjClient"/>
<!-- Then from then on, replace ${basedir} with ${real.basedir} -->
...
</project>