gpt4 book ai didi

java - 使用 Ant 从同一代码库构建 Swing 和 Android 应用程序

转载 作者:行者123 更新时间:2023-11-30 04:00:10 24 4
gpt4 key购买 nike

基于 my previous question on programmers.SE 的建议,我将当前项目拆分为三个子目录(swing、common 和 android),并在每个子目录中创建了单独的 Ant 脚本。现在,我可以轻松地在 swing 和 common 中创建 NetBeans 项目,并且能够设置适当的依赖项来编译 Swing 应用程序。然后,当我开始使用“公共(public)”项目中的类时,我意识到我需要为 Android 构建过程准备另一个 Ant 脚本。

现在我有四个 Ant 脚本用于构建项目的不同部分,以及每个项目的单独 src、test 和其他支持目录。我遇到的第一个问题是 NetBeans 和我的“android”项目的 ant 脚本都想在我的“公共(public)”项目中使用“build.xml”来执行各种构建任务,其中一些任务有名称冲突。我决定将所有这些项目合并到一个目录中,其中包含 src、test 等子目录。源代码已经组织到每个项目的单独包中,我认为这会使其更简单,因为我可以拥有一个 Ant 构建脚本,其中包含用于 Swing 和 Android 构建的单独目标。

现在我遇到的问题是,当我尝试构建“android”项目时,它也想构建所有的 Swing 类。这带来了很多编译器错误。我什至修改了 <javac>试图排除 bbct.swing 的任务来自编译的包层次结构:

        <javac encoding="${java.encoding}"
source="${java.source}" target="${java.target}"
debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="project.target.class.path"
verbose="${verbose}"
classpathref="project.javac.classpath"
fork="${need.javac.fork}"
excludes="${source.dir}/bbct/swing/**"> <------- here
<src path="${source.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<compilerarg line="${java.compilerargs}" />
</javac>

尽管如此,Ant 仍然坚持编译我使用 Swing 的类。

所以我有两个问题:

  1. 组织此项目的最佳方式是什么?您会推荐我尝试过的两种方法中的一种还是完全不同的方法?

  2. 如果我坚持使用我最近的解决方案,我该如何制作 javac忽略我项目中基于 Swing 的源文件?

最佳答案

How to exclude a source package using javac in Ant? 之间和 How can I exclude sources in a javac task in ant? ,我找到了一个使用 <exclude> 的解决方案元素,而不是 excludes属性。这是相关的<javac>任务:

        <javac encoding="${java.encoding}"
source="${java.source}" target="${java.target}"
debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="project.target.class.path"
verbose="${verbose}"
classpathref="project.javac.classpath"
fork="${need.javac.fork}">
<src path="${source.absolute.dir}" />
<exclude name="bbct/swing/**" />
<src path="${gen.absolute.dir}" />
<compilerarg line="${java.compilerargs}" />
</javac>

附录:

我怀疑这个解决方案的核心在于使用相对于 source 的路径属性或 <src>元素。这意味着 excludes元素应该使用相对路径也能正常工作。不过,我还没有对此进行测试。

关于java - 使用 Ant 从同一代码库构建 Swing 和 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12632169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com