【问题标题】:Automatically Copy Built Files and Libraries with java, eclipse, and ant使用 java、eclipse 和 ant 自动复制构建的文件和库
【发布时间】:2012-05-11 14:04:35
【问题描述】:

我在 windows 7 上使用 java 和 eclipse,我正在尝试构建一个服务器程序,该程序将在我网络上的另一台 (ubuntu) 机器上运行。

如何让 eclipse 将构建的类文件保存到外部位置(我有一个驱动器映射,或者它甚至可以通过 ssh/sftp/whatever)?

我已经在该机器上创建了一个 git 存储库,因此类文件保存在其中,但是我正在使用的外部库(位于构建路径上)没有保存为存储库的一部分。理想情况下,我想让eclipse自动将使用的构建类和库复制到另一个目录中(甚至更理想的是,当我单击“运行”时让它自动运行/终止程序,尽管我怀疑这可能有点过分乐观)。

我认为我认为与 eclipse 一起安装的 ant 可以做到这一点,但我不知道如何做到这一点。

【问题讨论】:

    标签: java eclipse ant build build-automation


    【解决方案1】:

    您提到了 jar 文件,它们实际上是 依赖项。如果您真的不想将这些 jar 文件包含在您的存储库中,您可能想看看 Ivy 之类的依赖管理系统,或者切换到 Maven。

    另外,您始终可以使用 Ant 的构建“脚本”复制依赖项(尽管它们是 XML,而不是真正的“脚本”)。

    如何让 eclipse 将构建的类文件保存到外部位置(我有一个驱动器映射,或者它甚至可以通过 ssh/sftp/whatever)?

    很难想出解决“如何将它们保存到外部位置”的方法。但是,您可以只编写一个目标,使用<scp> 任务(基于ssh)或<ftp> 任务,在运行标准构建后复制文件。

    理想情况下,我希望 eclipse 自动将使用的构建类和库复制到另一个目录中。

    Eclipse 内置了对 Ant 的支持。我不使用 Eclipse,但我使用 Netbeans。在 Netbeans 中,实际上是使用 Netbeans 生成的 Ant 构建文件来构建项目的。而且,您可以自定义构建文件,添加自己的目标,然后,您可以在 IDE 中运行自己的目标。

    例如,您有一个build 目标、一个deploy 目标、一个run 目标。第一个是Eclipse生成的,你不需要关心,后两个是你自己写的。只需编写另一个目标,例如all,然后使用<antcall> 依次运行上面的三个目标。然后在Eclipse中,直接运行alltarget就可以得到Ant处理的所有事情了。

    更理想的是让它在我单击“运行”时自动运行/终止程序,尽管我怀疑这可能有点过于乐观。

    目标机器是一台Linux机器,所以你可以很容易地用apt-get安装SSH服务器。在你的ant构建文件中写两个target,一个是run,一个是kill

    run 目标内,您可以使用<sshexec> 来运行您的应用程序。您唯一需要注意的是在该机器上定义的环境变量可能在 ssh 会话中不可用。但这只是一个配置问题。至少您可以将变量放在 /etc/environment 中,尽管这不是最佳做法。

    kill 目标可能有点复杂。但是,在我看来,如果你可以写一个startup.sh 来启动一个应用程序,你总是可以写一个stop.sh 来关闭它(看看Tomcat 的catalina.sh)。

    另外,kill 目标可以在您的 Eclipse 中调用。

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多