Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse自定义程序构建链--添加源文件_Java_Android_Eclipse_Build Process - Fatal编程技术网

Java Eclipse自定义程序构建链--添加源文件

Java Eclipse自定义程序构建链--添加源文件,java,android,eclipse,build-process,Java,Android,Eclipse,Build Process,我正在用Java为Android开发一个相当大的软件(使用Eclipse和ADT) 为了支持我的开发,我制作了一个自己的命令行工具,可以执行以下操作: 加载和处理某些Java文件(来自我开发的软件项目) 将newJava文件输出到特定文件夹(因此输入文件也会保留)到我的项目中 命令行工具所做的并不相关,它的输出仅仅是标准Java代码(即,它是一个代码生成器) 我希望在构建过程中自动调用此命令行工具。换句话说,我希望当我完成手动编码并开始构建过程时(例如,通过单击“运行…”),会发生以下情况: 命

我正在用Java为Android开发一个相当大的软件(使用Eclipse和ADT)

为了支持我的开发,我制作了一个自己的命令行工具,可以执行以下操作:

  • 加载和处理某些Java文件(来自我开发的软件项目)
  • newJava文件输出到特定文件夹(因此输入文件也会保留)到我的项目中
  • 命令行工具所做的并不相关,它的输出仅仅是标准Java代码(即,它是一个代码生成器)

    我希望在构建过程中自动调用此命令行工具。换句话说,我希望当我完成手动编码并开始构建过程时(例如,通过单击“运行…”),会发生以下情况:

  • 命令行工具正在运行
  • 由命令行工具生成的文件也包含在构建中(即,它们的编译方式与在Eclipse项目中手动添加和编码的方式完全相同)
  • 我非常确定我必须将此程序作为“程序”通过添加到项目的生成器列表中(请参见随附的屏幕截图)。我的问题是:

  • 放在什么位置?应该是第一个吗
  • 为了满足上述要求,我还需要做什么我担心如果命令行工具只是将.java文件写入文件夹,Eclipse将看不到新生成的文件(因为它们没有添加到其项目文件中)

  • 您所处的轨道是正确的,在以下条件下,它可以正常工作:

    • 构建器必须位于顶部,以便在Java构建器运行之前修改源文件
    • 必须将Java文件生成到项目的一个现有“src”路径中。Java文件未在项目中注册,因此如果您将某些内容放入项目的源文件夹中,它将被编译。像xtext和xtend这样的Eclipse工具的工作方式是相同的
    • 必须激活生成器的刷新选项。否则,工作区将不知道您创建了文件(因为您的程序使用java.io.File操作,从而绕过工作区API获取资源)

    您走的是正确的道路,在以下条件下,它可以正常工作:

    • 构建器必须位于顶部,以便在Java构建器运行之前修改源文件
    • 必须将Java文件生成到项目的一个现有“src”路径中。Java文件未在项目中注册,因此如果您将某些内容放入项目的源文件夹中,它将被编译。像xtext和xtend这样的Eclipse工具的工作方式是相同的
    • 必须激活生成器的刷新选项。否则,工作区将不知道您创建了文件(因为您的程序使用java.io.File操作,从而绕过工作区API获取资源)

    非常感谢您提供完整且非常有用的信息。控制台程序是否有办法影响整个构建过程的成功?我的意思是,有没有一种方法会导致构建失败(例如,如果我的代码生成器遇到错误),或者它是完全解耦的呢?Eclipse构建器没有整体失败/成功这样的事情。每个构建器只会对资源更改做出反应,并尝试对其进行处理,而不依赖于任何其他构建器。然而,您可以很容易地生成一些导致编译错误的Java代码(例如,将错误消息逐字打印到生成的Java文件中),或者根本无法生成代码(如果“正常”代码取决于您的代码,编译也会失败)。非常感谢您提供的完整且非常有用的信息。控制台程序是否有办法影响整个构建过程的成功?我的意思是,有没有一种方法会导致构建失败(例如,如果我的代码生成器遇到错误),或者它是完全解耦的呢?Eclipse构建器没有整体失败/成功这样的事情。每个构建器只会对资源更改做出反应,并尝试对其进行处理,而不依赖于任何其他构建器。然而,您可以很容易地生成一些导致编译错误的Java代码(例如,将错误消息逐字打印到生成的Java文件中),或者根本不生成代码(如果“正常”代码取决于您的代码,编译也会失败)。