0

我有一个库项目,作为许多其他项目的后端。它进行网络连接和解析等。然后我还有其他基于此的前端项目。对于开发和服务器环境,我编写了一个 ANT 构建脚本,它根据构建类型替换代码中的某些值。所以我有两个目标buildDevbuildProd.

有没有办法让我在构建依赖项(非库项目)时正确设置值。例如,如果我ant debug在项目上使用它构建后端,ant buildDev如果我ant release使用ant buildProd.

我很确定这是不可能的,那么有什么替代方案。

出于好奇,自定义构建只是替换了一个具有静态变量的文件,这些静态变量根据构建的类型分配了不同的值。没什么太复杂的。

4

2 回答 2

1

在 ant 中,有多种不同的任务可用于编辑文件中的属性。

我确定您知道属性文件,因此如果您使用此处的文档:

http://ant.apache.org/manual/index.html

它可能对你有帮助。

如果您在 ant 样式的属性文件中设置变量,那么对于某些构建,您可以为单独的构建提供单独的文件,然后正确设置变量。

如果您正在谈论在源中设置变量,请尝试复制任务:

http://ant.apache.org/manual/index.html

复制任务上的过滤器链将允许您从文件中替换某些代码行。因此,如果您有一个名为 server_ip 或类似名称的变量,您可以使用过滤器链来更改该值并将该源文件重新复制回您的树中。

我希望这回答了你的问题。如果不是,请温柔一点。我在回答问题方面有点新手,我对 Android 帖子有点厌烦了哈哈。

于 2013-01-01T09:05:14.947 回答
0

我找到了解决方案。默认的 Android Antbuild.xml在调用时将发布名称传递给子库项目脚本。以下行和后面的代码详细说明了它。

<!-- figure out which target must be used to build the library projects.
If emma is enabled, then use 'instrument' otherwise, use 'debug' -->
<condition property="project.libraries.target" value="instrument" else="${build.target}">
    <istrue value="${build.is.instrumented}" />
</condition>

那么这只是在所有相互依赖的项目中具有相同目标的问题。

于 2013-01-01T09:10:48.683 回答